geek 1.0.0.5 → 1.0.0.6
raw patch · 4 files changed
+14/−13 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Web.Geek.Type: type Meta = [(Text, Text)]
+ Web.Geek.Type: type Meta = Map Text Text
Files
- geek.cabal +1/−1
- src/Web/Geek/Post.hs +7/−6
- src/Web/Geek/RSS.hs +5/−5
- src/Web/Geek/Type.hs +1/−1
geek.cabal view
@@ -1,5 +1,5 @@ Name: geek-Version: 1.0.0.5+Version: 1.0.0.6 Build-type: Simple Synopsis: Geek blog engine Description: A dynamic blog engine, customizable with standard web technology, i.e. HTML, CSS and Javascript (JSON)
src/Web/Geek/Post.hs view
@@ -20,10 +20,11 @@ import Web.Geek.Config import Web.Geek.Type import qualified Data.Text as T+import qualified Data.Map as Map post_tags :: Text -> Post -> [Text] post_tags _meta_tag_keyword post = - case post.meta.lookup _meta_tag_keyword of+ case post.meta.Map.lookup _meta_tag_keyword of Nothing -> [] Just s -> s.T.splitOn ",".map T.strip @@ -66,7 +67,7 @@ parse_meta :: Text -> (Meta, Text) parse_meta str = - let no_meta = ([], str)+ let no_meta = (def, str) in case str.T.stripStart.T.splitOn "---\n" of@@ -80,7 +81,7 @@ _ -> Nothing in - let _meta = y.T.lines.reject (T.all isSpace).map parse_line.catMaybes+ let _meta = y.T.lines.reject (T.all isSpace).map parse_line.catMaybes .to_h in (_meta, zs.T.unlines.stripStart) else@@ -106,7 +107,7 @@ spec = do describe "Post" - do it "should parse meta data" - do- parse_meta test_meta === ([("layout", "post"), ("categories", "日常")], "some thing\n\n\n")+ parse_meta test_meta === ([("layout", "post"), ("categories", "日常")].to_h, "some thing\n\n\n") it "should parse title" - do let _path = "blog/posts/2010-10-30-dummy title.md"@@ -122,10 +123,10 @@ -} it "should have tags" - do- let _post = def {meta = [("tags", "haskell, blog")]} :: Post+ let _post = def {meta = [("tags", "haskell, blog")].to_h} :: Post post_tags "tags" _post === ["haskell", "blog"] it "should encode json" - do- let _post = def {meta = [("tags", "haskell, blog")]} :: Post+ let _post = def {meta = [("tags", "haskell, blog")].to_h} :: Post _post.encode.decode === Just _post
src/Web/Geek/RSS.hs view
@@ -101,10 +101,10 @@ let pub_date_format_string = "%a, %d %b %Y %H:%M:%S %z" str - _post.Geek.date.fromMaybe def.formatTime defaultTimeLocale pub_date_format_string - let post_link = site_link + "/" + _post.Geek.link.Geek.unURIEscapedText.T.unpack- element "link" - do- str - post_link- element "guid" ! [attr "isPermaLink" "true"] - do- str - post_link+ let post_link = site_link + "/" + _post.Geek.link.Geek.unURIEscapedText.T.unpack+ element "link" - do+ str - post_link+ element "guid" ! [attr "isPermaLink" "true"] - do+ str - post_link
src/Web/Geek/Type.hs view
@@ -23,7 +23,7 @@ import Data.Aeson.Generic (toJSON) import Data.Text.Encoding (decodeUtf8) -type Meta = [(Text, Text)]+type Meta = Map Text Text newtype HTMLText = HTMLText {unHTMLText :: Text}