diff options
Diffstat (limited to 'lib/sdp.d')
-rwxr-xr-x | lib/sdp.d | 119 |
1 files changed, 77 insertions, 42 deletions
@@ -1,8 +1,8 @@ #!/usr/bin/env rdmd -/* +/+ sdp sdp.d -*/ ++/ /+ sdp sisu document parser +/ import std.algorithm, @@ -21,21 +21,28 @@ import std.typecons, std.utf, // std.variant, + std.conv : to; +/+ sdp sisu document parser +/ +import + lib.sdp.compile_time_info, // sdp/compile_time_info.d lib.sdp.ao_abstract_doc_source, // sdp/ao_abstract_doc_source.d lib.sdp.ao_assertions, // sdp/ao_assertions.d lib.sdp.ao_defaults, // sdp/ao_defaults.d lib.sdp.ao_emitter, // sdp/ao_emitter.d - lib.sdp.ao_interface, // sdp/ao_interface.d - lib.sdp.ao_read_markup_source, // sdp/ao_read_markup_source.d + lib.sdp.ao_read_markup_source, // sdp/ao_read_markup_source.d lib.sdp.ao_object_setter, // sdp/ao_object_setter.d lib.sdp.ao_output_debugs, // sdp/ao_output_debugs.d lib.sdp.ao_rgx, // sdp/ao_rgx.d lib.sdp.ao_scan_inserts, // sdp/ao_scan_inserts.d + lib.sdp.ao_structs, // sdp/ao_structs.d lib.sdp.ao_utils; // sdp/ao_utils.d // std.conv; -import std.conv : to; -mixin RgxInit; mixin Interfaces; mixin Emitters; +// import std.stdio; +mixin(import("version.txt")); +mixin CompileTimeInfo; +mixin RgxInit; mixin Emitters; void main(string[] argv) { + mixin SiSUheader; mixin SiSUbiblio; mixin SiSUrgxInitFlags; @@ -44,10 +51,10 @@ void main(string[] argv) { mixin SiSUdocAbstraction; mixin SiSUoutputDebugs; mixin ScreenTxtColors; - auto cli = new CLI(); - auto raw = new MarkupRaw(); - auto abs = new Abstraction(); - auto dbg = new SDPoutputDebugs(); + auto cli = CLI(); + auto raw = MarkupRaw(); + auto abs = Abstraction(); + auto dbg = SDPoutputDebugs(); // struct DocumentParts { // string[string][] contents; // JSONValue[string] metadata_json; @@ -55,67 +62,89 @@ void main(string[] argv) { // string[][string][string] bookindex_unordered_hashes; // JSONValue[] biblio; // } - char[][] msc; - string[1000] fns_src; + string[] fns_src; string flag_action; string[string] actions; - int file_count; actions = [ "assert" : "yes", ]; - auto rgx = new Rgx(); + auto rgx = Rgx(); scope(success) { debug(checkdoc) { - writeln( + writefln( + "%s~ run complete, ok ~ %s (sdp-%s.%s.%s, %s v%s, %s %s)", scr_txt_color["cyan"], - "~ run complete, ok ~ ", scr_txt_color["off"], + ver.major, + ver.minor, + ver.patch, + __VENDOR__, + __VERSION__, + bits, + os, ); } - // writeln("0"); + // stderr.writeln("0"); } scope(failure) { - debug(checkdoc) { - writeln( + debug(checkdoc) { + writefln( + "%s~ run failure ~%s", scr_txt_color["fuchsia"], - "~ run failure ~", scr_txt_color["off"], + ); + } + // stderr.writeln("1"); + } + scope(exit) { + debug(checkdoc) { + writefln( + "(%s v%s)", + __VENDOR__, + __VERSION__, ); } - // writeln("1"); } foreach(cmdlnins; argv) { if (match(cmdlnins, rgx.flag_action)) { flag_action ~= " " ~ cmdlnins; actions = cli.extract_actions(cmdlnins, actions); } else if (match(cmdlnins, rgx.src_pth)) { - fns_src[file_count] = cmdlnins; - file_count++; + fns_src ~= cmdlnins; } } foreach(fn_src; fns_src) { if (!empty(fn_src)) { scope(success) { debug(checkdoc) { - writeln( + writefln( + "%s~ document complete, ok ~%s %s", scr_txt_color["green"], - "~ document complete, ok ~ ", scr_txt_color["off"], fn_src ); } - // writeln("0"); + // stderr.writeln("0"); } scope(failure) { debug(checkdoc) { - writeln( + writefln( + "%s~ document run failure ~%s (%s v%s)\n\t%s", scr_txt_color["red"], - "~ document run failure ~", scr_txt_color["off"], + __VENDOR__, + __VERSION__, + fn_src + ); + } + // stderr.writeln("1"); + } + scope(exit) { + debug(checkdoc) { + writeln( fn_src ); } - // writeln("1"); } enforce( match(fn_src, rgx.src_pth), @@ -131,28 +160,34 @@ void main(string[] argv) { 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]); + writefln( + "markup source file path: %s", + 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 = + /+ if master file .ssm + scan document source for document imports + (inserted sub-documents) + +/ + auto ins = Inserts(); + markup_sourcefile_content = ins.scan_doc_source(markup_sourcefile_content, fn_src); - msc = markup_master_sourcefile_content; - } else if (match(fn_src, rgx.src_fn)) { - msc = markup_sourcefile_content; - } else { + } else if (!match(fn_src, rgx.src_fn)) { writeln("not a recognized filename"); } debug(raw) { - foreach (line; msc) { + foreach (line; markup_sourcefile_content) { writeln(line); } } - /+ process document ao_abstract_doc_source SiSUdocAbstraction::Abstraction return abstraction as tuple +/ + /+ process document ao_abstract_doc_source + SiSUdocAbstraction::Abstraction + return abstraction as tuple + +/ auto t = - abs.abstract_doc_source(msc); + abs.abstract_doc_source(markup_sourcefile_content); static assert(!isTypeTuple!(t)); auto contents = t[0]; // static assert(!isIterable!(contents)); @@ -176,7 +211,7 @@ void main(string[] argv) { // compose abstract document markup state // append book index scope(exit) { - destroy(msc); + destroy(markup_sourcefile_content); destroy(t); destroy(contents); destroy(make_json); @@ -186,7 +221,7 @@ void main(string[] argv) { destroy(biblio); } } else { - /* no recognized filename provided */ + /+ no recognized filename provided +/ writeln("no recognized filename"); break; // terminate, stop |