Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions paket.dependencies
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ group Core
nuget FSharpMyExt >= 2.0.0-prerelease.3 lowest_matching: true
nuget FUniversalParser >= 0.6.0 lowest_matching: true
nuget Farkdown >= 0.5.0 lowest_matching: true
nuget FMermaid.Core >= 0.2.0 lowest_matching: true

group Cli
source https://api.nuget.org/v3/index.json
Expand All @@ -23,6 +24,7 @@ group Cli
nuget FSharpMyExt >= 2.0.0-prerelease.3 lowest_matching: true
nuget FUniversalParser >= 0.6.0 lowest_matching: true
nuget Farkdown >= 0.5.0 lowest_matching: true
nuget FMermaid.Core >= 0.2.0 lowest_matching: true

group Tests
source https://api.nuget.org/v3/index.json
Expand All @@ -37,3 +39,4 @@ group Tests
nuget FSharpMyExt >= 2.0.0-prerelease.3 lowest_matching: true
nuget FUniversalParser >= 0.6.0 lowest_matching: true
nuget Farkdown >= 0.5.0 lowest_matching: true
nuget FMermaid.Core >= 0.2.0 lowest_matching: true
15 changes: 12 additions & 3 deletions paket.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ NUGET
System.Configuration.ConfigurationManager (>= 4.4)
FParsec (1.1.1)
FSharp.Core (>= 4.3.4)
FSharp.Core (6.0)
FSharp.Core (6.0.7)
Fuchu (1.1)
FSharp.Core (>= 4.3.4)
HtmlAgilityPack (1.11.24)
Expand All @@ -37,6 +37,9 @@ NUGET
FSharp.Core (>= 5.0.1)
FSharpMyExt (>= 2.0.0-prerelease.3)
FUniversalParser (>= 0.2)
FMermaid.Core (0.2.0)
FSharp.Core (>= 6.0.7 < 7.0)
FSharpMyExt (>= 2.0.0-prerelease.4)
FSharpMyExt (2.0.0-prerelease.4)
FParsec (>= 1.1.1)
FSharp.Core (>= 4.7.2)
Expand All @@ -61,6 +64,9 @@ NUGET
FSharp.Core (>= 5.0.1)
FSharpMyExt (>= 2.0.0-prerelease.3)
FUniversalParser (>= 0.2)
FMermaid.Core (0.2.0)
FSharp.Core (>= 6.0.7 < 7.0)
FSharpMyExt (>= 2.0.0-prerelease.4)
FSharpMyExt (2.0.0-prerelease.4)
FParsec (>= 1.1.1)
FSharp.Core (>= 4.7.2)
Expand All @@ -76,7 +82,7 @@ NUGET
remote: https://api.nuget.org/v3/index.json
FParsec (1.1.1)
FSharp.Core (>= 4.3.4)
FSharp.Core (6.0)
FSharp.Core (6.0.7)
Fuchu (1.1)
FSharp.Core (>= 4.3.4)
HtmlAgilityPack (1.11.24)
Expand Down Expand Up @@ -105,7 +111,7 @@ NUGET
Mono.Cecil (>= 0.11.3)
FParsec (1.1.1)
FSharp.Core (>= 4.3.4)
FSharp.Core (6.0)
FSharp.Core (6.0.7)
Fuchu (1.1)
FSharp.Core (>= 4.3.4)
HtmlAgilityPack (1.11.24)
Expand All @@ -129,6 +135,9 @@ NUGET
FSharp.Core (>= 5.0.1)
FSharpMyExt (>= 2.0.0-prerelease.3)
FUniversalParser (>= 0.2)
FMermaid.Core (0.2.0)
FSharp.Core (>= 6.0.7 < 7.0)
FSharpMyExt (>= 2.0.0-prerelease.4)
FSharpMyExt (2.0.0-prerelease.4)
FParsec (>= 1.1.1)
FSharp.Core (>= 4.7.2)
Expand Down
1 change: 1 addition & 0 deletions src/Core/Core.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
<Compile Include="Parser/Action.fs" />
<Compile Include="Parser/Paragraph.fs" />
<Compile Include="Parser/Document.fs" />
<Compile Include="Mermaid.fs" />
</ItemGroup>
<Import Project="..\..\.paket\Paket.Restore.targets" />
</Project>
20 changes: 20 additions & 0 deletions src/Core/Mermaid.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
module MarkdownCyoa.Core.Mermaid
open FMermaid.Api

let toMermaid (markdownCyoaDocument: Document): Flowchart.Document =
markdownCyoaDocument
|> List.collect (fun paragraph ->
paragraph.Actions
|> List.map (fun action ->
{
Flowchart.FromNode = paragraph.Id
Flowchart.EdgeLabel =
Farkdown.SyntaxTree.Line.Show.show action.Description
|> FsharpMyExtension.ShowList.show
|> Some
Flowchart.ToNode = action.Reference
}
|> Flowchart.Statement.Connection
)
)
|> Flowchart.Document.create
1 change: 1 addition & 0 deletions src/Core/paket.references
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ group Core
FSharpMyExt
FUniversalParser
Farkdown
FMermaid.Core
56 changes: 56 additions & 0 deletions tests/Mermaid.Tests.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
module MarkdownCyoa.Core.Mermaid.Tests
open Expecto
open FMermaid.Api.Flowchart

open MarkdownCyoa.Core.Tests

[<Tests>]
let toMermaidTest =
testList "MarkdownCyoa.Core.Mermaid.toMermaid" [
testCase "base" <| fun () ->
Expect.equal
(toMermaid CinderellaCyoa.parsedAll)
(Document.create [
Statement.Connection {
FromNode = "begin"
EdgeLabel = Some "Start sweeping the floors."
ToNode = "#sweep-floors"
}
Statement.Connection {
FromNode = "begin"
EdgeLabel = Some "Begin mending the dresses."
ToNode = "#mend-dresses"
}
Statement.Connection {
FromNode = "begin"
EdgeLabel = Some "Ask the mice for help."
ToNode = "#ask-mice"
}
Statement.Connection {
FromNode = "sweep-floors"
EdgeLabel = Some "Stop sweeping and sew the button back on."
ToNode = "#sew-button"
}
Statement.Connection {
FromNode = "sweep-floors"
EdgeLabel = Some "Keep sweeping and deal with the button later."
ToNode = "#keep-sweeping"
}
Statement.Connection {
FromNode = "mend-dresses"
EdgeLabel = Some "Finish mending the dresses first."
ToNode = "#finish-mending"
}
Statement.Connection {
FromNode = "mend-dresses"
EdgeLabel = Some "Put the dresses aside and start cleaning."
ToNode = "#start-cleaning"
}
Statement.Connection {
FromNode = "mend-dresses"
EdgeLabel = Some "Put the dresses aside and start dinner."
ToNode = "#start-cleaning"
}
])
""
]
1 change: 1 addition & 0 deletions tests/Tests.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<Compile Include="Parser/Action.Tests.fs" />
<Compile Include="Parser/Paragraph.Tests.fs" />
<Compile Include="Parser/Document.Tests.fs" />
<Compile Include="Mermaid.Tests.fs" />
<Compile Include="Program.fs" />
</ItemGroup>
<ItemGroup>
Expand Down