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"))
|
||||
|
8
projects/kiss-vscode/src/ktxt2/StreamConversion.hx
Normal file
8
projects/kiss-vscode/src/ktxt2/StreamConversion.hx
Normal file
@@ -0,0 +1,8 @@
|
||||
package ktxt2;
|
||||
|
||||
import kiss.Prelude;
|
||||
import kiss.List;
|
||||
import kiss.Stream;
|
||||
|
||||
@:build(kiss.Kiss.build())
|
||||
class StreamConversion {}
|
9
projects/kiss-vscode/src/ktxt2/StreamConversion.kiss
Normal file
9
projects/kiss-vscode/src/ktxt2/StreamConversion.kiss
Normal file
@@ -0,0 +1,9 @@
|
||||
(defNew [&prop &mut :String name
|
||||
&prop &mut :String sourceType
|
||||
&prop &mut :String outputType
|
||||
:Stream->Bool canConvertStream
|
||||
:Stream->String convertStream]
|
||||
[
|
||||
&mut :String->Bool canConvert ->block (canConvertStream (Stream.fromString block))
|
||||
&mut :String->String convert ->block (convertStream (Stream.fromString block))
|
||||
])
|
Reference in New Issue
Block a user