packages feed

df1-html 0.1 → 0.1.1

raw patch · 5 files changed

+41/−36 lines, 5 filesnew-uploaderPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -1,3 +1,8 @@+# Version 0.1.1++* Catch-up with `xmlbf`.++ # Version 0.1  * Initial version
df1-html.cabal view
@@ -1,11 +1,12 @@+cabal-version: 2.4 name: df1-html-version: 0.1+version: 0.1.1 author: Melisa Laura Diaz maintainer: renλren.zone copyright: Renzo Carbonara 2020-license: BSD3+license: BSD-3-Clause license-file: LICENSE.txt-extra-source-files: +extra-source-files:   README.md   CHANGELOG.md   theme-solarized-dark.css@@ -14,7 +15,6 @@   theme-solarized-light.png category: Logging build-type: Simple-cabal-version: >=1.18 synopsis: Render and parse df1 logs as HTML description: Render and parse df1 logs as HTML homepage: https://github.com/k0001/di@@ -52,5 +52,5 @@     tasty-hunit,     tasty-quickcheck,     text,-    time,    +    time,     xmlbf
lib/Df1/Html/Parse.hs view
@@ -41,12 +41,12 @@ parseTime :: X.Parser TL.Text parseTime = X.pElement "span" $ do   attrClass "df1-time"-  X.pText+  X.pTextLazy  parseLevel :: X.Parser TL.Text parseLevel = X.pElement "span" $ do   attrClass "df1-level"-  X.pText+  X.pTextLazy  parsePaths :: X.Parser TL.Text parsePaths = X.pElement "span" $ do@@ -56,34 +56,34 @@ parsePush :: X.Parser TL.Text parsePush = X.pElement "span" $ do   attrClass "df1-push"-  t <- X.pText+  t <- X.pTextLazy   s <- parseSeg   pure (t <> s)  parseSeg :: X.Parser TL.Text parseSeg = X.pElement "span" $ do   attrClass "df1-seg"-  X.pText <|> pure ""+  X.pTextLazy <|> pure ""  parseAttr :: X.Parser TL.Text parseAttr = X.pElement "span" $ do   attrClass "df1-attr"   k <- parseKey-  eq <- X.pText+  eq <- X.pTextLazy   v <- parseValue   pure (k <> eq <> v)  parseKey :: X.Parser TL.Text parseKey = X.pElement "span" $ do   attrClass "df1-key"-  X.pText <|> pure ""+  X.pTextLazy <|> pure ""  parseValue :: X.Parser TL.Text parseValue = X.pElement "span" $ do   attrClass "df1-value"-  X.pText <|> pure ""+  X.pTextLazy <|> pure ""  parseMessage :: X.Parser TL.Text parseMessage = X.pElement "span" $ do   attrClass "df1-msg"-  X.pText <|> pure ""+  X.pTextLazy <|> pure ""
lib/Df1/Html/Render.hs view
@@ -25,20 +25,20 @@  -- | Converts 'D.Log' into a list of 'X.Node's from "Xmlbf" to render it as HTML. ----- Example log: +-- Example log: -- @1999-12-20T07:11:39.230553031Z \/foo x=a y=b \/bar \/qux z=c z=d WARNING Something@ ----- The generated HTML matches the following CSS selectors: +-- The generated HTML matches the following CSS selectors: ----- [@.df1-log.df1-debug@]: +-- [@.df1-log.df1-debug@]: ----- [@.df1-log.df1-info@]: +-- [@.df1-log.df1-info@]: ----- [@.df1-log.df1-notice@]: +-- [@.df1-log.df1-notice@]: ----- [@.df1-log.df1-warning@]: +-- [@.df1-log.df1-warning@]: ----- [@.df1-log.df1-error@]: +-- [@.df1-log.df1-error@]: -- -- [@.df1-log.df1-critical@]: --@@ -49,17 +49,17 @@ -- [@.df1-log .df1-time@]: Timestamp - Example: @1999-12-20T07:11:39.230553031Z@ -- -- [@.df1-log .df1-path@]: Full list of 'D.Path's - Example: @\/foo x=a y=b \/bar \/qux z=c z=d@--- +-- -- [@.df1-log .df1-path .df1-push@]: Single 'D.Push' - Examples: @\/foo@, @\/bar@, @\/qux@ -- -- [@.df1-log .df1-path .df1-push .df1-seg@]: Single 'D.Segment' - Example: @foo@--- +-- -- [@.df1-log .df1-path .df1-attr@]: Single 'D.Attr' - Example: @x=a@, @y=b@, @z=c@, @z=d@ -- -- [@.df1-log .df1-path .df1-attr .df1-key@]: Single 'D.Key' - Example: @x@, @y@, @z@, @z@ -- -- [@.df1-log .df1-path .df1-attr .df1-value@]: Single 'D.Value' - Example: @a@, @b@, @c@, @d@--- +-- -- [@.df1-log .df1-level@]: 'D.Level' - Example: @WARNING@ -- -- [@.df1-log .df1-msg@]: 'D.Message' - Example: @Something@@@ -78,10 +78,10 @@       ]  levelClass :: D.Level -> T.Text-levelClass l = "df1-" <> TL.toStrict (TL.toLower (levelToText l))+levelClass l = "df1-" <> T.toLower (levelToText l)  timeHtml :: Time.SystemTime -> [X.Node]-timeHtml t = spanClass "df1-time" (X.text (textLazyFromBuilder (DR.iso8601 t)))+timeHtml t = spanClass "df1-time" (X.textLazy (textLazyFromBuilder (DR.iso8601 t)))  textLazyFromBuilder :: BB.Builder -> TL.Text textLazyFromBuilder b = TL.fromStrict (TE.decodeUtf8 (BL.toStrict (BB.toLazyByteString b)))@@ -89,7 +89,7 @@ levelHtml :: D.Level -> [X.Node] levelHtml l = spanClass "df1-level" (X.text (levelToText l)) -levelToText :: D.Level -> TL.Text+levelToText :: D.Level -> T.Text levelToText l =   case l of     D.Debug -> "DEBUG"@@ -102,7 +102,7 @@     D.Emergency -> "EMERGENCY"  messageHtml :: D.Message -> [X.Node]-messageHtml m = spanClass "df1-msg" (X.text (textLazyFromBuilder (DR.message m)))+messageHtml m = spanClass "df1-msg" (X.textLazy (textLazyFromBuilder (DR.message m)))  pathsHtml :: Seq.Seq D.Path -> [X.Node] pathsHtml ps = spanClass "df1-path" (intercalate (X.text " ") (fmap pathHtml (toList ps)))@@ -113,21 +113,21 @@   D.Attr key val -> spanClass "df1-attr" (keyHtml key <> X.text "=" <> valueHtml val)  segmentHtml :: D.Segment -> [X.Node]-segmentHtml s = spanClass "df1-seg" (X.text (textLazyFromBuilder (DR.segment s)))+segmentHtml s = spanClass "df1-seg" (X.textLazy (textLazyFromBuilder (DR.segment s)))  keyHtml :: D.Key -> [X.Node]-keyHtml k = spanClass "df1-key" (X.text (textLazyFromBuilder (DR.key k)))+keyHtml k = spanClass "df1-key" (X.textLazy (textLazyFromBuilder (DR.key k)))  valueHtml :: D.Value -> [X.Node]-valueHtml v = spanClass "df1-value" (X.text (textLazyFromBuilder (DR.value v)))+valueHtml v = spanClass "df1-value" (X.textLazy (textLazyFromBuilder (DR.value v)))  spanClass :: T.Text -> [X.Node] -> [X.Node] spanClass t = X.element "span" [("class", t)]  -- $themes--- +-- -- If you need to style the rendered HTML, you can use some of the themes shipped with this library.--- +-- -- == [theme-solarized-dark.css](https://raw.githubusercontent.com/k0001/di/master/df1-html/theme-solarized-dark.css) -- -- To use this theme, wrap the @.df1-log@ elements in a @.df1-theme-solarized-dark@ element.
test/Main.hs view
@@ -35,16 +35,16 @@     [ HU.testCase "Given a D.Log, render it as HTML" $ do         expected1 @=? DHR.log log1, -      HU.testCase "Parse that HTML to reobtain the D.Log" $ do -         case X.runParser DHP.log expected1 of +      HU.testCase "Parse that HTML to reobtain the D.Log" $ do+         case X.parse DHP.log expected1 of            Left _ -> fail "Could not parse Log."            Right a -> log1 @=? a,-           +       Tasty.localOption (QC.QuickCheckTests 2000) $       QC.testProperty "Render/Parse roundtrip" $ do         QC.forAllShrink QC.arbitrary QC.shrink $ \log0 -> do          let html = DHR.log log0-         Right log0 === X.runParser DHP.log html +         Right log0 === X.parse DHP.log html     ]