html-entities 1.1.4.5 → 1.1.4.6
raw patch · 8 files changed
+81/−117 lines, 8 filesdep ~attoparsecdep ~textsetup-changed
Dependency ranges changed: attoparsec, text
Files
- Setup.hs +0/−2
- html-entities.cabal +29/−44
- library/HTMLEntities/Builder.hs +4/−7
- library/HTMLEntities/Decoder.hs +14/−16
- library/HTMLEntities/NameTable.hs +7/−10
- library/HTMLEntities/Parser.hs +10/−13
- library/HTMLEntities/Prelude.hs +15/−21
- library/HTMLEntities/Text.hs +2/−4
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
html-entities.cabal view
@@ -1,62 +1,47 @@-name:- html-entities-version:- 1.1.4.5-synopsis:- A codec library for HTML-escaped text and HTML-entities+cabal-version: 3.0++name: html-entities+version: 1.1.4.6+synopsis: A codec library for HTML-escaped text and HTML-entities description: This library provides the following APIs for coding and decoding of HTML-escaped text:- .+ * \"attoparsec\" parser- .+ * Text decoder- .+ * Encoding text builder-category:- Parsing, Codecs, HTML-homepage:- https://github.com/nikita-volkov/html-entities-bug-reports:- https://github.com/nikita-volkov/html-entities/issues-author:- Nikita Volkov <nikita.y.volkov@mail.ru>-maintainer:- Nikita Volkov <nikita.y.volkov@mail.ru>-copyright:- (c) 2015, Nikita Volkov-license:- MIT-license-file:- LICENSE-build-type:- Simple-cabal-version:- >=1.24+category: Parsing, Codecs, HTML+homepage: https://github.com/nikita-volkov/html-entities+bug-reports: https://github.com/nikita-volkov/html-entities/issues+author: Nikita Volkov <nikita.y.volkov@mail.ru>+maintainer: Nikita Volkov <nikita.y.volkov@mail.ru>+copyright: (c) 2015, Nikita Volkov+license: MIT+license-file: LICENSE source-repository head- type:- git- location:- git://github.com/nikita-volkov/html-entities.git+ type: git+ location: git://github.com/nikita-volkov/html-entities.git +common language-settings+ default-extensions: BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples+ default-language: Haskell2010+ library- hs-source-dirs:- library+ import: language-settings+ hs-source-dirs: library exposed-modules:- HTMLEntities.Text HTMLEntities.Builder- HTMLEntities.Parser HTMLEntities.Decoder+ HTMLEntities.Parser+ HTMLEntities.Text other-modules: HTMLEntities.NameTable HTMLEntities.Prelude build-depends:- attoparsec >=0.13 && <0.15,+ attoparsec >=0.14 && <0.15, base >=4.11 && <5,- text >=1 && <2,- unordered-containers >=0.2 && <0.3- default-extensions:- Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples- default-language:- Haskell2010+ text >=1 && <3,+ unordered-containers >=0.2 && <0.3,
library/HTMLEntities/Builder.hs view
@@ -1,24 +1,22 @@ module HTMLEntities.Builder (char, text) where -import HTMLEntities.Prelude import qualified Data.Text as Text import qualified Data.Text.Lazy.Builder as Text (Builder) import qualified Data.Text.Lazy.Builder as Text.Builder-+import HTMLEntities.Prelude -- | -- HTML-encodes the given char into a text builder. char :: Char -> Text.Builder char c = fromMaybe (Text.Builder.singleton c) $- lookup c entitiesTable+ lookup c entitiesTable -- | -- HTML-encodes the given text into a text builder.--- +-- -- >>> Data.Text.Lazy.IO.putStrLn $ Data.Text.Lazy.Builder.toLazyText $ text "<a href=\"\">" -- <a href="">--- text :: Text -> Text.Builder text = Text.foldr (\c b -> char c <> b) mempty@@ -26,8 +24,7 @@ {-# NOINLINE entitiesTable #-} entitiesTable :: [(Char, Text.Builder)] entitiesTable =- [- ('<', "<"),+ [ ('<', "<"), ('>', ">"), ('&', "&"), ('"', """),
library/HTMLEntities/Decoder.hs view
@@ -2,47 +2,45 @@ -- Utilities, which execute the parser. module HTMLEntities.Decoder where -import HTMLEntities.Prelude-import qualified Data.Text.Lazy.Builder as TLB import qualified Data.Attoparsec.Text as P+import qualified Data.Text.Lazy.Builder as TLB import qualified HTMLEntities.Parser as P-+import HTMLEntities.Prelude -- | -- A decoder of a single entity.--- +-- -- >>> mapM_ Data.Text.IO.putStrLn $ htmlEntity "©" -- © htmlEntity :: Text -> Either String Text htmlEntity = P.parseOnly $- P.htmlEntity <* P.endOfInput+ P.htmlEntity <* P.endOfInput -- | -- A decoder of a single entity.--- +-- -- >>> mapM_ Data.Text.IO.putStrLn $ htmlEntityBody "#169" -- © htmlEntityBody :: Text -> Either String Text htmlEntityBody = P.parseOnly $- P.htmlEntityBody <* P.endOfInput+ P.htmlEntityBody <* P.endOfInput -- | -- A decoder of a text with entities.--- --- Produces a text builder, +--+-- Produces a text builder, -- which you can then convert into a text or a lazy text,--- using the <http://hackage.haskell.org/package/text "text"> or +-- using the <http://hackage.haskell.org/package/text "text"> or -- <http://hackage.haskell.org/package/conversion-text "conversion-text"> library.--- +-- -- >>> Data.Text.Lazy.IO.putStrLn $ Data.Text.Lazy.Builder.toLazyText $ htmlEncodedText "€5 ¢2" -- €5 ¢2 htmlEncodedText :: Text -> TLB.Builder htmlEncodedText = fmap (either (error "HTMLEntities.Decoder: impossible happened") id) $- P.parseOnly $- fmap fold $- many $- fmap TLB.fromText P.htmlEntity <|> fmap TLB.singleton P.anyChar-+ P.parseOnly $+ fmap fold $+ many $+ fmap TLB.fromText P.htmlEntity <|> fmap TLB.singleton P.anyChar
library/HTMLEntities/NameTable.hs view
@@ -2,24 +2,22 @@ -- A named entities table as per -- <https://html.spec.whatwg.org/multipage/entities.json>. module HTMLEntities.NameTable-(- lookupTextByName,- lookupNameByText,-)+ ( lookupTextByName,+ lookupNameByText,+ ) where -import HTMLEntities.Prelude import qualified Data.HashMap.Strict as HM-+import HTMLEntities.Prelude {-# INLINE lookupTextByName #-} lookupTextByName :: Text -> Maybe Text-lookupTextByName k = +lookupTextByName k = HM.lookup k textByNameTable {-# INLINE lookupNameByText #-} lookupNameByText :: Text -> Maybe Text-lookupNameByText k = +lookupNameByText k = HM.lookup k nameByTextTable {-# NOINLINE textByNameTable #-}@@ -35,8 +33,7 @@ {-# INLINE list #-} list :: [(Text, Text)] list =- [- ("Aacute", "\x00C1"),+ [ ("Aacute", "\x00C1"), ("Aacute", "\x00C1"), ("aacute", "\x00E1"), ("aacute", "\x00E1"),
library/HTMLEntities/Parser.hs view
@@ -2,25 +2,23 @@ -- Attoparsec parsers. module HTMLEntities.Parser where -import HTMLEntities.Prelude import Data.Attoparsec.Text import qualified Data.Text as Text import qualified HTMLEntities.NameTable as NameTable-+import HTMLEntities.Prelude -- | -- A parser of a single entity.--- +-- -- Parses numeric encoding:--- +-- -- >>> mapM_ Data.Text.IO.putStrLn $ Data.Attoparsec.Text.parseOnly htmlEntity "©" -- ©--- +-- -- as well as the named entities:--- +-- -- >>> mapM_ Data.Text.IO.putStrLn $ Data.Attoparsec.Text.parseOnly htmlEntity "©" -- ©--- {-# INLINE htmlEntity #-} htmlEntity :: Parser Text htmlEntity =@@ -28,18 +26,17 @@ -- | -- A parser of the body of a single entity.--- +-- -- Parses numeric encoding:--- +-- -- >>> mapM_ Data.Text.IO.putStrLn $ Data.Attoparsec.Text.parseOnly htmlEntityBody "#169" -- ©--- +-- -- as well as the named entities:--- +-- -- >>> mapM_ Data.Text.IO.putStrLn $ Data.Attoparsec.Text.parseOnly htmlEntityBody "copy" -- ©--- -{-# INLINABLE htmlEntityBody #-}+{-# INLINEABLE htmlEntityBody #-} htmlEntityBody :: Parser Text htmlEntityBody = numeric <|> named
library/HTMLEntities/Prelude.hs view
@@ -1,20 +1,17 @@ module HTMLEntities.Prelude-(- module Exports,-)+ ( module Exports,+ ) where --- base---------------------------import Control.Applicative as Exports hiding (WrappedArrow(..))+import Control.Applicative as Exports hiding (WrappedArrow (..)) import Control.Arrow as Exports hiding (first, second) import Control.Category as Exports import Control.Concurrent as Exports import Control.Exception as Exports-import Control.Monad as Exports hiding (fail, mapM_, sequence_, forM_, msum, mapM, sequence, forM)-import Control.Monad.IO.Class as Exports+import Control.Monad as Exports hiding (fail, forM, forM_, mapM, mapM_, msum, sequence, sequence_) import Control.Monad.Fail as Exports import Control.Monad.Fix as Exports hiding (fix)+import Control.Monad.IO.Class as Exports import Control.Monad.ST as Exports import Data.Bifunctor as Exports import Data.Bits as Exports@@ -30,19 +27,20 @@ import Data.Function as Exports hiding (id, (.)) import Data.Functor as Exports import Data.Functor.Compose as Exports-import Data.Int as Exports import Data.IORef as Exports+import Data.Int as Exports import Data.Ix as Exports-import Data.List as Exports hiding (sortOn, isSubsequenceOf, uncons, concat, foldr, foldl1, maximum, minimum, product, sum, all, and, any, concatMap, elem, foldl, foldr1, notElem, or, find, maximumBy, minimumBy, mapAccumL, mapAccumR, foldl')-import Data.List.NonEmpty as Exports (NonEmpty(..))+import Data.List as Exports hiding (all, and, any, concat, concatMap, elem, find, foldl, foldl', foldl1, foldr, foldr1, isSubsequenceOf, mapAccumL, mapAccumR, maximum, maximumBy, minimum, minimumBy, notElem, or, product, sortOn, sum, uncons)+import Data.List.NonEmpty as Exports (NonEmpty (..)) import Data.Maybe as Exports import Data.Monoid as Exports hiding (Alt, (<>)) import Data.Ord as Exports import Data.Proxy as Exports import Data.Ratio as Exports-import Data.Semigroup as Exports hiding (First(..), Last(..)) import Data.STRef as Exports+import Data.Semigroup as Exports hiding (First (..), Last (..)) import Data.String as Exports+import Data.Text as Exports (Text) import Data.Traversable as Exports import Data.Tuple as Exports import Data.Unique as Exports@@ -54,13 +52,12 @@ import Foreign.Ptr as Exports import Foreign.StablePtr as Exports import Foreign.Storable as Exports-import GHC.Conc as Exports hiding (orElse, withMVar, threadWaitWriteSTM, threadWaitWrite, threadWaitReadSTM, threadWaitRead)-import GHC.Exts as Exports (IsList(..), lazy, inline, sortWith, groupWith)+import GHC.Conc as Exports hiding (orElse, threadWaitRead, threadWaitReadSTM, threadWaitWrite, threadWaitWriteSTM, withMVar)+import GHC.Exts as Exports (IsList (..), groupWith, inline, lazy, sortWith) import GHC.Generics as Exports (Generic) import GHC.IO.Exception as Exports import GHC.OverloadedLabels as Exports import Numeric as Exports-import Prelude as Exports hiding (Read, fail, concat, foldr, mapM_, sequence_, foldl1, maximum, minimum, product, sum, all, and, any, concatMap, elem, foldl, foldr1, notElem, or, mapM, sequence, id, (.)) import System.Environment as Exports import System.Exit as Exports import System.IO as Exports (Handle, hClose)@@ -70,10 +67,7 @@ import System.Mem.StableName as Exports import System.Timeout as Exports import Text.ParserCombinators.ReadP as Exports (ReadP, readP_to_S, readS_to_P)-import Text.ParserCombinators.ReadPrec as Exports (ReadPrec, readPrec_to_P, readP_to_Prec, readPrec_to_S, readS_to_Prec)-import Text.Printf as Exports (printf, hPrintf)+import Text.ParserCombinators.ReadPrec as Exports (ReadPrec, readP_to_Prec, readPrec_to_P, readPrec_to_S, readS_to_Prec)+import Text.Printf as Exports (hPrintf, printf) import Unsafe.Coerce as Exports---- text---------------------------import Data.Text as Exports (Text)+import Prelude as Exports hiding (Read, all, and, any, concat, concatMap, elem, fail, foldl, foldl1, foldr, foldr1, id, mapM, mapM_, maximum, minimum, notElem, or, product, sequence, sequence_, sum, (.))
library/HTMLEntities/Text.hs view
@@ -1,8 +1,7 @@ module HTMLEntities.Text where -import HTMLEntities.Prelude import qualified Data.Text as Text-+import HTMLEntities.Prelude -- | -- HTML-encodes the given char.@@ -18,10 +17,9 @@ -- | -- HTML-encodes the given text.--- +-- -- >>> Data.Text.IO.putStrLn $ text "<a href=\"\">" -- <a href="">--- text :: Text -> Text text = Text.concatMap char