Cleaner stream-based ktxt2 conversions
This commit is contained in:
@@ -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"))
|
||||
|
Reference in New Issue
Block a user