diff options
author | Ralph Amissah <ralph@amissah.com> | 2015-10-20 18:52:12 -0400 |
---|---|---|
committer | Ralph Amissah <ralph@amissah.com> | 2015-10-20 22:13:25 -0400 |
commit | 4b0c115b58211dcc063bcd09f8fe122e558b92ce (patch) | |
tree | b60e38935a4f5fbd723c13a5035d952976c851bf /org/ao_scan_inserts.org | |
parent | update minor (diff) |
literate programming introduced, tangle not yet run
Diffstat (limited to 'org/ao_scan_inserts.org')
-rw-r--r-- | org/ao_scan_inserts.org | 281 |
1 files changed, 281 insertions, 0 deletions
diff --git a/org/ao_scan_inserts.org b/org/ao_scan_inserts.org new file mode 100644 index 0000000..cd5c169 --- /dev/null +++ b/org/ao_scan_inserts.org @@ -0,0 +1,281 @@ +#+TITLE: Emacs config file written in org-mode +#+AUTHOR: Ralph Amissah +#+EMAIL: ralph.amissah@gmail.com +#+STARTUP: indent +#+LANGUAGE: en +#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil -:t f:t *:t <:t +#+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc +#+OPTIONS: author:nil email:nil creator:nil timestamp:nil +#+OPTIONS: ^:nil _:nil#+OPTIONS: ^:nil _:nil +#+EXPORT_SELECT_TAGS: export +#+EXPORT_EXCLUDE_TAGS: noexport +#+TAGS: Amissah(A) Class(c) WEB(W) noexport(n) + +* inserts +** scan inserts (sub-document) source +*** scan subdoc source +#+name: ao_inserts_scan +#+BEGIN_SRC d :exports none +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]; +#+end_src +*** loop insert (sub-document) +#+name: ao_inserts_scan_loop +#+BEGIN_SRC d :exports none +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 +*** post loop +#+name: ao_inserts_scan_post +#+BEGIN_SRC d :exports none +auto contents_ = cont_arbitrary_max_length_set_[0 .. counter["add"]].dup; +auto t = tuple(contents_, add); +return t; +#+end_src +** scan document source +*** scan doc source +#+name: ao_doc_scan +#+BEGIN_SRC d :exports none +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]; +#+end_src +*** loop insert (document) +#+name: ao_doc_scan_loop +#+BEGIN_SRC d :exports none +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 +*** post loop +#+name: ao_doc_scan_post +#+BEGIN_SRC d :exports none +auto contents = cont_arbitrary_max_length_set[0..add].dup; +debug(insert) { // insert file + writeln(__LINE__); + writeln(contents.length); + writeln(add); +} +return contents; +#+end_src + +* tangles +** code structure: :ao_inserts.d: +#+name: tangle_ao_inserts +#+BEGIN_SRC d :tangle ../lib/sdp/ao_scan_inserts.d :exports none :noweb yes +/* + inserts + ao_inserts.d +*/ +mixin template SiSUdocInserts() { + class Inserts { + auto scan_subdoc_source( + char[][] markup_sourcefile_insert_content, string fn_src, int add + ) { + <<ao_inserts_scan>> + foreach (line; markup_sourcefile_insert_content) { + <<ao_inserts_scan_loop>> + } // end src subdoc (inserts) loop + <<ao_inserts_scan_post>> + } + auto scan_doc_source(char[][] markup_sourcefile_content, string fn_src) { + <<ao_doc_scan>> + foreach (line; markup_sourcefile_content) { + <<ao_doc_scan_loop>> + } // end src doc loop + <<ao_doc_scan_post>> + } + } +} +#+end_src |