aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sdp/ao_scan_inserts.d
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sdp/ao_scan_inserts.d')
-rw-r--r--lib/sdp/ao_scan_inserts.d229
1 files changed, 229 insertions, 0 deletions
diff --git a/lib/sdp/ao_scan_inserts.d b/lib/sdp/ao_scan_inserts.d
new file mode 100644
index 0000000..e99222a
--- /dev/null
+++ b/lib/sdp/ao_scan_inserts.d
@@ -0,0 +1,229 @@
+/*
+#+OPTIONS: ^:nil _:nil#+OPTIONS: ^:nil _:nil
+* sisu_scan_inserts.d
+*/
+mixin template SiSUdocInserts() {
+ class Inserts {
+ auto scan_subdoc_source(
+ char[][] markup_sourcefile_insert_content, string fn_src, int add
+ ) {
+ char[][100000] cont_arbitrary_max_length_set_;
+ auto ft0 = flag_type.dup;
+ auto ft1 = flag_type.dup;
+ string[string] processing;
+ uint[string] line_occur;
+ auto obj_im = new ObjInlineMarkup();
+ auto obj_att = new ObjAttrib();
+ int[string] counter; counter["add"]=0;
+ mixin ScreenTxtColors;
+ auto rgx = new Rgx();
+ int tell_l(string color, in char[] line) {
+ writeln(scr_txt_marker[color], line);
+ return 0;
+ }
+ auto fn_pth_full = match(fn_src, rgx.src_pth);
+ auto markup_src_file_path = fn_pth_full.captures[1];
+ foreach (line; markup_sourcefile_insert_content) {
+ if (ft1["curly_code"] == 1) {
+ ft1["header_make"] = 0;
+ ft1["header_metadata"] = 0;
+ if (auto m = match(line, rgx.block_curly_code_close)) {
+ ft1["curly_code"] = 0;
+ }
+ cont_arbitrary_max_length_set_[counter["add"]] = line;
+ ++counter["add"]; ++add;
+ } else if (auto m = match(line, rgx.block_curly_code_open)) {
+ ft1["curly_code"] = 1;
+ ft1["header_make"] = 0;
+ ft1["header_metadata"] = 0;
+ cont_arbitrary_max_length_set_[counter["add"]] = line;
+ ++counter["add"]; ++add;
+ } else if (ft1["tic_code"] == 1) {
+ ft1["header_make"] = 0;
+ ft1["header_metadata"] = 0;
+ if (auto m = match(line, rgx.block_tic_close)) {
+ ft1["tic_code"] = 0;
+ }
+ cont_arbitrary_max_length_set_[counter["add"]] = line;
+ ++counter["add"]; ++add;
+ } else if (auto m = match(line, rgx.block_tic_code_open)) {
+ ft1["tic_code"] = 1;
+ ft1["header_make"] = 0;
+ ft1["header_metadata"] = 0;
+ cont_arbitrary_max_length_set_[counter["add"]] = line;
+ ++counter["add"]; ++add;
+ } else if (
+ (ft1["header_make"] == 1) && (line_occur["header_make"] > 0)
+ && match(line, rgx.header_sub)
+ ) {
+ ft1["header_make"] = 1;
+ ft1["header_metadata"] = 0;
+ ++line_occur["header_make"];
+ ++counter["add"];
+ } else if (
+ (ft1["header_metadata"] == 1) && (line_occur["header_metadata"] > 0)
+ && match(line, rgx.header_sub)
+ ) {
+ ft1["header_metadata"] = 1;
+ ft1["header_make"] = 0;
+ ++line_occur["header_metadata"];
+ ++counter["add"];
+ } else if (auto m = match(line, rgx.insert_src_fn_ssi_or_sst)) {
+ ft1["header_make"] = 0;
+ ft1["header_metadata"] = 0;
+ auto insert_fn = m.captures[2];
+ auto insert_sub_pth = m.captures[1];
+ auto fn_src_insert =
+ (markup_src_file_path ~ insert_sub_pth ~ insert_fn);
+ auto raw = new MarkupInsertRaw();
+ auto markup_sourcesubfile_insert_content =
+ raw.markupSourceContentRawLineArray(fn_src_insert);
+ debug(insert) { // insert file
+ tell_l("red", line);
+ tell_l("red", fn_src_insert);
+ tell_l("fuchsia", "ERROR");
+ writeln(
+ " length contents insert array: ",
+ markup_sourcesubfile_insert_content.length
+ );
+ }
+ auto ins = new Inserts();
+ /*
+ 1. load file,
+ 2. read lines;
+ 3. scan lines,
+ 4. if filename insert, and insert filename
+ 5. repeat 1
+ 6. else
+ 7. add line to new array;
+ */
+ } else {
+ ft1["header_make"] = 0;
+ ft1["header_metadata"] = 0;
+ cont_arbitrary_max_length_set_[counter["add"]] = line;
+ ++counter["add"]; ++add;
+ }
+ }
+ auto contents_ = cont_arbitrary_max_length_set_[0 .. counter["add"]].dup;
+ auto t = tuple(contents_, add);
+ return t;
+ }
+ auto scan_doc_source(char[][] markup_sourcefile_content, string fn_src) {
+ char[] cont_arbitrary_max_length_set[100000]; // 2000 pg * 50 lines
+ string[string] processing;
+ uint[string] line_occur;
+ auto obj_im = new ObjInlineMarkup();
+ auto obj_att = new ObjAttrib();
+ auto ft = flag_type.dup;
+ int add;
+ mixin ScreenTxtColors;
+ auto rgx = new Rgx();
+ int tell_l(string color, in char[] line) {
+ writeln(scr_txt_marker[color], line);
+ return 0;
+ }
+ auto fn_pth_full = match(fn_src, rgx.src_pth);
+ auto markup_src_file_path = fn_pth_full.captures[1];
+ foreach (line; markup_sourcefile_content) {
+ if (ft["curly_code"] == 1) {
+ ft["header_make"] = 0;
+ ft["header_metadata"] = 0;
+ if (auto m = match(line, rgx.block_curly_code_close)) {
+ ft["curly_code"] = 0;
+ }
+ cont_arbitrary_max_length_set[add] = line;
+ ++add;
+ } else if (auto m = match(line, rgx.block_curly_code_open)) {
+ ft["curly_code"] = 1;
+ ft["header_make"] = 0;
+ ft["header_metadata"] = 0;
+ cont_arbitrary_max_length_set[add] = line;
+ ++add;
+ } else if (ft["tic_code"] == 1) {
+ ft["header_make"] = 0;
+ ft["header_metadata"] = 0;
+ if (auto m = match(line, rgx.block_tic_close)) {
+ ft["tic_code"] = 0;
+ }
+ cont_arbitrary_max_length_set[add] = line;
+ ++add;
+ } else if (auto m = match(line, rgx.block_tic_code_open)) {
+ ft["tic_code"] = 1;
+ ft["header_make"] = 0;
+ ft["header_metadata"] = 0;
+ cont_arbitrary_max_length_set[add] = line;
+ } else if ((ft["header_make"] == 1)
+ && (line_occur["header_make"] > 0)
+ && match(line, rgx.header_sub)) {
+ ++line_occur["header_make"];
+ cont_arbitrary_max_length_set[add] = line;
+ ++add;
+ } else if ((ft["header_metadata"] == 1)
+ && (line_occur["header_metadata"] > 0)
+ && match(line, rgx.header_sub)) {
+ ++line_occur["header_metadata"];
+ cont_arbitrary_max_length_set[add] = line;
+ ++add;
+ } else if (auto m = match(line, rgx.header_make)) {
+ ft["header_make"] = 1;
+ ++line_occur["header_make"];
+ cont_arbitrary_max_length_set[add] = line;
+ ++add;
+ } else if (auto m = match(line, rgx.header_metadata)) {
+ ft["header_metadata"] = 1;
+ ++line_occur["header_metadata"];
+ cont_arbitrary_max_length_set[add] = line;
+ ++add;
+ } else if (auto m = match(line, rgx.insert_src_fn_ssi_or_sst)) {
+ ft["header_make"] = 0;
+ ft["header_metadata"] = 0;
+ auto insert_fn = m.captures[2];
+ auto insert_sub_pth = m.captures[1];
+ auto fn_src_insert =
+ (markup_src_file_path ~ insert_sub_pth ~ insert_fn);
+ auto raw = new MarkupInsertRaw();
+ auto markup_sourcefile_insert_content =
+ raw.markupSourceContentRawLineArray(fn_src_insert);
+ debug(insert) { // insert file
+ tell_l("red", line);
+ tell_l("red", fn_src_insert);
+ writeln(
+ " length contents insert array: ",
+ markup_sourcefile_insert_content.length
+ );
+ }
+ auto ins = new Inserts();
+ auto t = ins.scan_subdoc_source(
+ markup_sourcefile_insert_content, to!string(fn_src_insert), add
+ );
+ static assert(!isTypeTuple!(t));
+ auto tmparr = t[0];
+ auto addsub = t[1];
+ cont_arbitrary_max_length_set[add .. addsub-1] = tmparr[0 .. $-1];
+ add=addsub;
+ /*
+ 1. load file,
+ 2. read lines;
+ 3. scan lines,
+ 4. if filename insert, and insert filename
+ 5. repeat 1
+ 6. else
+ 7. add line to new array;
+ */
+ } else {
+ ft["header_make"] = 0;
+ ft["header_metadata"] = 0;
+ cont_arbitrary_max_length_set[add] = line;
+ ++add;
+ }
+ }
+ auto contents = cont_arbitrary_max_length_set[0..add].dup;
+ debug(insert) { // insert file
+ writeln(__LINE__);
+ writeln(contents.length);
+ writeln(add);
+ }
+ return contents;
+ }
+ }
+}