diff options
Diffstat (limited to 'org/sdp.org')
-rw-r--r-- | org/sdp.org | 211 |
1 files changed, 154 insertions, 57 deletions
diff --git a/org/sdp.org b/org/sdp.org index bd0ad84..e8e100a 100644 --- a/org/sdp.org +++ b/org/sdp.org @@ -17,20 +17,34 @@ Deal with imports. Take command line instructions and process files as instructed. +** TODO version, (version.txt) set version (with structure) :version: + +#+NAME: version_txt +#+BEGIN_SRC d +struct Version { + int major; + int minor; + int patch; +} +enum ver = Version(1, 0, 0); +#+END_SRC + ** imports :import: +[[./compile_time_info.org][compile time info]] [[./ao_abstract_doc_source.org][ao_abstract_doc_source]] [[./ao_assertions.org][ao_assertions]] [[./ao_defaults.org][ao_defaults]] -[[./ao_emitters_and_interfaces.org][ao_emitters_and_interfaces: ao_emitter; ao_interface]] +[[./ao_emitter.org][ao_emitter]] [[./ao_read_markup_source.org][ao_read_markup_source]] -// [[./ao_read_markup_source.org][ao_read_markup_source]] [[./ao_object_setter.org][ao_object_setter]] [[./ao_output_debugs.org][ao_output_debugs]] [[./ao_rgx.org][ao_rgx]] [[./ao_scan_inserts.org][ao_scan_inserts]] +[[./ao_structs.org][ao_structs]] [[./ao_utils.org][ao_utils]] -#+name: sdp_imports +*** std :import:std: +#+NAME: sdp_imports #+BEGIN_SRC d /+ sdp sisu document parser +/ import @@ -50,24 +64,60 @@ import std.typecons, std.utf, // std.variant, + std.conv : to; +#+END_SRC + +*** sdp :import:sdp: +**** TODO lib/sdp.d +#+NAME: sdp_imports_use +#+BEGIN_SRC d +/+ 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; +#+END_SRC + +**** TODO lib/sdp/std.d (rdmd) :rdmd: +#+NAME: sdp_imports_rdmd +#+BEGIN_SRC d +/+ sdp sisu document parser +/ +import + compile_time_info, // compile_time_info.d + ao_abstract_doc_source, // ao_abstract_doc_source.d + ao_assertions, // ao_assertions.d + ao_defaults, // ao_defaults.d + ao_emitter, // ao_emitter.d + ao_read_markup_source, // sdp/ao_read_markup_source.d + ao_object_setter, // ao_object_setter.d + ao_output_debugs, // ao_output_debugs.d + ao_rgx, // ao_rgx.d + ao_scan_inserts, // ao_scan_inserts.d + ao_structs, // ao_structs.d + ao_utils; // ao_utils.d + // std.conv; +#+END_SRC + +*** version.txt :version: +#+NAME: sdp_version_mixin +#+BEGIN_SRC d +// import std.stdio; +mixin(import("version.txt")); #+END_SRC ** argv [+3] :argv: *** argv mixins & init -#+name: sdp_argv +#+NAME: sdp_argv #+BEGIN_SRC d mixin SiSUheader; mixin SiSUbiblio; @@ -77,10 +127,10 @@ mixin SiSUdocInserts; 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; @@ -88,47 +138,60 @@ auto dbg = new SDPoutputDebugs(); // 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"); } #+END_SRC *** argv loop -#+name: sdp_argv +#+NAME: sdp_argv #+BEGIN_SRC d 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; } } #+END_SRC @@ -136,29 +199,38 @@ foreach(cmdlnins; argv) { *** each file [+2] :file: **** filename provided [+1] ***** scope :scope: -#+name: sdp_each_file_do +#+NAME: sdp_each_file_do #+BEGIN_SRC d 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), @@ -167,9 +239,9 @@ enforce( #+END_SRC ***** read file :file:read: -[[./ao_read_markup_source.org][ao_read_markup_source]] +[[./ao_markup_source_raw.org][ao_markup_source_raw]] -#+name: sdp_each_file_do +#+NAME: sdp_each_file_do #+BEGIN_SRC d auto markup_sourcefile_content = raw.markupSourceContentRawLineArray(fn_src); // alternative call @@ -181,7 +253,10 @@ debug(insert) { 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]); } #+END_SRC @@ -189,32 +264,35 @@ debug(insert) { ****** incorporate any inserts [[./ao_scan_inserts.org][ao_scan_inserts]] -#+name: sdp_each_file_do +#+NAME: sdp_each_file_do #+BEGIN_SRC d 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); } } #+END_SRC ***** send for processing :processing: -#+name: sdp_each_file_do +#+NAME: sdp_each_file_do #+BEGIN_SRC d -/+ 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)); @@ -226,7 +304,7 @@ auto biblio = t[4]; #+END_SRC ***** debug document parts (checkdoc) -#+name: sdp_each_file_do +#+NAME: sdp_each_file_do #+BEGIN_SRC d // DocumentParts debug(checkdoc) { @@ -245,10 +323,10 @@ debug(checkdoc) { #+END_SRC ***** on exit -#+name: sdp_each_file_do +#+NAME: sdp_each_file_do #+BEGIN_SRC d scope(exit) { - destroy(msc); + destroy(markup_sourcefile_content); destroy(t); destroy(contents); destroy(make_json); @@ -260,25 +338,29 @@ scope(exit) { #+END_SRC **** no filename provided -#+name: sdp_no_filename_provided +#+NAME: sdp_no_filename_provided #+BEGIN_SRC d -/* no recognized filename provided */ +/+ no recognized filename provided +/ writeln("no recognized filename"); break; // terminate, stop #+END_SRC * tangles :tangle: -** code structure :sdp.d: -#+name: tangle_sdp +** sdp code structure :sdp.d: +*** TODO lib/sdp.d #+BEGIN_SRC d :tangle ../lib/sdp.d :shebang #!/usr/bin/env rdmd -/* +/+ sdp sdp.d -*/ ++/ <<sdp_imports>> -mixin RgxInit; mixin Interfaces; mixin Emitters; +<<sdp_imports_use>> +<<sdp_version_mixin>> +mixin CompileTimeInfo; +mixin RgxInit; mixin Emitters; void main(string[] argv) { + <<sdp_compilation>> <<sdp_argv>> foreach(fn_src; fns_src) { if (!empty(fn_src)) { @@ -289,3 +371,18 @@ void main(string[] argv) { } } #+end_src + +** version.txt :version: + +*** TODO lib/version.txt +#+BEGIN_SRC d :tangle ../lib/version.txt +/+ obt - org generated file +/ +<<version_txt>> +#+END_SRC + +*** TODO lib/sdp/version.txt :rdmd: +#+BEGIN_SRC d :tangle ../lib/sdp/version.txt +/+ obt - org generated file +/ +// [used by rdmd] +<<version_txt>> +#+END_SRC |