diff options
-rw-r--r-- | fountain/parse.go | 36 | ||||
-rw-r--r-- | rules/rules.go | 5 |
2 files changed, 30 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 { diff --git a/rules/rules.go b/rules/rules.go index 775142f..2493e3f 100644 --- a/rules/rules.go +++ b/rules/rules.go @@ -78,4 +78,9 @@ var Default = Set{ Left: 1.5, Width: 3, }, + "center": { + Left: 1.5, + Width: 3, + Align: "C", + }, } |