diff options
Diffstat (limited to 'lib/sdp/sdp.d')
-rw-r--r-- | lib/sdp/sdp.d | 65 |
1 files changed, 49 insertions, 16 deletions
diff --git a/lib/sdp/sdp.d b/lib/sdp/sdp.d index 27fb169..6c10a83 100644 --- a/lib/sdp/sdp.d +++ b/lib/sdp/sdp.d @@ -1,34 +1,37 @@ #!/usr/bin/env rdmd /* -#+OPTIONS: ^:nil _:nil#+OPTIONS: ^:nil _:nil -* sdp.d :sdp: + sdp + sdp.d */ import std.stdio, std.file, + std.exception, + // std.path, std.regex, std.utf, std.string, std.array, std.json, std.process, - std.exception, std.typecons, std.algorithm, std.range, std.container, std.traits, - lib.sdp.ao_output_debugs, // ao_output_debugs.d - lib.sdp.ao_defaults, // ao_defaults.d - lib.sdp.ao_rgx, // ao_rgx.d - lib.sdp.ao_interface, // ao_interface.d - lib.sdp.ao_emitter, // ao_emitter.d - lib.sdp.ao_scan_inserts, // ao_scan_inserts.d - lib.sdp.ao_markup_source_raw, // ao_markup_source_raw.d - lib.sdp.ao_abstract_doc_source, // ao_abstract_doc_source.d - lib.sdp.ao_assertions, // ao_assertions.d - lib.sdp.ao_object_setter, // ao_object_setter.d - lib.sdp.ao_utils; // ao_utils.d + // std.variant, + lib.sdp.ao_output_debugs, // ao_output_debugs.d ao_output_debugs.org + lib.sdp.ao_defaults, // ao_defaults.d ao_defaults.arg + lib.sdp.ao_rgx, // ao_rgx.d ao_rgx.org + lib.sdp.ao_interface, // ao_interface.d ao_interface.arg + lib.sdp.ao_emitter, // ao_emitter.d ao_emitter.org + lib.sdp.ao_scan_inserts, // ao_scan_inserts.d ao_scan_inserts.org + lib.sdp.ao_markup_source_raw, // ao_markup_source_raw.d ao_markup_source_raw.org + lib.sdp.ao_abstract_doc_source, // ao_abstract_doc_source.d ao_abstract_doc_source.org + lib.sdp.ao_assertions, // ao_assertions.d ao_assertions.org + lib.sdp.ao_object_setter, // ao_object_setter.d ao_object_setter.org + lib.sdp.ao_utils; // ao_utils.d ao_utils.org + // std.conv; import std.conv : to; mixin RgxInit; mixin Interfaces; mixin Emitters; void main(string[] argv) { @@ -44,6 +47,13 @@ void main(string[] argv) { auto raw = new MarkupRaw(); auto abs = new Abstraction(); auto dbg = new SDPoutputDebugs(); + // struct DocumentParts { + // string[string][] contents; + // JSONValue[string] metadata_json; + // JSONValue[string] make_json; + // string[][string][string] bookindex_unordered_hashes; + // JSONValue[] biblio; + // } char[][] msc; string[1000] fns_src; string flag_action; @@ -61,6 +71,7 @@ void main(string[] argv) { scr_txt_color["off"], ); } + // writeln("0"); } scope(failure) { debug(checkdoc) { @@ -70,6 +81,7 @@ void main(string[] argv) { scr_txt_color["off"], ); } + // writeln("1"); } foreach(cmdlnins; argv) { if (match(cmdlnins, rgx.flag_action)) { @@ -91,6 +103,7 @@ void main(string[] argv) { fn_src ); } + // writeln("0"); } scope(failure) { debug(checkdoc) { @@ -101,39 +114,53 @@ void main(string[] argv) { fn_src ); } + // writeln("1"); } + enforce( + match(fn_src, rgx.src_pth), + "not a sisu markup filename" + ); auto markup_sourcefile_content = raw.markupSourceContentRawLineArray(fn_src); // alternative call + // raw.markupSourceLineArray(raw.markupSourceString(fn_src)); // alternative calls (milliseconds faster?) debug(insert) { string[string] sysenv; sysenv["pwd"] = shell("pwd"); writeln(sysenv["pwd"]); auto m = match(fn_src, rgx.src_pth); + // auto m = match(fn_src, rgx.src_pth); auto markup_src_file_path = m.captures[1]; writeln("markup source file path: ", markup_src_file_path); // writeln(m.captures[1]); writeln(m.captures[2]); } if (match(fn_src, rgx.src_fn_master)) { + /* if master file scan document source for document imports (inserted sub-documents) */ auto ins = new Inserts(); auto markup_master_sourcefile_content = ins.scan_doc_source(markup_sourcefile_content, fn_src); msc = markup_master_sourcefile_content; - } else { + } else if (match(fn_src, rgx.src_fn)) { msc = markup_sourcefile_content; + } else { + writeln("not a recognized filename"); } debug(raw) { foreach (line; msc) { writeln(line); } } + /* process document ao_abstract_doc_source SiSUdocAbstraction::Abstraction return abstraction as tuple */ auto t = abs.abstract_doc_source(msc); static assert(!isTypeTuple!(t)); auto contents = t[0]; + // static assert(!isIterable!(contents)); auto metadata_json = t[1]; auto make_json = t[2]; auto bookindex_unordered_hashes = t[3]; auto biblio = t[4]; + // destroy(t); + // DocumentParts debug(checkdoc) { dbg.abstract_doc_source_debugs( contents, @@ -145,6 +172,8 @@ void main(string[] argv) { actions ); } + // compose abstract document markup state + // append book index scope(exit) { destroy(msc); destroy(t); @@ -155,7 +184,11 @@ void main(string[] argv) { destroy(fn_src); destroy(biblio); } - } else { // terminate, stop + } else { + /* no recognized filename provided */ + writeln("no recognized filename"); + break; + // terminate, stop } } } |