Cleaner stream-based ktxt2 conversions

This commit is contained in:
2021-12-14 14:00:43 -07:00
parent a8525ad1eb
commit d3b8bbcf8a
3 changed files with 32 additions and 13 deletions

View File

@@ -1,3 +1,5 @@
// KTxt2 Conversions for Fountain files
(var wryly
(R.namedGroup "wryly"
(R.optional
@@ -6,19 +8,19 @@
(R.repeat R.anyChar 1)
(R.escape ")\n")))))
// KTxt2 Conversions for Fountain files
(registerConversion
(new ktxt2.RegexConversion "On Phone Speech" "fountain" "hollywoo"
(R.group
R.start
(R.namedGroup "name" (R.repeat R.capitalLetter 1))
(R.escape " (O.P.)\n")
wryly
(R.namedGroup "line" (R.repeat R.anyChar 1))
(R.namedGroup "pBreak" (R.repeat (R.escape "\n") 1))
R.end)
#####"ONPHONESPEECH \"$(group "name")\" \"$(let [w (group "wryly")] (if w (substr w 1 -3) ""))\" ##\"$(.trim (group "line"))\"##$(group "pBreak")"#####
"m"))
(new ktxt2.StreamConversion "On Phone Speech" "fountain" "hollywoo"
->stream ?(whenLet [(Some name) (stream.takeUntilAndDrop " (O.P.)")] true)
->stream
(let [name (whenLet [(Some name) (stream.takeUntilAndDrop "(O.P.)")] name)
&mut output ""]
(stream.takeLine)
(loop
(let [wryly (ifLet [(Some w) (stream.takeBetween "(" ")")] w "")
line (ifLet [(Some l) (stream.takeLine)] (l.trim) (break))]
(when line
(+= output "ONPHONESPEECH \"${name}\" \"${wryly}\" ##\"${line}\"##\n"))))
output)))
(registerConversion
(new ktxt2.RegexConversion "Speech" "fountain" "hollywoo"
@@ -31,4 +33,4 @@
(R.namedGroup "pBreak" (R.repeat (R.escape "\n") 1))
R.end)
#####"NORMALSPEECH \"$(group "name")\" \"$(let [w (group "wryly")] (if w (substr w 1 -3) ""))\" ##\"$(.trim (group "line"))\"##$(group "pBreak")"#####
"m"))
"m"))