summaryrefslogtreecommitdiff
path: root/fountain/parse.go
diff options
context:
space:
mode:
Diffstat (limited to 'fountain/parse.go')
-rw-r--r--fountain/parse.go36
1 files changed, 25 insertions, 11 deletions
diff --git a/fountain/parse.go b/fountain/parse.go
index c0fff65..8d3bf4e 100644
--- a/fountain/parse.go
+++ b/fountain/parse.go
@@ -9,7 +9,7 @@ import (
"strings"
)
-var Scene = []string{"INT", "EXT", "EST", "INT./EXT", "INT/EXT", "I/E"}
+var Scene = []string{"INT", "EXT", "EST", "INT./EXT", "INT/EXT", "EXT/INT", "EXT./INT", "I/E"}
func CheckScene(row string) (bool, string, string) {
var scene bool
@@ -20,24 +20,38 @@ func CheckScene(row string) (bool, string, string) {
scene = true
}
}
+ if strings.HasPrefix(row, ".") {
+ row = row[1:]
+ scene = true
+ }
return scene, "scene", row
}
-func CheckTransition(row string) (bool, string, string) {
- var trans bool
+func CheckCrow(row string) (bool, string, string) {
+ var crow bool
+ var el string
row = strings.ToUpper(row)
if strings.HasPrefix(row, ">") || strings.HasSuffix(row, " TO:") {
- trans = true
+ crow = true
+ el = "trans"
+ }
+ if strings.HasPrefix(row, ">") && strings.HasSuffix(row, "<") {
+ el = "center"
}
- return trans, "trans", strings.Trim(row, ">< ")
+ return crow, el, strings.Trim(row, ">< ")
}
-func CheckSynopse(row string) (bool, string, string) {
- var synopse bool
+func CheckEqual(row string) (bool, string, string) {
+ var equal bool
+ var el string
if strings.HasPrefix(row, "=") {
- synopse = true
+ equal = true
+ el = "synopse"
+ }
+ if len(row) >= 3 && strings.Trim(row, "=") == "" {
+ el = "newpage"
}
- return synopse, "synopse", strings.TrimLeft(row, "= ")
+ return equal, el, strings.TrimLeft(row, "= ")
}
func CheckSection(row string) (bool, string, string) {
@@ -75,8 +89,8 @@ func Parse(file io.Reader) (out lex.Screenplay) {
// Backtracking for elements that need a following empty line
checkfuncs := []func(string) (bool, string, string){
CheckScene,
- CheckTransition,
- CheckSynopse,
+ CheckCrow,
+ CheckEqual,
CheckSection,
}
for _, checkfunc := range checkfuncs {