diff --git a/projects/hollywoo/src/hollywoo/FountainConversions.kiss b/projects/hollywoo/src/hollywoo/FountainConversions.kiss index 2bd58de1..906c69c8 100644 --- a/projects/hollywoo/src/hollywoo/FountainConversions.kiss +++ b/projects/hollywoo/src/hollywoo/FountainConversions.kiss @@ -15,6 +15,20 @@ (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 (w.substr 1 (- w.length 3)) ""))\" ##\"$(group "line")\"## cc)"##### + #####"ONPHONESPEECH \"$(group "name")\" \"$(let [w (group "wryly")] (if w (substr w 1 -3) ""))\" ##\"$(.trim (group "line"))\"##$(group "pBreak")"##### + "m")) + +(registerConversion + (new ktxt2.RegexConversion "Speech" "fountain" "hollywoo" + (R.group + R.start + (R.namedGroup "name" (R.repeat R.capitalLetter 1)) + (R.escape "\n") + wryly + (R.namedGroup "line" (R.repeat R.anyChar 1)) + (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")) \ No newline at end of file diff --git a/projects/kiss-vscode/src/ktxt2/KTxt2.kiss b/projects/kiss-vscode/src/ktxt2/KTxt2.kiss index 44fd0452..180f4d71 100644 --- a/projects/kiss-vscode/src/ktxt2/KTxt2.kiss +++ b/projects/kiss-vscode/src/ktxt2/KTxt2.kiss @@ -83,7 +83,7 @@ (case ktxtElement ((Block (objectWith source output)) (+= sourceText source) - (dictSet interp.variables "source" source) + (dictSet interp.variables "source" (removeSpecialChars source)) (dictSet interp.variables "sourceLine" ->line (nth (source.split "\n") line)) (dictSet interp.variables "R" re_flex.R) (+= outputText @@ -102,7 +102,7 @@ ((when (and (= sourceType (sourceFile.extension)) (= outputType (outputFile.extension)) - (canConvert source)) + (canConvert (removeSpecialChars source))) (objectWith sourceType outputType canConvert name)) (dictSet validMap name c)) (otherwise {}))) @@ -118,7 +118,7 @@ (let [conversions (validConversions conversions "${base}.${sourceExt}" "${base}.${outputExt}" element.source)] (when (= 1 (count conversions)) (let [onlyConversion (first (collect (conversions.iterator)))] - (set element.output (onlyConversion.convert element.source)))))))) + (set element.output (onlyConversion.convert (removeSpecialChars element.source))))))))) (toString elements)))) (function :String insertSpecialChars [:String text] @@ -129,4 +129,10 @@ ((text.endsWith "\n") (+ (substr text 0 -1) "↵")) (true - text)))) \ No newline at end of file + text)))) + +(function :String removeSpecialChars [:String text] + (let [text (text.replace "\r" "")] + (.replace + (.replace text "¶" "\n\n") + "↵" "\n"))) \ No newline at end of file diff --git a/projects/kiss-vscode/src/ktxt2/KTxt2EditorProvider.kiss b/projects/kiss-vscode/src/ktxt2/KTxt2EditorProvider.kiss index 6558e7dc..77c7756b 100644 --- a/projects/kiss-vscode/src/ktxt2/KTxt2EditorProvider.kiss +++ b/projects/kiss-vscode/src/ktxt2/KTxt2EditorProvider.kiss @@ -67,7 +67,7 @@ (when (= "Overwrite" overwrite) (withValueOrQuickPickMap chosenConversion conversions (whenLet [converted - (try (chosenConversion.convert source) + (try (chosenConversion.convert (KTxt2.removeSpecialChars source)) (catch [e] (errorMessage "Conversion error: $e") null))] (makeEdit ->edit (edit.replace document.uri (rangeFromStartEnd outputStart outputEnd) converted)))))))