/+ inserts ao_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 MarkupRaw(); auto markup_sourcesubfile_insert_content = raw.markupInsertSourceContentRawLineArray(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; } } // end src subdoc (inserts) loop 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[][100000] cont_arbitrary_max_length_set; // 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 MarkupRaw(); auto markup_sourcefile_insert_content = raw.markupInsertSourceContentRawLineArray(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; } } // end src doc loop auto contents = cont_arbitrary_max_length_set[0..add].dup; debug(insert) { // insert file writeln(__LINE__); writeln(contents.length); writeln(add); } return contents; } } }