aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Vilcans <martin@librador.com>2019-02-21 21:19:47 +0100
committerMartin Vilcans <martin@librador.com>2019-02-21 21:20:13 +0100
commitaa4119ced837d772cd11a81fd342ea2c5513fb6f (patch)
tree382798762e307e8e41e228ddcf9bf61f5db52414
parentc088581f5ed882554d1e27074411b2c874955010 (diff)
downloadscreenplain-aa4119ced837d772cd11a81fd342ea2c5513fb6f.tar.gz
Add supports for notes
Fixes #37
-rw-r--r--screenplain/parsers/fountain.py4
-rw-r--r--tests/files/notes.fountain18
-rw-r--r--tests/files/notes.fountain.html6
3 files changed, 27 insertions, 1 deletions
diff --git a/screenplain/parsers/fountain.py b/screenplain/parsers/fountain.py
index 5434c1a..9780982 100644
--- a/screenplain/parsers/fountain.py
+++ b/screenplain/parsers/fountain.py
@@ -35,6 +35,7 @@ scene_number_re = re.compile(r'(.*?)\s*(?:#([\w\-.]+)#)\s*$')
section_re = re.compile(r'^(#{1,6})\s*([^#].*)$')
transition_re = re.compile(r'(>?)\s*(.+?)(TO:)?$')
page_break_re = re.compile(r'^={3,}$')
+note_re = re.compile(r'\[\[.*?\]\]', re.DOTALL)
def _sequence_to_rich(lines):
@@ -253,7 +254,8 @@ def parse_body(source):
paragraphs = []
for blank, input_lines in itertools.groupby(source, _is_blank):
if not blank:
- paragraph = InputParagraph(list(input_lines))
+ as_string = note_re.sub('', '\n'.join(input_lines))
+ paragraph = InputParagraph(as_string.split('\n'))
paragraph.update_list(paragraphs)
return paragraphs
diff --git a/tests/files/notes.fountain b/tests/files/notes.fountain
new file mode 100644
index 0000000..1e68fd2
--- /dev/null
+++ b/tests/files/notes.fountain
@@ -0,0 +1,18 @@
+Before1 [[some notes]]After1
+
+Before2 [[multiline
+note
+here]]After2
+
+Before3 [[multiline
+note
+
+with a blank line]]After3
+
+Multiple [[notes]]on one[[line]]
+
+This is not [[
+a proper note
+
+because it contains a blank line
+]]
diff --git a/tests/files/notes.fountain.html b/tests/files/notes.fountain.html
new file mode 100644
index 0000000..033f63c
--- /dev/null
+++ b/tests/files/notes.fountain.html
@@ -0,0 +1,6 @@
+<div class="action"><p>Before1 After1</p></div>
+<div class="action"><p>Before2 After2</p></div>
+<div class="action"><p>Before3 After3</p></div>
+<div class="action"><p>Multiple on one</p></div>
+<div class="action"><p>This is not [[<br/>a proper note</p></div>
+<div class="action"><p>because it contains a blank line<br/>]]</p></div>