1
0
mirror of https://github.com/avinal/avinal.github.io.git synced 2026-07-03 23:30:09 +05:30

time format improvements and word count

This commit is contained in:
2023-07-18 23:34:46 +05:30
parent 660f227a8f
commit 5ebdf00472
4 changed files with 34 additions and 16 deletions
+2 -2
View File
@@ -109,7 +109,7 @@ view model =
[ Html.a [ href <| "/posts/" ++ first.category ++ "/" ++ first.slug ] [ Html.a [ href <| "/posts/" ++ first.category ++ "/" ++ first.slug ]
[ Html.h3 [ class "text-2xl font-semibold sm:text-4xl group-hover:underline group-focus:underline" ] [ Html.h3 [ class "text-2xl font-semibold sm:text-4xl group-hover:underline group-focus:underline" ]
[ Html.text first.title ] [ Html.text first.title ]
, Html.time [ class "text-gray-400", datetime first.date ] [ Html.text <| UU.getFormattedDate first.date True ] , Html.time [ class "text-gray-400", datetime first.date ] [ Html.text <| UU.getFormattedDate first.date False ]
, Html.p [] [ Html.text <| String.left 200 first.description ] , Html.p [] [ Html.text <| String.left 200 first.description ]
] ]
, Html.a [ href <| "/posts/" ++ first.category, target "_blank" ] [ UU.categoryNtags first.category [] ] , Html.a [ href <| "/posts/" ++ first.category, target "_blank" ] [ UU.categoryNtags first.category [] ]
@@ -128,7 +128,7 @@ view model =
, Html.div [ class "p-6 space-y-2" ] , Html.div [ class "p-6 space-y-2" ]
[ Html.a [ href <| "/posts/" ++ blog.category ++ "/" ++ blog.slug ] [ Html.a [ href <| "/posts/" ++ blog.category ++ "/" ++ blog.slug ]
[ Html.h3 [ class "text-2xl font-semibold group-hover:underline group-focus:underline" ] [ Html.text blog.title ] [ Html.h3 [ class "text-2xl font-semibold group-hover:underline group-focus:underline" ] [ Html.text blog.title ]
, Html.time [ class " text-gray-400", datetime blog.date ] [ Html.text <| UU.getFormattedDate blog.date True ] , Html.time [ class " text-gray-400", datetime blog.date ] [ Html.text <| UU.getFormattedDate blog.date False ]
, Html.p [] [ Html.text <| String.left 200 blog.description ] , Html.p [] [ Html.text <| String.left 200 blog.description ]
] ]
, Html.a [ href <| "/posts/" ++ blog.category, target "_blank" ] [ UU.categoryNtags blog.category [] ] , Html.a [ href <| "/posts/" ++ blog.category, target "_blank" ] [ UU.categoryNtags blog.category [] ]
+27 -10
View File
@@ -1,14 +1,14 @@
module Pages.Posts.Category_.Post_ exposing (Model, Msg, page) module Pages.Posts.Category_.Post_ exposing (Model, Msg, page)
import Components.Footer exposing (avatarAndLinks)
import Effect exposing (Effect) import Effect exposing (Effect)
import Html exposing (Html) import Html exposing (Html)
import Html.Attributes exposing (alt, class, datetime, href, id, src, title) import Html.Attributes exposing (alt, class, datetime, href, src, title)
import Http import Http
import Layouts import Layouts
import Page exposing (Page) import Page exposing (Page)
import Route exposing (Route) import Route exposing (Route)
import Shared import Shared
import String exposing (words)
import Url exposing (Protocol(..)) import Url exposing (Protocol(..))
import Utils.Utils as UU import Utils.Utils as UU
import View exposing (View) import View exposing (View)
@@ -52,6 +52,7 @@ type alias Model =
type alias Blog = type alias Blog =
{ meta : YamlMeta { meta : YamlMeta
, content : String , content : String
, words : Int
} }
@@ -131,15 +132,31 @@ view model =
, alt blog.meta.title , alt blog.meta.title
] ]
[] []
, Html.h1 [ class "absolute top-3/4 left-1/2 -translate-x-1/2 -translate-y-1/2 text-center w-full" ] [ Html.text blog.meta.title ] , Html.h1 [ class "absolute top-3/4 left-1/2 -translate-x-1/2 -translate-y-1/2 text-center w-full" ]
[ Html.text blog.meta.title ]
] ]
, Html.span [ class "text-base font-regular" ] , Html.span [ class "text-base font-light font-sans oldstyle-nums" ]
[ Html.text "By " [ Html.a [ href "/pages/about-me", class "font-bold no-underline hover:text-pink-500" ]
, Html.a [ href "https://avinal.space/pages/about-me", class "font-bold no-underline hover:text-pink-500" ] [ Html.text "Avinal Kumar" ] [ Html.text "Avinal Kumar" ]
, Html.text " on " , Html.text " | "
, Html.time [ datetime blog.meta.date ] [ Html.text <| UU.getFormattedDate blog.meta.date True ] , Html.time [ datetime blog.meta.date ] [ Html.text <| UU.getFormattedDate blog.meta.date False ]
, Html.text <|
" | "
++ String.fromInt blog.words
++ " words | ~"
++ String.fromInt (blog.words // 200)
++ " mins read"
]
, Html.span [ class "text-base font-light float-right" ]
[ Html.a
[ String.dropLeft 8 model.requestUrl
|> String.dropRight 3
|> String.append "https://null.avinal.space"
|> href
, class "hover:text-pink-500"
]
[ Html.abbr [ class "fa-solid fa-terminal no-underline", title "See a basic version of this page." ] [] ]
] ]
, Html.span [ class "text-base font-light float-right" ] [ Html.a [ href "", class "hover:text-pink-500" ] [ Html.abbr [ class "fa-solid fa-link no-underline", title "Share this article" ] [] ] ]
, articleNode blog.content model.fragment blog.meta.title blog.meta.description , articleNode blog.content model.fragment blog.meta.title blog.meta.description
] ]
, UU.categoryNtags blog.meta.category blog.meta.tags , UU.categoryNtags blog.meta.category blog.meta.tags
@@ -204,7 +221,7 @@ splitMetaContent data =
in in
case Yaml.fromString metaDecoder metadata of case Yaml.fromString metaDecoder metadata of
Ok meta -> Ok meta ->
Ok { meta = meta, content = content } Ok { meta = meta, content = content, words = List.length <| words content }
Err err -> Err err ->
Err ("YAML front matter parsing failed: " ++ Yaml.errorToString err) Err ("YAML front matter parsing failed: " ++ Yaml.errorToString err)
+4 -3
View File
@@ -42,7 +42,7 @@ getFormattedDate dateString time =
"Invalid date!!" "Invalid date!!"
else else
"Present" "Today"
dateParser : Parser DateTime dateParser : Parser DateTime
@@ -55,18 +55,19 @@ dateParser =
|. token "-" |. token "-"
|. chompWhile (\c -> c == '0') |. chompWhile (\c -> c == '0')
|= int |= int
|. spaces |. token "T"
|. chompWhile (\c -> c == '0') |. chompWhile (\c -> c == '0')
|= int |= int
|. token ":" |. token ":"
|. chompWhile (\c -> c == '0') |. chompWhile (\c -> c == '0')
|= int |= int
|. chompUntilEndOr "\n"
|. end |. end
categoryNtags : String -> List String -> Html msg categoryNtags : String -> List String -> Html msg
categoryNtags category tags = categoryNtags category tags =
Html.span [ class "flex flex-wrap py-6 space-x-2 border-t border-dashed border-teal-500" ] Html.span [ class "flex flex-wrap py-6 space-x-2" ]
(Html.a [ class "px-3 py-1 m-1 rounded-sm hover:underline bg-pink-400 text-gray-900 font-bold", href <| "/posts/" ++ category, target "_blank" ] (Html.a [ class "px-3 py-1 m-1 rounded-sm hover:underline bg-pink-400 text-gray-900 font-bold", href <| "/posts/" ++ category, target "_blank" ]
[ Html.text category [ Html.text category
] ]
File diff suppressed because one or more lines are too long