diff options
Diffstat (limited to 'org')
| -rw-r--r-- | org/sdp.org | 24 | 
1 files changed, 20 insertions, 4 deletions
| diff --git a/org/sdp.org b/org/sdp.org index d0d7eaf..af7fe98 100644 --- a/org/sdp.org +++ b/org/sdp.org @@ -269,6 +269,10 @@ bool[string] opts = [    "backmatter"         : true,    "skip-output"        : false,  ]; +string[string] settings = [ +  "output-dir"         : "", +  "lang"               : "all", +];  auto helpInfo = getopt(args,    std.getopt.config.passThrough,    "assert",             "--assert set optional assertions on",                        &opts["assertions"], @@ -309,6 +313,8 @@ auto helpInfo = getopt(args,    "section-blurb",      "--section-blurb process document blurb (default)",           &opts["section_blurb"],    "backmatter",         "--section-backmatter process document backmatter (default)", &opts["backmatter"],    "skip-output",        "--skip-output",                                              &opts["skip-output"], +  "output-dir",         "--output-dir=[dir path]",                                    &settings["output-dir"], +  "lang",               "--lang=[lang code e.g. =en or =en,es]",                      &settings["lang"],  );  if (helpInfo.helpWanted) {    defaultGetoptPrinter("Some information about the program.", helpInfo.options); @@ -345,10 +351,15 @@ foreach(arg; args[1..$]) {      foreach (contents_location; contents_locations_arr) {        assert(contents_location.match(rgx.src_pth),          "not a recognised file: «" ~ -         contents_location ~ "»" +        contents_location ~ "»"        );        auto contents_location_pth_ = (contents_location).to!string; -      fns_src ~= (((tmp_dir_).chainPath(contents_location_pth_)).array).to!(char[]); +      auto lang_rgx_ = regex(r"/(" ~ settings["lang"].split(",").join("|") ~ ")/"); +      if (settings["lang"] == "all" +        || (contents_location_pth_).match(lang_rgx_) +      ) { +        fns_src ~= (((tmp_dir_).chainPath(contents_location_pth_)).array).to!(char[]); +      }      }    } else if (arg.match(rgx.src_pth_zip)) {      // fns_src ~= arg;             // gather input markup source file names for processing @@ -423,7 +434,7 @@ enforce(  #+NAME: sdp_abstraction  #+BEGIN_SRC d -auto t = SiSUabstraction!()(fn_src, opts, env); +auto t = SiSUabstraction!()(fn_src, opts, settings, env);  static assert(!isTypeTuple!(t));  static assert(t.length==2);  auto doc_abstraction = t[dAM.abstraction]; @@ -500,9 +511,10 @@ template SiSUabstraction() {    enum makeMeta { make, meta }    enum docAbst  { doc_abstraction, section_keys, segnames, segnames_0_4, images }    static auto rgx = Rgx(); -  auto SiSUabstraction(Fn,O,E)( +  auto SiSUabstraction(Fn,O,S,E)(      Fn fn_src,      O opts, +    S settings,      E env,    ){      <<sdp_conf_files>> @@ -655,6 +667,10 @@ struct DocumentMatters {      bool[string] _k = opts;      return _k;    } +  auto opt_settings() { +    string[string] _k = settings; +    return _k; +  }    auto environment() {      auto _k = env;      return _k; | 
