Blogdown 0.2.0 → 0.2.1
raw patch · 5 files changed
+62/−7 lines, 5 files
Files
- Blogdown.cabal +3/−3
- ChangeLog.md +5/−0
- src/Options.hs +31/−0
- src/Parsing/ParseOptions.hs +18/−0
- test/Benchmark.hs +5/−4
Blogdown.cabal view
@@ -1,5 +1,5 @@ name: Blogdown-version: 0.2.0+version: 0.2.1 synopsis: A markdown-like markup language designed for blog posts description: A library and executable that implement a modified, extended version of Markdown designed for writing blog posts. license: AGPL-3@@ -15,8 +15,8 @@ cabal-version: >=1.10 library- exposed-modules: Parsing.Parse, Rendering.Render, Rendering.RenderOptions- other-modules: AST, Parsing.ParseBlock, Parsing.ParseInline, Parsing.Text, Parsing.Utils, Parsing.ParseFootnotes, Parsing.ParseHtml, Parsing.State, Parsing.TextUtils+ exposed-modules: Parsing.Parse, Parsing.ParseOptions, Rendering.Render, Rendering.RenderOptions+ other-modules: AST, Options, Parsing.ParseBlock, Parsing.ParseInline, Parsing.Text, Parsing.Utils, Parsing.ParseFootnotes, Parsing.ParseHtml, Parsing.State, Parsing.TextUtils other-extensions: DeriveGeneric build-depends: base >=4.9 && <4.10, parsec >=3.1 && <3.2, containers >=0.5 && <0.6, MissingH >=1.4 && <1.5, network-uri >=2.6 && <2.7 hs-source-dirs: src, assets
ChangeLog.md view
@@ -1,5 +1,10 @@ # Revision history for Blogdown +### 0.2.1 -- 2017-05-21++* Fix cabal build.+* Fix benchmarks.+ ## 0.2.0 -- 2017-05-21 * Add image support.
+ src/Options.hs view
@@ -0,0 +1,31 @@+module Options where++import Data.Either+import Data.List+import qualified Data.Map.Strict as M+import System.Environment (getArgs)++import Parsing.ParseOptions+import Rendering.RenderOptions++isNotFlag :: String -> Bool+isNotFlag s = not $ isPrefixOf "--" s++splitArgsByFlag :: [String] -> [[String]]+splitArgsByFlag [] = []+splitArgsByFlag (flag : args) = (flag : (takeWhile isNotFlag args)) : (splitArgsByFlag $ dropWhile isNotFlag args)++option :: [String] -> Either (ParseOptions -> ParseOptions) (RenderOptions -> RenderOptions)+option (flag: flagArgs) = if M.member flag parseOptions+ then Left $ (parseOptions M.! flag) flagArgs+ else Right $ (renderOptions M.! flag) flagArgs++options :: [String] -> (ParseOptions, RenderOptions)+options args = (foldl (.) id parseOptionsMods defaultParseOptions,+ foldl (.) id renderOptionsMods defaultRenderOptions)+ where+ eitherMods = map option $ splitArgsByFlag args+ (parseOptionsMods, renderOptionsMods) = partitionEithers eitherMods++getOptions :: IO (ParseOptions, RenderOptions)+getOptions = fmap options getArgs
+ src/Parsing/ParseOptions.hs view
@@ -0,0 +1,18 @@+{-# LANGUAGE DeriveGeneric #-}++module Parsing.ParseOptions where++import qualified Data.Map.Strict as M+import GHC.Generics (Generic)++data ParseOptions = ParseOptions {+ allowUnsafeTags :: Bool+} deriving (Show, Generic)++defaultParseOptions = ParseOptions {+ allowUnsafeTags = False +}++parseOptions :: M.Map String ([String] -> ParseOptions -> ParseOptions)+parseOptions = M.fromList [+ ("--allow-unsafe-tags", \_ -> \p -> p {allowUnsafeTags=True})]
test/Benchmark.hs view
@@ -4,12 +4,13 @@ import Data.Either import Data.String.Utils (replace) -import Parsing.Parse-import Rendering.Render-import Rendering.RenderOptions+import Parsing.Parse (parse)+import Parsing.ParseOptions (defaultParseOptions)+import Rendering.Render (toHtml)+import Rendering.RenderOptions (RenderOptions, defaultRenderOptions, inlineCSS, inlineJS) parseAndRender :: RenderOptions -> String -> String-parseAndRender options = either show (toHtml options) . parse+parseAndRender options = either show (toHtml options) . parse defaultParseOptions main :: IO () main = do