diff options
| author | Ralph Amissah <ralph@amissah.com> | 2017-01-29 11:57:41 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph@amissah.com> | 2019-04-10 15:14:14 -0400 | 
| commit | c8c141d8abf715c9a697d2e3dd949d4621cfea7b (patch) | |
| tree | 7124b76ac74734dbe9265151a874822c70eef12f /src/sdp | |
| parent | defaults org, reorganize (diff) | |
0.12.1 abstraction template
Diffstat (limited to 'src/sdp')
| -rw-r--r-- | src/sdp/abstraction.d | 121 | ||||
| -rw-r--r-- | src/sdp/ao_read_config_files.d | 160 | ||||
| -rw-r--r-- | src/sdp/ao_read_source_files.d | 9 | 
3 files changed, 225 insertions, 65 deletions
| diff --git a/src/sdp/abstraction.d b/src/sdp/abstraction.d new file mode 100644 index 0000000..d91618e --- /dev/null +++ b/src/sdp/abstraction.d @@ -0,0 +1,121 @@ +template SiSUabstraction() { +  /+ sdp: sisu document parser, see http://sisudoc.org +/ +  import +    ao_abstract_doc_source, +    ao_conf_make_meta, +    ao_conf_make_meta_native, +    ao_conf_make_meta_sdlang, +    ao_defaults, +    ao_output_debugs, +    ao_read_config_files, +    ao_read_source_files, +    ao_rgx, +    output_hub; +  /+ sdlang http://sdlang.org +/ +  import sdlang;                            // sdlang.d +  /+ std +/ +  private import +    std.algorithm, +    std.array, +    std.container, +    std.exception, +    std.getopt, +    std.json, +    std.process, +    std.stdio, +    std.file, +    std.path, +    std.range, +    std.regex, +    std.string, +    std.traits, +    std.typecons, +    std.utf, +    std.conv : to; +  mixin SiSUrgxInit; +  mixin SiSUregisters; +  mixin SiSUheaderExtractSDLang; +  mixin SiSUnode; +  mixin SiSUbiblio; +  mixin SiSUrgxInitFlags; +  mixin outputHub; +  // auto sdl_root_configuration = ConfigHub!()("conf.sdl", env); +  // auto sdl_root_doc_make = ConfigHub!()("sisu_document_make", env); +  // auto confsdl = HeaderExtractSDL(); +  // auto conf_settings_aa = confsdl.configSettingsSDLangToAAmake(sdl_root_configuration); +  // auto conf_doc_make_aa = confsdl.documentMakeSDLangToAAmake(sdl_root_doc_make); +  auto rgx = Rgx(); +  auto SiSUabstraction(Fn,O,E)(Fn fn_src, O opts, E env){ +    auto sdl_root_configuration = ConfigHub!()("conf.sdl", env); +    auto sdl_root_doc_make = ConfigHub!()("sisu_document_make", env); +    auto confsdl = HeaderExtractSDL(); +    auto conf_settings_aa = confsdl.configSettingsSDLangToAAmake(sdl_root_configuration); +    auto conf_doc_make_aa = confsdl.documentMakeSDLangToAAmake(sdl_root_doc_make); +    /+ ↓ read file (filename with path) +/ +    /+ ↓ file tuple of header and content +/ +    auto _0_header_1_body_content_2_insert_filelist_tuple = +      SiSUmarkupRaw!()(fn_src); +    static assert(!isTypeTuple!(_0_header_1_body_content_2_insert_filelist_tuple)); +    static assert(_0_header_1_body_content_2_insert_filelist_tuple.length==3); +    debug(header_and_body) { +      writeln(header); +      writeln(_0_header_1_body_content_2_insert_filelist_tuple.length); +      writeln(_0_header_1_body_content_2_insert_filelist_tuple.length[1][0]); +    } +    /+ ↓ split header into make and meta +/ +    auto _0_make_1_dochead_meta_tuple = +      SiSUheaderExtractHub!()(_0_header_1_body_content_2_insert_filelist_tuple[0], conf_doc_make_aa); +    static assert(!isTypeTuple!(_0_make_1_dochead_meta_tuple)); +    static assert(_0_make_1_dochead_meta_tuple.length==2); +    /+ ↓ document abstraction: process document, return abstraction as tuple +/ +    auto da = SiSUdocAbstraction!()( +      (_0_header_1_body_content_2_insert_filelist_tuple[1]), +      (_0_make_1_dochead_meta_tuple[0]), +      (_0_make_1_dochead_meta_tuple[1]), +      opts +    ); +    static assert(!isTypeTuple!(da)); +    static assert(da.length==3); +    auto doc_abstraction = da[0]; // head ~ toc ~ contents ~ endnotes_seg ~ glossary ~ bibliography ~ bookindex ~blurb; +    string[][string] _document_section_keys_sequenced = da[1]; +    string[] _doc_html_segnames = da[2]; +    struct DocumentMatters { +      string[] keys_seq_seg() { +        string[] _k = _document_section_keys_sequenced["seg"]; +        return _k; +      } +      string[] keys_seq_scroll() { +        string[] _k = _document_section_keys_sequenced["scroll"]; +        return _k; +      } +      string[] segnames() { +        string[] _k = _doc_html_segnames; +        return _k; +      } +      auto dochead_make() { +        string[string][string] _k = _0_make_1_dochead_meta_tuple[0]; +        return _k; +      } +      auto dochead_meta() { +        string[string][string] _k =  _0_make_1_dochead_meta_tuple[1]; +        return _k; +      } +      auto source_filename() { +        string _k = fn_src; +        return _k; +      } +      auto file_insert_list() { +        string[] _k = _0_header_1_body_content_2_insert_filelist_tuple[2]; +        return _k; +      } +      auto opt_action_bool() { +        bool[string] _k = opts; +        return _k; +      } +    } +    auto doc_matters = DocumentMatters(); +    auto t = tuple(doc_abstraction, doc_matters); +    static assert(t.length==2); +    return t; +  } +} diff --git a/src/sdp/ao_read_config_files.d b/src/sdp/ao_read_config_files.d index 6308df2..2e1bca6 100644 --- a/src/sdp/ao_read_config_files.d +++ b/src/sdp/ao_read_config_files.d @@ -3,88 +3,122 @@    - read config files<BR>    ao_config_files.d  +/ -template SiSUconfigIn() { +template ConfigIn() {    private import +    std.algorithm, +    std.array, +    std.container,      std.exception,      std.stdio, +    std.file, +    std.path, +    std.range, +    std.regex, +    std.string, +    std.traits, +    std.typecons, +    std.uni,      std.utf,      std.conv : to; -  private -  struct ConfigIn { -    private import std.file; -    final private string readInConfigFile(string conf_sdl) { -      string dot_pwd = chainPath(to!string(environment["PWD"]), ".sisu").array; -      string underscore_pwd = chainPath(to!string(environment["PWD"]), "_sisu").array; -      string dot_home = chainPath(to!string(environment["HOME"]), ".sisu").array; -      string[] possible_config_path_locations = [ -        dot_pwd, -        underscore_pwd, -        dot_home, -        "/etc/sisu" -      ]; -      string config_file_str; -      foreach(pth; possible_config_path_locations) { -        auto conf_file = format( -          "%s/%s", -          pth, -          conf_sdl, -        ); -        try { -          if (exists(conf_file)) { -            debug(configfile) { -              writeln(conf_file); -            } -            config_file_str = readText(conf_file); -            break; +  import std.file; +  final string ConfigIn(C,E)(C conf_sdl, E env) { +    string dot_pwd = chainPath(to!string(env["pwd"]), ".sisu").array; +    string underscore_pwd = chainPath(to!string(env["pwd"]), "_sisu").array; +    string dot_home = chainPath(to!string(env["home"]), ".sisu").array; +    string[] possible_config_path_locations = [ +      dot_pwd, +      underscore_pwd, +      dot_home, +      "/etc/sisu" +    ]; +    string config_file_str; +    foreach(pth; possible_config_path_locations) { +      auto conf_file = format( +        "%s/%s", +        pth, +        conf_sdl, +      ); +      try { +        if (exists(conf_file)) { +          debug(configfile) { +            writeln(conf_file);            } -        } -        catch (ErrnoException ex) { -        } -        catch (FileException ex) { +          config_file_str = readText(conf_file); +          break;          }        } -      return config_file_str; +      catch (ErrnoException ex) { +      } +      catch (FileException ex) { +      }      } +    return config_file_str;    }  }  /+  +/ -template SiSUconfigSDLang() { -  struct ConfigSDLangRootTag { -    private auto configSDLangRootTag(string configuration, string conf_sdl_filename) { -      Tag sdl_root_conf; -      try { -        sdl_root_conf = parseSource(configuration); -      } -      catch(ParseException e) { -        stderr.writeln("SDLang problem with content for ", conf_sdl_filename); -        stderr.writeln(e.msg); -      } -      debug(sdlang) { -        Value output_dir_structure_by = sdl_root_conf.tags["output_dir_structure_by"][0].values[0]; -        assert(output_dir_structure_by.type == typeid(string)); -        writeln(output_dir_structure_by); -        writeln("conf SDL:"); -        writeln(sdl_root_conf.toSDLDocument()); -      } -      return sdl_root_conf; +template ConfigSDLang() { +  import sdlang; +  private import +    std.algorithm, +    std.array, +    std.container, +    std.exception, +    std.stdio, +    std.file, +    std.path, +    std.range, +    std.regex, +    std.string, +    std.traits, +    std.typecons, +    std.uni, +    std.utf, +    std.conv : to; +  auto ConfigSDLang(string configuration, string conf_sdl_filename) { +    Tag sdl_root_conf; +    try { +      sdl_root_conf = parseSource(configuration);      } +    catch(ParseException e) { +      stderr.writeln("SDLang problem with content for ", conf_sdl_filename); +      stderr.writeln(e.msg); +    } +    debug(sdlang) { +      Value output_dir_structure_by = sdl_root_conf.tags["output_dir_structure_by"][0].values[0]; +      assert(output_dir_structure_by.type == typeid(string)); +      writeln(output_dir_structure_by); +      writeln("conf SDL:"); +      writeln(sdl_root_conf.toSDLDocument()); +    } +    return sdl_root_conf;    }  }  /+  +/ -template SiSUconfigSDLangHub() { -  mixin SiSUconfigIn; -  mixin SiSUconfigSDLang; -  struct ConfigHub { -    final private auto configSDLang(string conf_sdl) { -      auto conf_get = ConfigIn(); -      auto configuration = conf_get.readInConfigFile(conf_sdl); -      auto conf = ConfigSDLangRootTag(); -      auto sdl_root = conf.configSDLangRootTag(configuration, conf_sdl); -      return sdl_root; -    } +template ConfigHub() { +  private import +    std.algorithm, +    std.array, +    std.container, +    std.exception, +    std.stdio, +    std.file, +    std.path, +    std.range, +    std.regex, +    std.string, +    std.traits, +    std.typecons, +    std.uni, +    std.utf, +    std.conv : to; +   +  final auto ConfigHub(C,E)(C conf_sdl, E env) { +    auto configuration = ConfigIn!()(conf_sdl, env); +    auto sdl_root = ConfigSDLang!()(configuration, conf_sdl); +    return sdl_root;    }  } diff --git a/src/sdp/ao_read_source_files.d b/src/sdp/ao_read_source_files.d index c7616a2..a6c0199 100644 --- a/src/sdp/ao_read_source_files.d +++ b/src/sdp/ao_read_source_files.d @@ -7,13 +7,19 @@ template SiSUmarkupRaw() {    private import      ao_rgx;    private import +    std.algorithm,      std.array, +    std.container,      std.exception, +    std.stdio, +    std.file,      std.path, +    std.range,      std.regex, -    std.stdio, +    std.string,      std.traits,      std.typecons, +    std.uni,      std.utf,      std.conv : to;    mixin SiSUrgxInit; @@ -55,7 +61,6 @@ template SiSUmarkupRaw() {        return t;      }    } -  private    struct MarkupRawUnit {      private import std.file;      final private string readInMarkupSource(in char[] fn_src) { | 
