summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--go.mod5
-rw-r--r--go.sum2
-rw-r--r--main.go14
-rw-r--r--rules/toml.go51
4 files changed, 71 insertions, 1 deletions
diff --git a/go.mod b/go.mod
index 073fb01..2c7af37 100644
--- a/go.mod
+++ b/go.mod
@@ -1,3 +1,6 @@
module github.com/lapingvino/lexington
-require github.com/jung-kurt/gofpdf v1.0.0
+require (
+ github.com/BurntSushi/toml v0.3.1
+ github.com/jung-kurt/gofpdf v1.0.0
+)
diff --git a/go.sum b/go.sum
index 1c40faf..7048d96 100644
--- a/go.sum
+++ b/go.sum
@@ -1,2 +1,4 @@
+github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/jung-kurt/gofpdf v1.0.0 h1:EroSdlP9BOoL5ssLYf3uLJXhCQMMM2fFxCJDKA3RhnA=
github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
diff --git a/main.go b/main.go
index 8a39e39..fa94657 100644
--- a/main.go
+++ b/main.go
@@ -17,6 +17,11 @@ import (
)
func main() {
+ config := flag.String("config", "lexington.toml", "Configuration file to use.")
+ dump := flag.Bool("dumpconfig", false, "Dump the default configuration to the location of --config to be adapted manually.")
+ scenein := flag.String("scenein", "en", "Configuration to use for scene header detection on input.")
+ sceneout := flag.String("sceneout", "en", "Configuration to use for scene header detection on output.")
+ elements := flag.String("e", "default", "Element settings from settings file to use.")
input := flag.String("i", "-", "Input from provided filename. - means standard input.")
output := flag.String("o", "-", "Output to provided filename. - means standard output.")
from := flag.String("from", "fountain", "Input file type. Choose from fountain, lex [, fdx]. Formats between angle brackets are planned to be supported, but are not supported by this binary.")
@@ -29,6 +34,15 @@ func main() {
return
}
+ if *dump {
+ err := rules.Dump(*config)
+ if err != nil {
+ log.Println("Error dumping configuration: ", err)
+ }
+ log.Println("Configuration dumped to ", *config)
+ return
+ }
+
var infile io.Reader
var outfile io.Writer
var i lex.Screenplay
diff --git a/rules/toml.go b/rules/toml.go
new file mode 100644
index 0000000..4bb5946
--- /dev/null
+++ b/rules/toml.go
@@ -0,0 +1,51 @@
+package rules
+
+import (
+ "github.com/BurntSushi/toml"
+ "os"
+)
+
+type TOMLConf struct{
+ Elements map[string]Set
+ Scenes map[string][]string
+ metadata toml.MetaData
+}
+
+func ReadFile(file string) (TOMLConf, error) {
+ var r TOMLConf
+ m, err := toml.DecodeFile(file, &r)
+ r.metadata = m
+ return r, err
+}
+
+func MustReadFile(file string) TOMLConf {
+ c, err := ReadFile(file)
+ if err != nil {
+ panic(err)
+ }
+ return c
+}
+
+func DefaultConf() TOMLConf {
+ return TOMLConf{
+ Elements: map[string]Set{
+ "default": Default,
+ },
+ Scenes: map[string][]string{
+ "en": []string{"INT", "EXT", "EST", "INT./EXT", "INT/EXT", "EXT/INT", "EXT./INT", "I/E"},
+ "nl": []string{"BIN", "BUI", "BI", "BU", "OPEN", "BIN./BUI", "BUI./BIN", "BIN/BUI", "BI/BU"},
+ "de": []string{"INT", "EXT", "ETABL", "INT./EXT", "INT/EXT", "EXT/INT", "EXT./INT", "I/E"},
+ "fr": []string{"INT", "EXT", "INT./EXT", "INT/EXT", "EXT/INT", "EXT./INT", "I/E"},
+ "eo": []string{"EN", "ENE", "EKST", "EK", "EN/EKST", "EKST/EN", "EKST./EN", "EN./EKST"},
+ "ru": []string{"ИНТ", "НАТ", "ИНТ/НАТ", "ИНТ./НАТ", "НАТ/ИНТ", "НАТ./ИНТ", "ЭКСТ", "И/Н", "Н/И"},
+ },
+ }
+}
+
+func Dump(file string) error {
+ f, err := os.Create(file)
+ if err != nil {
+ return err
+ }
+ return toml.NewEncoder(f).Encode(DefaultConf())
+}