aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sdp/sdp.d
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sdp/sdp.d')
-rw-r--r--lib/sdp/sdp.d65
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
}
}
}