diff options
-rw-r--r-- | go.mod | 5 | ||||
-rw-r--r-- | go.sum | 2 | ||||
-rw-r--r-- | main.go | 14 | ||||
-rw-r--r-- | rules/toml.go | 51 |
4 files changed, 71 insertions, 1 deletions
@@ -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 +) @@ -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= @@ -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()) +} |