aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sdp/sdp.d
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2015-09-30 13:07:43 -0400
committerRalph Amissah <ralph@amissah.com>2015-09-30 13:12:21 -0400
commit45e96028ce7696381aca7f155c21b0b718b6a610 (patch)
treeeefcf5737cffc0d457bc433cd41ba21579076ff2 /lib/sdp/sdp.d
sdp, abstract objects, a start
Diffstat (limited to 'lib/sdp/sdp.d')
-rw-r--r--lib/sdp/sdp.d161
1 files changed, 161 insertions, 0 deletions
diff --git a/lib/sdp/sdp.d b/lib/sdp/sdp.d
new file mode 100644
index 0000000..3bfbc5b
--- /dev/null
+++ b/lib/sdp/sdp.d
@@ -0,0 +1,161 @@
+#!/usr/bin/env rdmd
+/*
+#+OPTIONS: ^:nil _:nil#+OPTIONS: ^:nil _:nil
+* sdp.d :sdp:
+*/
+import
+ std.stdio,
+ std.file,
+ 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
+import std.conv : to;
+mixin RgxInit; mixin Interfaces; mixin Emitters;
+void main(string argv[]) {
+ mixin SiSUheader;
+ mixin SiSUbiblio;
+ mixin SiSUrgxInitFlags;
+ mixin SiSUmarkupRaw;
+ mixin SiSUdocInserts;
+ mixin SiSUdocAbstraction;
+ mixin SiSUoutputDebugs;
+ mixin ScreenTxtColors;
+ auto cli = new CLI();
+ auto raw = new MarkupRaw();
+ auto abs = new Abstraction();
+ auto dbg = new SDPoutputDebugs();
+ char[][] msc;
+ string[1000] fns_src;
+ string flag_action;
+ string[string] actions;
+ int file_count;
+ actions = [
+ "assert" : "yes",
+ ];
+ auto rgx = new Rgx();
+ scope(success) {
+ debug(checkdoc) {
+ writeln(
+ scr_txt_color["cyan"],
+ "~ run complete, ok ~ ",
+ scr_txt_color["off"],
+ );
+ }
+ }
+ scope(failure) {
+ debug(checkdoc) {
+ writeln(
+ scr_txt_color["fucshia"],
+ "~ run failure ~",
+ scr_txt_color["off"],
+ );
+ }
+ }
+ 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++;
+ }
+ }
+ foreach(fn_src; fns_src) {
+ if (!empty(fn_src)) {
+ scope(success) {
+ debug(checkdoc) {
+ writeln(
+ scr_txt_color["green"],
+ "~ document complete, ok ~ ",
+ scr_txt_color["off"],
+ fn_src
+ );
+ }
+ }
+ scope(failure) {
+ debug(checkdoc) {
+ writeln(
+ scr_txt_color["red"],
+ "~ document run failure ~",
+ scr_txt_color["off"],
+ fn_src
+ );
+ }
+ }
+ auto markup_sourcefile_content =
+ raw.markupSourceContentRawLineArray(fn_src); // alternative call
+ debug(insert) {
+ string[string] sysenv;
+ sysenv["pwd"] = shell("pwd");
+ writeln(sysenv["pwd"]);
+ 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)) {
+ auto ins = new Inserts();
+ auto markup_master_sourcefile_content =
+ ins.scan_doc_source(markup_sourcefile_content, fn_src);
+ msc = markup_master_sourcefile_content;
+ } else {
+ msc = markup_sourcefile_content;
+ }
+ debug(raw) {
+ foreach (line; msc) {
+ writeln(line);
+ }
+ }
+ auto t =
+ abs.abstract_doc_source(msc);
+ static assert(!isTypeTuple!(t));
+ auto contents = t[0];
+ auto metadata_json = t[1];
+ auto make_json = t[2];
+ auto bookindex_unordered_hashes = t[3];
+ auto biblio = t[4];
+ debug(checkdoc) {
+ dbg.abstract_doc_source_debugs(
+ contents,
+ make_json,
+ metadata_json,
+ bookindex_unordered_hashes,
+ biblio,
+ fn_src,
+ actions
+ );
+ }
+ scope(exit) {
+ destroy(msc);
+ destroy(t);
+ destroy(contents);
+ destroy(make_json);
+ destroy(metadata_json);
+ destroy(bookindex_unordered_hashes);
+ destroy(fn_src);
+ destroy(biblio);
+ }
+ } else { // terminate, stop
+ }
+ }
+}