aboutsummaryrefslogtreecommitdiffhomepage
path: root/org/ao_scan_inserts.org
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2015-10-20 18:52:12 -0400
committerRalph Amissah <ralph@amissah.com>2015-10-20 22:13:25 -0400
commit4b0c115b58211dcc063bcd09f8fe122e558b92ce (patch)
treeb60e38935a4f5fbd723c13a5035d952976c851bf /org/ao_scan_inserts.org
parentupdate minor (diff)
literate programming introduced, tangle not yet run
Diffstat (limited to 'org/ao_scan_inserts.org')
-rw-r--r--org/ao_scan_inserts.org281
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