gretmn102 / gretmn102/MindNotes
feat(shared): add `parserRawFrontmatter`
- Dominant language
- F#
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
```fsharp
#r "nuget: Expecto, 10.2.1"
#r "nuget: FSharpMyExt, 2.0.0-prerelease.9"
module MarkdownParser =
open FParsec
open FsharpMyExtension.Serialization.Deserializers.FParsec
let parserRawFrontmatter: Parser<_, unit> =
let separator = "---"
let pseparator = pstring separator
let rawYml =
let pline =
notFollowedByString separator
>>? many1Satisfy ((<>) '\n')
many (
pline .>> optional newline
<|> newlineReturn ""
)
rawYml |> between (pseparator .>> newline) pseparator
let parseFrontmatter =
runResult parserRawFrontmatter
open Expecto
[]
let ``parserRawFrontmatter`` =
let parse = MarkdownParser.parseFrontmatter
testList "parseRawFrontmatter" [
testCase "empty" <| fun () ->
Expect.equal
(parse <| String.concat System.Environment.NewLine [
"---"
"---"
])
(Ok [])
""
testCase "base" <| fun () ->
Expect.equal
(parse <| String.concat System.Environment.NewLine [
"---"
"authors:"
" - iam"
"tags:"
" - hello"
"---"
])
(Ok ([
"authors:"
" - iam"
"tags:"
" - hello"
]))
""
testCase "blank newlines" <| fun () ->
Expect.equal
(parse <| String.concat System.Environment.NewLine [
"---"
"authors:"
""
"tags:"
""
"---"
])
(Ok ([
"authors:"
""
"tags:"
""
]))
""
]
runTestsWithCLIArgs [] fsi.CommandLineArgs[1..] (testList "all" [
``parserRawFrontmatter``
])
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.