gemmula 0.1.0.0 → 1.0.0
raw patch · 5 files changed
+22/−18 lines, 5 filesdep ~HUnitdep ~raw-strings-qqPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: HUnit, raw-strings-qq
API changes (from Hackage documentation)
- Text.Gemini: GemHeading :: Int64 -> Text -> GemItem
+ Text.Gemini: GemHeading :: !Int -> !Text -> GemItem
- Text.Gemini: GemLink :: Text -> Maybe Text -> GemItem
+ Text.Gemini: GemLink :: !Text -> !Maybe Text -> GemItem
- Text.Gemini: GemList :: [Text] -> GemItem
+ Text.Gemini: GemList :: ![Text] -> GemItem
- Text.Gemini: GemPre :: [Text] -> Maybe Text -> GemItem
+ Text.Gemini: GemPre :: ![Text] -> !Maybe Text -> GemItem
- Text.Gemini: GemQuote :: Text -> GemItem
+ Text.Gemini: GemQuote :: !Text -> GemItem
- Text.Gemini: GemText :: Text -> GemItem
+ Text.Gemini: GemText :: !Text -> GemItem
Files
- ChangeLog.md +4/−0
- README.md +1/−1
- gemmula.cabal +4/−4
- src/Text/Gemini.hs +12/−12
- test/Main.hs +1/−1
ChangeLog.md view
@@ -1,6 +1,10 @@ # `gemmula` Change Log +## 1.0.0 (December 19, 2023)+* Change the stability to `stable`.+* Use strict data types and functions instead of lazy ones.+ ## 0.1.0.0 (November 29, 2023) * Initial release!
README.md view
@@ -1,5 +1,5 @@ -# gemmula+# [gemmula](https://hackage.haskell.org/package/gemmula) A tiny and functional Gemtext (`text/gemini`) parser from and to Text. Check the Section 5 of the [Gemini Protocol specification](https://geminiprotocol.net/docs/specification.gmi)
gemmula.cabal view
@@ -1,5 +1,5 @@ name: gemmula-version: 0.1.0.0+version: 1.0.0 synopsis: A tiny Gemtext parser description: gemmula is a tiny and functional text/gemini (also known as Gemtext) parser that aims to parse a Gemtext document from and to Text,@@ -21,7 +21,7 @@ default-language: Haskell2010 hs-source-dirs: src exposed-modules: Text.Gemini- build-depends: base >= 4.17 && < 5+ build-depends: base >= 4.16 && < 5 , text >= 2.0 && < 2.2 ghc-options: -Wall @@ -32,8 +32,8 @@ main-is: Main.hs build-depends: base , text- , HUnit- , raw-strings-qq+ , HUnit >= 1.6 && < 2+ , raw-strings-qq >= 1.1 && < 2 , gemmula ghc-options: -Wall
src/Text/Gemini.hs view
@@ -6,7 +6,7 @@ -- License : AGPL-3.0-or-later -- -- Maintainer : Sena <jn-sena@proton.me>--- Stability : unstable+-- Stability : stable -- Portability : portable -- -- A tiny @text/gemini@ parser.@@ -26,11 +26,11 @@ , encodeItem ) where -import Data.Text.Lazy (Text)-import qualified Data.Text.Lazy as T+import Data.Text (Text)+import qualified Data.Text as T import Data.Maybe (maybeToList) import Data.Char (isSpace)-import Data.Int (Int64)+import Data.List (foldl') import Data.Bool (bool) @@ -38,12 +38,12 @@ type GemDocument = [GemItem] -- | A Gemtext item.-data GemItem = GemText Text -- ^ A regular Gemtext line. -- @'GemText' \<Text>@- | GemLink Text (Maybe Text) -- ^ A Gemtext link. -- @'GemLink' \<Link> \[Optional Description]@- | GemHeading Int64 Text -- ^ A Gemtext heading of 3 levels max. -- @'GemHeading' \<Level> \<Text>@- | GemList [Text] -- ^ A Gemtext unordered list. -- @'GemList' \<Lines>@- | GemQuote Text -- ^ A Gemtext quote. -- @'GemQuote' \<Text>@- | GemPre [Text] (Maybe Text) -- ^ A Gemtext preformat. -- @'GemPre' \<Lines> [Optional Alt Text]@+data GemItem = GemText !Text -- ^ A regular Gemtext line. -- @'GemText' \<Text>@+ | GemLink !Text !(Maybe Text) -- ^ A Gemtext link. -- @'GemLink' \<Link> \[Optional Description]@+ | GemHeading !Int !Text -- ^ A Gemtext heading of 3 levels max. -- @'GemHeading' \<Level> \<Text>@+ | GemList ![Text] -- ^ A Gemtext unordered list. -- @'GemList' \<Lines>@+ | GemQuote !Text -- ^ A Gemtext quote. -- @'GemQuote' \<Text>@+ | GemPre ![Text] !(Maybe Text) -- ^ A Gemtext preformat. -- @'GemPre' \<Lines> [Optional Alt Text]@ deriving (Show, Eq) @@ -110,7 +110,7 @@ -- | Encode parsed 'GemDocument' to a @text/gemini@ file. -- The output 'Text' uses LF-endings. encode :: GemDocument -> Text-encode = T.unlines . foldl (\acc x -> acc <> [encodeItem x]) []+encode = T.unlines . foldl' (\acc x -> acc <> [encodeItem x]) [] -- | Encode a /single/ parsed 'GemItem' as @text/gemini@ text. -- The output 'Text' uses LF-endings and might be multiple lines.@@ -145,7 +145,7 @@ -- Get the value of a line. -- Removes the prefix and strips.-value :: Int64 -> Text -> Text+value :: Int -> Text -> Text value prefix = T.strip . T.drop prefix -- @Nothing@ if the text is empty.
test/Main.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings, QuasiQuotes #-} -import Data.Text.Lazy (Text)+import Data.Text (Text) import Control.Monad import System.Exit import Test.HUnit