Add CI runner (#5)

Reviewed-on: #5
Co-authored-by: Igor Ranieri <igor@elland.me>
Co-committed-by: Igor Ranieri <igor@elland.me>
This commit is contained in:
Igor Ranieri 2025-09-27 15:03:00 +00:00 committed by elland
parent d8ba47a8b6
commit 08dc87a307
7 changed files with 228 additions and 53 deletions

View file

@ -69,7 +69,7 @@ located :: Parser a -> Parser (SourcePos, a)
located p = (,) <$> getPosition <*> p
tokenise :: [Parser a] -> Parser [(SourcePos, a)]
tokenise = sequence . map located
tokenise = mapM located
lexer :: String -> Either ParseError [LocatedToken]
lexer = Parsec.runParser lexText initialParserState "input" . Text.pack
@ -146,7 +146,7 @@ delimitedNoTrailing openP closeP openTok = asList <$> delimitedAsTuple (openTok
asList (a, tok, _) = [a, tok]
delimitedSymmetric :: Parser a -> Token -> Token -> Parser [LocatedToken]
delimitedSymmetric s t1 t2 = delimited s s t1 t2
delimitedSymmetric s = delimited s s
eol :: Parser ()
eol = void "\n" <|> void "\r\n" <|> Parsec.eof

View file

@ -13,7 +13,9 @@ import Text.Parsec.Pos (updatePosChar)
Return everything consumed except for the end pattern itself.
-}
takeUntil :: Text -> Parser Text
takeUntil end_ = Text.dropEnd (Text.length end_) <$> requireEnd (scan p (False, end)) >>= gotSome
takeUntil end_ =
requireEnd (scan p (False, end))
>>= gotSome . Text.dropEnd (Text.length end_)
where
end = Text.unpack end_

View file

@ -9,6 +9,8 @@ module Types (
)
where
import Data.Foldable (fold)
newtype Document = Document
{ meta :: Meta
}
@ -28,6 +30,7 @@ data Since = Since
-- Could have a better type?
type Version = [Int]
type Package = String
data DocMarkup mod id
@ -51,78 +54,78 @@ data DocMarkup mod id
| -- | Bold __bold text__
DocBold (DocMarkup mod id)
| {- | Unordered lists
* this
or
- this
* this
or
- this
-}
DocUnorderedList [DocMarkup mod id]
| {- | Ordered lists
1. this
or
(1) this
1. this
or
(1) this
-}
DocOrderedList [(Int, DocMarkup mod id)]
| {- | Definition lists
[term] a term
[another term] another definition
[term] a term
[another term] another definition
-}
DocDefinitionList [(DocMarkup mod id, DocMarkup mod id)]
| {- | Code blocks
@
a code block in here
with multiple lines
@
@
a code block in here
with multiple lines
@
Or with bird tracks:
> some code
> goes here
Or with bird tracks:
> some code
> goes here
-}
DocCodeBlock (DocMarkup mod id)
| {- | Hyperlinks
__marked__:
<http://example.com>
<http://example.com label text>
__Auto-detected URLs__:
http://example.com
https://example.com
ftp://example.com
__Markdown style__
[link text](http://example.com)
[link text]("Module.Name")
__marked__:
<http://example.com>
<http://example.com label text>
__Auto-detected URLs__:
http://example.com
https://example.com
ftp://example.com
__Markdown style__
[link text](http://example.com)
[link text]("Module.Name")
-}
DocHyperlink (Hyperlink (DocMarkup mod id))
| {- | Pictures
<<image.png>>
<<image.png title text>>
<<image.png>>
<<image.png title text>>
__Markdown Images__
__Markdown Images__
![alt text](image.png)
![alt text](image.png)
-}
DocPicture Picture
| {- | Inline math expressions
\(mathematical expression\)
\(mathematical expression\)
-}
DocMathInline String
| {- | Math multiline display
\[
mathematical expression
in multiple lines
\]
\[
mathematical expression
in multiple lines
\]
-}
DocMathDisplay String
| {- | Anchors, no spaces allowed
#anchor-name#
#anchor-name#
-}
DocAnchor String
| {- | Property descriptions
prop> property description
prop> property description
-}
DocProperty String
| {- | Examples
>>> expression
result line 1
result line 2
>>> expression
result line 1
result line 2
-}
DocExamples [Example]
| -- | Header
@ -136,7 +139,7 @@ instance Semigroup (DocMarkup mod id) where
instance Monoid (DocMarkup mod id) where
mempty = DocEmpty
mconcat = foldr (<>) mempty
mconcat = fold
data ModuleLink id = ModuleLink
{ name :: String