@@ -17,8 +17,8 @@ let private commandCall =
1717 }
1818
1919
20- let private bareText =
21- let charPred x =
20+ let private bareText , characterNameText =
21+ let charPred isCharacterNameText x =
2222 Seq.exists
2323 ((=) x)
2424 [ '\n'
@@ -28,14 +28,19 @@ let private bareText =
2828 '>'
2929 '#'
3030 '\\'
31- '\r' ]
31+ '\r'
32+ if isCharacterNameText then ':' ]
3233 |> not
3334
34- let textChar = predicate charPred anyChar
35+
36+ let p isCharacterNameText =
37+ let textChar = predicate ( charPred isCharacterNameText) anyChar
38+
39+ oneOrMore textChar
40+
3541
36- oneOrMore textChar
37- |> map ( toString >> TextSlice.Text)
38- |> name " text"
42+ p false |> map ( toString >> TextSlice.Text) |> name " text" ,
43+ p true |> map toString
3944
4045
4146let rec private markBlock () =
@@ -70,7 +75,7 @@ let text =
7075 let! character =
7176 parser {
7277 do ! whitespace0
73- let! character = symbol
78+ let! character = characterNameText
7479 do ! literal " :"
7580 return character
7681 }
@@ -123,7 +128,7 @@ let toCommands (text: TextBlock) : CommandCall list =
123128 UnnamedArgs = []
124129 NamedArgs =
125130 [ if text.Character.IsSome then
126- " character" , Constant <| Symbol text.Character.Value ] }
131+ " character" , Constant <| String text.Character.Value ] }
127132
128133 let rec textSliceToCommand x =
129134 x
@@ -147,7 +152,6 @@ let toCommands (text: TextBlock) : CommandCall list =
147152
148153 yield ! textSliceToCommand text.Text
149154
150-
151155 { Callee = " __text_end"
152156 UnnamedArgs = []
153157 NamedArgs = [ " hasMore" , Constant <| Symbol ( text.HasMore.ToString() .ToLower()) ] } ]
0 commit comments