packages feed

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 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