aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--org/ao_abstract_doc_source.org469
-rw-r--r--org/ao_conf_make_meta.org199
-rw-r--r--org/ao_defaults.org53
-rw-r--r--org/ao_output_debugs.org65
-rw-r--r--org/ao_read_source_files.org273
-rw-r--r--org/compile_time_info.org25
-rw-r--r--org/output.org158
-rw-r--r--org/sdp.org129
-rw-r--r--src/sdp/ao_abstract_doc_source.d6
-rw-r--r--views/version.txt2
10 files changed, 729 insertions, 650 deletions
diff --git a/org/ao_abstract_doc_source.org b/org/ao_abstract_doc_source.org
index 724e44a..da435a1 100644
--- a/org/ao_abstract_doc_source.org
+++ b/org/ao_abstract_doc_source.org
@@ -13,8 +13,147 @@
#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
[[./sdp.org][sdp]] [[./][org/]]
+* 0. Code Outline / Structure (tangles) :tangle:io:file:
+** 1. ao abstract doc source: :ao_abstract_doc_source.d:
-* Document Abstraction :abstract:process:
+#+BEGIN_SRC d :tangle ../src/sdp/ao_abstract_doc_source.d
+/++
+ document abstraction:
+ abstraction of sisu markup for downstream processing
+ ao_abstract_doc_source.d
++/
+template SiSUdocAbstraction() {
+ private:
+ struct Abstraction {
+ /+ ↓ abstraction imports +/
+ <<abs_imports>>
+ /+ ↓ abstraction mixins +/
+ <<abs_mixins>>
+ /+ ↓ abstraction struct init +/
+ <<abs_init_struct>>
+ /+ ↓ abstract marked up document +/
+ auto abstract_doc_source(
+ char[][] markup_sourcefile_content,
+ string[string][string] dochead_make_aa,
+ string[string][string] dochead_meta_aa,
+ bool[string] opt_action_bool,
+ ) {
+ /+ ↓ abstraction init +/
+ <<abs_init_rest>>
+ /+ abstraction init ↑ +/
+ /+ ↓ loop markup document/text line by line +/
+ srcDocLoop:
+ foreach (line; markup_sourcefile_content) {
+ /+ ↓ markup document/text line by line +/
+ <<abs_in_loop_body_00>>
+ if (type["code"] == TriState.on) {
+ <<abs_in_loop_body_00_code_block>>
+ } else if (!matchFirst(line, rgx.skip_from_regular_parse)) {
+ /+ object other than "code block" object
+ (includes regular text paragraph, headings & blocks other than code) +/
+ <<abs_in_loop_body_non_code_obj>>
+ } else {
+ /+ not within a block group +/
+ <<abs_in_loop_body_open_block_obj_assert>>
+ if (matchFirst(line, rgx.block_open)) {
+ <<abs_in_loop_body_open_block_obj>>
+ } else if (!line.empty) {
+ /+ line not empty +/
+ /+ non blocks (headings, paragraphs) & closed blocks +/
+ <<abs_in_loop_body_not_block_obj>>
+ } else if (type["blocks"] == TriState.closing) {
+ /+ line empty, with blocks flag +/
+ <<abs_in_loop_body_not_block_obj_line_empty_blocks_flags>>
+ } else {
+ /+ line.empty, post contents, empty variables: +/
+ <<abs_in_loop_body_not_block_obj_line_empty>>
+ } // close else for line empty
+ } // close else for not the above
+ } // close after non code, other blocks or regular text
+ <<abs_in_loop_body_01>>
+ } /+ ← closed: loop markup document/text line by line +/
+ /+ ↓ post loop markup document/text +/
+ <<abs_post>>
+ /+ post loop markup document/text ↑ +/
+ } /+ ← closed: abstract doc source +/
+ /+ ↓ abstraction functions +/
+ <<abs_functions_object_reset>>
+ <<abs_functions_header_set_common>>
+ <<abs_functions_ocn_status>>
+ <<abs_functions_block>>
+ <<abs_functions_block_code>>
+ <<abs_functions_block_biblio>>
+ <<abs_functions_block_poem>>
+ <<abs_functions_block_group>>
+ <<abs_functions_block_block>>
+ <<abs_functions_block_quote>>
+ <<abs_functions_block_table>>
+ <<abs_functions_block_line_status_empty>>
+ <<abs_functions_book_index>>
+ <<abs_functions_heading>>
+ <<abs_functions_para>>
+ /+ abstraction functions ↑ +/
+ /+ ↓ abstraction function emitters +/
+ <<ao_emitters_ocn>>
+ /+ +/
+ <<ao_emitters_obj_inline_markup_munge>>
+ <<ao_emitters_obj_inline_markup>>
+ <<ao_emitters_obj_inline_markup_and_anchor_tags>>
+ <<ao_emitters_obj_inline_markup_table_of_contents>>
+ <<ao_emitters_obj_inline_markup_private>>
+ <<ao_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags>>
+ <<ao_emitters_obj_inline_markup_close>>
+ /+ +/
+ <<ao_emitters_obj_attributes>>
+ <<ao_emitters_obj_attributes_public>>
+ <<ao_emitters_obj_attributes_private>>
+ <<ao_emitters_obj_attributes_private_an_attribute>>
+ <<ao_emitters_obj_attributes_private_json>>
+ <<ao_emitters_obj_attributes_private_close>>
+ /+ +/
+ <<ao_emitters_book_index_nugget>>
+ <<ao_emitters_book_index_report_indented>>
+ <<ao_emitters_book_index_report_section>>
+ /+ +/
+ <<ao_emitters_endnotes>>
+ /+ +/
+ <<ao_emitters_bibliography>>
+ /+ +/
+ <<ao_emitters_metadata>>
+ /+ abstraction functions emitters ↑ +/
+ /+ ↓ abstraction functions assertions +/
+ <<abs_functions_assertions>>
+ /+ abstraction functions assertions ↑ +/
+ } /+ ← closed: struct Abstraction +/
+} /+ ← closed: template SiSUdocAbstraction +/
+#+END_SRC
+
+** 2. ao object setter: :ao_object_setter.d:
+
+#+BEGIN_SRC d :tangle ../src/sdp/ao_object_setter.d
+/++
+ object setter:
+ setting of sisu objects for downstream processing
+ ao_object_setter.d
++/
+template ObjectSetter() {
+ /+ structs +/
+ <<ao_structs_init>>
+ /+ structs setter +/
+ struct ObjectAbstractSet {
+ import std.conv : to;
+ <<ao_object_setter_comment>>
+ <<ao_object_setter_heading>>
+ <<ao_object_setter_para>>
+ <<ao_object_setter_endnote>>
+ <<ao_object_setter_block>>
+ <<ao_object_setter_block_code>>
+ <<ao_object_setter_block_obj_cite_number_string>>
+ }
+}
+#+END_SRC
+
+* 1. Document Abstraction :abstract:process:
Process markup document, create document abstraction.
** _1. pre loop processing_ :pre:
@@ -1385,12 +1524,12 @@ auto t = tuple(
return t;
#+END_SRC
-* Functions :abstract:function:
+** 4. Functions :abstract:function:
functions used in document abstraction
-** set & resets :reset:
-*** object reset: remove (clean) :object:remove:
+*** set & resets :reset:
+**** object reset: remove (clean) :object:remove:
#+name: abs_functions_object_reset
#+BEGIN_SRC d
@@ -1403,7 +1542,7 @@ auto object_reset(ref string[string] an_object) {
}
#+END_SRC
-*** set, initialize or re-initialize :set:
+**** set, initialize or re-initialize :set:
#+name: abs_functions_header_set_common
#+BEGIN_SRC d
@@ -1420,7 +1559,7 @@ auto _common_reset_(
}
#+END_SRC
-** check obj_cite_number status in document :ocn:
+*** check obj_cite_number status in document :ocn:
#+name: abs_functions_ocn_status
#+BEGIN_SRC d
@@ -1470,9 +1609,9 @@ void _check_obj_cite_number_status_(
}
#+END_SRC
-** block :block:
-*** block start (open) block :start:
-**** function open for block starts
+*** block :block:
+**** block start (open) block :start:
+***** function open for block starts
#+name: abs_functions_block
#+BEGIN_SRC d
@@ -1483,7 +1622,7 @@ void _start_block_(
) {
#+END_SRC
-**** block (various) curly open :curly:
+***** block (various) curly open :curly:
#+name: abs_functions_block
#+BEGIN_SRC d
@@ -1558,7 +1697,7 @@ void _start_block_(
type["curly_table"] = TriState.on;
#+END_SRC
-**** block (various) tic open :tic:
+***** block (various) tic open :tic:
#+name: abs_functions_block
#+BEGIN_SRC d
@@ -1633,15 +1772,15 @@ void _start_block_(
}
#+END_SRC
-**** function close for block starts
+***** function close for block starts
#+name: abs_functions_block
#+BEGIN_SRC d
}
#+END_SRC
-*** block continue (an open block) :continue:
-**** code block (special status, deal with first) :code:
+**** block continue (an open block) :continue:
+***** code block (special status, deal with first) :code:
#+name: abs_functions_block_code
#+BEGIN_SRC d
@@ -1682,9 +1821,9 @@ void _code_block_(
}
#+END_SRC
-**** biblio block :biblio:
+***** biblio block :biblio:
-***** biblio tag map
+****** biblio tag map
#+name: abs_functions_block_biblio
#+BEGIN_SRC d
@@ -1709,7 +1848,7 @@ final string biblio_tag_map(string abr) {
}
#+END_SRC
-****** +consider+
+******* +consider+
#+name: none
#+BEGIN_SRC d
@@ -1766,7 +1905,7 @@ final string biblio_tag_map_(string abr) {
}
#+END_SRC
-***** biblio block
+****** biblio block
#+name: abs_functions_block_biblio
#+BEGIN_SRC d
@@ -1891,7 +2030,7 @@ void _biblio_block_(
}
#+END_SRC
-**** TODO poem block, verse objects :poem:verse:
+***** TODO poem block, verse objects :poem:verse:
why extra object stuff only in poem/verse?
@@ -2100,7 +2239,7 @@ void _poem_block_(
}
#+END_SRC
-**** group block :group:
+***** group block :group:
#+name: abs_functions_block_group
#+BEGIN_SRC d
@@ -2141,7 +2280,7 @@ void _group_block_(
}
#+END_SRC
-**** block block :block:
+***** block block :block:
#+name: abs_functions_block_block
#+BEGIN_SRC d
@@ -2182,7 +2321,7 @@ void _block_block_(
}
#+END_SRC
-**** quote block :quote:
+***** quote block :quote:
#+name: abs_functions_block_quote
#+BEGIN_SRC d
@@ -2223,7 +2362,7 @@ void _quote_block_(
}
#+END_SRC
-**** table block :table:
+***** table block :table:
#+name: abs_functions_block_table
#+BEGIN_SRC d
@@ -2264,7 +2403,7 @@ void _table_block_(
}
#+END_SRC
-*** block end (close an open block): line empty, block flag :close:
+**** block end (close an open block): line empty, block flag :close:
#+name: abs_functions_block_line_status_empty
#+BEGIN_SRC d
@@ -2508,7 +2647,7 @@ void _block_flag_line_empty_(
}
#+END_SRC
-** book index :bookindex:
+*** book index :bookindex:
#+name: abs_functions_book_index
#+BEGIN_SRC d
@@ -2563,8 +2702,8 @@ auto _book_index_(
}
#+END_SRC
-** heading or paragraph :heading:paragraph:
-*** heading found :heading:
+*** heading or paragraph :heading:paragraph:
+**** heading found :heading:
#+name: abs_functions_heading
#+BEGIN_SRC d
@@ -2654,7 +2793,7 @@ auto _heading_found_(
}
#+END_SRC
-*** TODO heading make set :heading:
+**** TODO heading make set :heading:
#+name: abs_functions_heading
#+BEGIN_SRC d
@@ -2716,7 +2855,7 @@ auto _heading_make_set_(
}
#+END_SRC
-*** heading match :heading:
+**** heading match :heading:
#+name: abs_functions_heading
#+BEGIN_SRC d
@@ -2865,7 +3004,7 @@ auto _heading_matched_(
}
#+END_SRC
-*** para match :para:
+**** para match :para:
#+name: abs_functions_para
#+BEGIN_SRC d
@@ -2921,9 +3060,9 @@ auto _para_match_(
}
#+END_SRC
-** function emitters :emitters:
-*** object :object:
-**** ocn :ocn:
+*** function emitters :emitters:
+**** object :object:
+***** ocn :ocn:
#+name: ao_emitters_ocn
#+BEGIN_SRC d
@@ -2943,7 +3082,7 @@ struct OCNemitter {
}
#+END_SRC
-**** object inline markup munge :markup:inline:
+***** object inline markup munge :markup:inline:
#+name: ao_emitters_obj_inline_markup_munge
#+BEGIN_SRC d
@@ -3178,8 +3317,8 @@ struct ObjInlineMarkupMunge {
}
#+END_SRC
-**** object inline markup :markup:inline:
-***** open
+***** object inline markup :markup:inline:
+****** open
#+name: ao_emitters_obj_inline_markup
#+BEGIN_SRC d
@@ -3188,7 +3327,7 @@ struct ObjInlineMarkup {
string[string] obj_txt;
#+END_SRC
-***** object inline markup and anchor tags :markup:inline:
+****** object inline markup and anchor tags :markup:inline:
#+name: ao_emitters_obj_inline_markup_and_anchor_tags
#+BEGIN_SRC d
@@ -3259,7 +3398,7 @@ struct ObjInlineMarkup {
}
#+END_SRC
-***** table of contents objects :markup:inline:
+****** table of contents objects :markup:inline:
#+name: ao_emitters_obj_inline_markup_table_of_contents
#+BEGIN_SRC d
@@ -3421,14 +3560,14 @@ struct ObjInlineMarkup {
}
#+END_SRC
-***** private:
+****** private:
#+name: ao_emitters_obj_inline_markup_private
#+BEGIN_SRC d
private:
#+END_SRC
-****** make heading number and segment anchor tags if instructed :markup:inline:segment:anchor:tags:
+******* make heading number and segment anchor tags if instructed :markup:inline:segment:anchor:tags:
#+name: ao_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags
#+BEGIN_SRC d
@@ -3550,13 +3689,13 @@ private:
}
#+END_SRC
-******* unittests
+******** unittests
#+name: ao_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags
#+BEGIN_SRC d
#+END_SRC
-****** make segment anchor tags if not provided :markup:inline:segment:anchor:tags:
+******* make segment anchor tags if not provided :markup:inline:segment:anchor:tags:
#+name: ao_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags
#+BEGIN_SRC d
@@ -3582,7 +3721,7 @@ private:
}
#+END_SRC
-******* unittests
+******** unittests
#+name: ao_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags
#+BEGIN_SRC d
@@ -3632,15 +3771,15 @@ private:
}
#+END_SRC
-***** close
+****** close
#+name: ao_emitters_obj_inline_markup_close
#+BEGIN_SRC d
}
#+END_SRC
-**** object attrib :attributes:
-***** attributes structure open, public
+***** object attrib :attributes:
+****** attributes structure open, public
#+name: ao_emitters_obj_attributes
#+BEGIN_SRC d
@@ -3648,7 +3787,7 @@ struct ObjAttributes {
string[string] _obj_attrib;
#+END_SRC
-***** attributes structure open, public
+****** attributes structure open, public
#+name: ao_emitters_obj_attributes_public
#+BEGIN_SRC d
@@ -3720,7 +3859,7 @@ struct ObjAttributes {
}
#+END_SRC
-***** private
+****** private
#+name: ao_emitters_obj_attributes_private
#+BEGIN_SRC d
@@ -3728,8 +3867,8 @@ struct ObjAttributes {
string _obj_attributes;
#+END_SRC
-****** attrubutes
-******* para and block
+******* attrubutes
+******** para and block
#+name: ao_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
@@ -3762,7 +3901,7 @@ struct ObjAttributes {
}
#+END_SRC
-******* para
+******** para
#+name: ao_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
@@ -3778,7 +3917,7 @@ struct ObjAttributes {
}
#+END_SRC
-******* heading
+******** heading
#+name: ao_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
@@ -3794,7 +3933,7 @@ struct ObjAttributes {
}
#+END_SRC
-******* code
+******** code
#+name: ao_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
@@ -3810,7 +3949,7 @@ struct ObjAttributes {
}
#+END_SRC
-******* group
+******** group
#+name: ao_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
@@ -3826,7 +3965,7 @@ struct ObjAttributes {
}
#+END_SRC
-******* block
+******** block
#+name: ao_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
@@ -3842,7 +3981,7 @@ struct ObjAttributes {
}
#+END_SRC
-******* verse
+******** verse
#+name: ao_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
@@ -3858,7 +3997,7 @@ struct ObjAttributes {
}
#+END_SRC
-******* quote
+******** quote
#+name: ao_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
@@ -3874,7 +4013,7 @@ struct ObjAttributes {
}
#+END_SRC
-******* table
+******** table
#+name: ao_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
@@ -3890,7 +4029,7 @@ struct ObjAttributes {
}
#+END_SRC
-******* comment
+******** comment
#+name: ao_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
@@ -3906,7 +4045,7 @@ struct ObjAttributes {
}
#+END_SRC
-****** set additional attribute values, parse as json
+******* set additional attribute values, parse as json
#+name: ao_emitters_obj_attributes_private_json
#+BEGIN_SRC d
@@ -3936,15 +4075,15 @@ struct ObjAttributes {
}
#+END_SRC
-***** close
+****** close
#+name: ao_emitters_obj_attributes_private_close
#+BEGIN_SRC d
}
#+END_SRC
-*** book index :book:index:
-**** book index nugget hash :hash:nugget:
+**** book index :book:index:
+***** book index nugget hash :hash:nugget:
#+name: ao_emitters_book_index_nugget
#+BEGIN_SRC d
@@ -4023,7 +4162,7 @@ struct BookIndexNuggetHash {
}
#+END_SRC
-**** book index (sort &) report indented :report:indented:
+***** book index (sort &) report indented :report:indented:
#+name: ao_emitters_book_index_report_indented
#+BEGIN_SRC d
@@ -4055,8 +4194,8 @@ struct BookIndexReportIndent {
}
#+END_SRC
-**** book index (sort &) report section :report:section:
-***** book index struct open
+***** book index (sort &) report section :report:section:
+****** book index struct open
#+name: ao_emitters_book_index_report_section
#+BEGIN_SRC d
@@ -4066,7 +4205,7 @@ struct BookIndexReportSection {
auto munge = ObjInlineMarkupMunge();
#+END_SRC
-***** bookindex write section
+****** bookindex write section
#+name: ao_emitters_book_index_report_section
#+BEGIN_SRC d
@@ -4098,7 +4237,7 @@ struct BookIndexReportSection {
}
#+END_SRC
-***** book index (sort &) build section :report:section:
+****** book index (sort &) build section :report:section:
#+name: ao_emitters_book_index_report_section
#+BEGIN_SRC d
@@ -4262,14 +4401,14 @@ struct BookIndexReportSection {
}
#+END_SRC
-***** book index struct close
+****** book index struct close
#+name: ao_emitters_book_index_report_section
#+BEGIN_SRC d
}
#+END_SRC
-*** (end)notes section :endnotes:section:
+**** (end)notes section :endnotes:section:
#+name: ao_emitters_endnotes
#+BEGIN_SRC d
@@ -4280,7 +4419,7 @@ struct NotesSection {
auto rgx = Rgx();
#+END_SRC
-**** gather notes for endnote section struct open
+***** gather notes for endnote section struct open
#+name: ao_emitters_endnotes
#+BEGIN_SRC d
@@ -4338,7 +4477,7 @@ struct NotesSection {
}
#+END_SRC
-**** gathered notes
+***** gathered notes
#+name: ao_emitters_endnotes
#+BEGIN_SRC d
@@ -4360,7 +4499,7 @@ struct NotesSection {
}
#+END_SRC
-**** endnote objects
+***** endnote objects
#+name: ao_emitters_endnotes
#+BEGIN_SRC d
@@ -4475,22 +4614,22 @@ struct NotesSection {
}
#+END_SRC
-**** gather notes for endnote section struct close
+***** gather notes for endnote section struct close
#+name: ao_emitters_endnotes
#+BEGIN_SRC d
}
#+END_SRC
-*** bibliography :bibliography:
-**** biblio struct open
+**** bibliography :bibliography:
+***** biblio struct open
#+name: ao_emitters_bibliography
#+BEGIN_SRC d
struct Bibliography {
#+END_SRC
-**** biblio
+***** biblio
#+name: ao_emitters_bibliography
#+BEGIN_SRC d
@@ -4521,7 +4660,7 @@ struct Bibliography {
}
#+END_SRC
-**** biblio unsorted complete
+***** biblio unsorted complete
#+name: ao_emitters_bibliography
#+BEGIN_SRC d
@@ -4556,7 +4695,7 @@ struct Bibliography {
}
#+END_SRC
-**** biblio sort
+***** biblio sort
#+name: ao_emitters_bibliography
#+BEGIN_SRC d
@@ -4577,7 +4716,7 @@ struct Bibliography {
}
#+END_SRC
-**** biblio debug
+***** biblio debug
#+name: ao_emitters_bibliography
#+BEGIN_SRC d
@@ -4592,15 +4731,15 @@ struct Bibliography {
}
#+END_SRC
-**** biblio struct close
+***** biblio struct close
#+name: ao_emitters_bibliography
#+BEGIN_SRC d
}
#+END_SRC
-*** node structure metadata :structure:metadata:node:
-**** metadata node struct open
+**** node structure metadata :structure:metadata:node:
+***** metadata node struct open
#+name: ao_emitters_metadata
#+BEGIN_SRC d
@@ -4610,7 +4749,7 @@ struct NodeStructureMetadata {
int[string] p_; // p_ parent_
#+END_SRC
-**** TODO node metadata emitter
+***** TODO node metadata emitter
#+name: ao_emitters_metadata
#+BEGIN_SRC d
@@ -4681,7 +4820,7 @@ struct NodeStructureMetadata {
}
#+END_SRC
-**** TODO node metadata emitter heading
+***** TODO node metadata emitter heading
#+name: ao_emitters_metadata
#+BEGIN_SRC d
@@ -4863,15 +5002,15 @@ struct NodeStructureMetadata {
}
#+END_SRC
-**** metadata node struct close
+***** metadata node struct close
#+name: ao_emitters_metadata
#+BEGIN_SRC d
}
#+END_SRC
-** function assertions :assertions:
-*** mixin template: assertions on markup document structure :doc_structure:
+*** function assertions :assertions:
+**** mixin template: assertions on markup document structure :doc_structure:
#+name: abs_functions_assertions
#+BEGIN_SRC d
@@ -5052,7 +5191,7 @@ auto assertions_doc_structure(
}
#+END_SRC
-*** mixin template: assertions on blocks :blocks:
+**** mixin template: assertions on blocks :blocks:
#+name: abs_functions_assertions
#+BEGIN_SRC d
@@ -5080,7 +5219,7 @@ auto assertions_flag_types_block_status_none_or_closed(int[string] type) {
}
#+END_SRC
-* Object Setter :abstract:object:
+* 2. Object Setter :abstract:object:
set abstracted objects for downstream processing
@@ -5357,142 +5496,26 @@ auto contents_block_obj_cite_number_string(
}
#+END_SRC
-* Tangles (code structure) :tangle:io:file:
-** ao abstract doc source: :ao_abstract_doc_source.d:
-
-#+BEGIN_SRC d :tangle ../src/sdp/ao_abstract_doc_source.d
-/++
- document abstraction:
- abstraction of sisu markup for downstream processing
- ao_abstract_doc_source.d
-+/
-template SiSUdocAbstraction() {
- private:
- struct Abstraction {
- /+ ↓ abstraction imports +/
- <<abs_imports>>
- /+ ↓ abstraction mixins +/
- <<abs_mixins>>
- /+ ↓ abstraction struct init +/
- <<abs_init_struct>>
- /+ ↓ abstract marked up document +/
- auto abstract_doc_source(
- char[][] markup_sourcefile_content,
- string[string][string] dochead_make_aa,
- string[string][string] dochead_meta_aa,
- bool[string] opt_action_bool,
- ) {
- /+ ↓ abstraction init +/
- <<abs_init_rest>>
- /+ abstraction init ↑ +/
- /+ ↓ loop markup document/text line by line +/
- srcDocLoop:
- foreach (line; markup_sourcefile_content) {
- /+ ↓ markup document/text line by line +/
- <<abs_in_loop_body_00>>
- if (type["code"] == TriState.on) {
- <<abs_in_loop_body_00_code_block>>
- } else if (!matchFirst(line, rgx.skip_from_regular_parse)) {
- /+ object other than "code block" object
- (includes regular text paragraph, headings & blocks other than code) +/
- <<abs_in_loop_body_non_code_obj>>
- } else {
- /+ not within a block group +/
- <<abs_in_loop_body_open_block_obj_assert>>
- if (matchFirst(line, rgx.block_open)) {
- <<abs_in_loop_body_open_block_obj>>
- } else if (!line.empty) {
- /+ line not empty +/
- /+ non blocks (headings, paragraphs) & closed blocks +/
- <<abs_in_loop_body_not_block_obj>>
- } else if (type["blocks"] == TriState.closing) {
- /+ line empty, with blocks flag +/
- <<abs_in_loop_body_not_block_obj_line_empty_blocks_flags>>
- } else {
- /+ line empty +/
- /+ line.empty, post contents, empty variables: +/
- <<abs_in_loop_body_not_block_obj_line_empty>>
- } // close else for line empty
- } // close else for not the above
- } // close after non code, other blocks or regular text
- <<abs_in_loop_body_01>>
- } /+ ← closed: loop markup document/text line by line +/
- /+ ↓ post loop markup document/text +/
- <<abs_post>>
- /+ post loop markup document/text ↑ +/
- } /+ ← closed: abstract doc source +/
- /+ ↓ abstraction functions +/
- <<abs_functions_object_reset>>
- <<abs_functions_header_set_common>>
- <<abs_functions_ocn_status>>
- <<abs_functions_block>>
- <<abs_functions_block_code>>
- <<abs_functions_block_biblio>>
- <<abs_functions_block_poem>>
- <<abs_functions_block_group>>
- <<abs_functions_block_block>>
- <<abs_functions_block_quote>>
- <<abs_functions_block_table>>
- <<abs_functions_block_line_status_empty>>
- <<abs_functions_book_index>>
- <<abs_functions_heading>>
- <<abs_functions_para>>
- /+ abstraction functions ↑ +/
- /+ ↓ abstraction function emitters +/
- <<ao_emitters_ocn>>
- <<ao_emitters_obj_inline_markup_munge>>
- <<ao_emitters_obj_inline_markup>>
- <<ao_emitters_obj_inline_markup_and_anchor_tags>>
- <<ao_emitters_obj_inline_markup_table_of_contents>>
- <<ao_emitters_obj_inline_markup_private>>
- <<ao_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags>>
- <<ao_emitters_obj_inline_markup_close>>
- <<ao_emitters_obj_attributes>>
- <<ao_emitters_obj_attributes_public>>
- <<ao_emitters_obj_attributes_private>>
- <<ao_emitters_obj_attributes_private_an_attribute>>
- <<ao_emitters_obj_attributes_private_json>>
- <<ao_emitters_obj_attributes_private_close>>
- <<ao_emitters_book_index_nugget>>
- <<ao_emitters_book_index_report_indented>>
- <<ao_emitters_book_index_report_section>>
- <<ao_emitters_endnotes>>
- <<ao_emitters_bibliography>>
- <<ao_emitters_metadata>>
- /+ abstraction functions emitters ↑ +/
- /+ ↓ abstraction functions assertions +/
- <<abs_functions_assertions>>
- /+ abstraction functions assertions ↑ +/
- } /+ ← closed: struct Abstraction +/
-} /+ ← closed: template SiSUdocAbstraction +/
-#+END_SRC
-
-** ao object setter: :ao_object_setter.d:
+* Notes
+** abstract document structure
-#+BEGIN_SRC d :tangle ../src/sdp/ao_object_setter.d
-/++
- object setter:
- setting of sisu objects for downstream processing
- ao_object_setter.d
-+/
-template ObjectSetter() {
- /+ structs +/
- <<ao_structs_init>>
- /+ structs setter +/
- struct ObjectAbstractSet {
- import std.conv : to;
- <<ao_object_setter_comment>>
- <<ao_object_setter_heading>>
- <<ao_object_setter_para>>
- <<ao_object_setter_endnote>>
- <<ao_object_setter_block>>
- <<ao_object_setter_block_code>>
- <<ao_object_setter_block_obj_cite_number_string>>
- }
-}
+#+BEGIN_SRC d
+auto document_abstract_objects = (
+ "head": the_document_head_section, // split from rest of content
+ "toc_seg": the_table_of_contents_section["seg"], // table of contents for seg
+ "toc_scroll": the_table_of_contents_section["scroll"], // table of contents for scroll
+ "body": the_document_body_section,
+ "endnotes_seg": the_endnotes_section["seg"],
+ "endnotes_scroll": the_endnotes_section["scroll"],
+ "glossary": the_glossary_section,
+ "bibliography": the_bibliography_section,
+ "bookindex_scroll": the_bookindex_section["scroll"],
+ "bookindex_seg": the_bookindex_section["seg"],
+ "blurb": the_blurb_section,
+);
#+END_SRC
-* TODO work on
+** TODO work on
- bespoke struct for sisu objects to replace JSON strings
- book index *sort* fix (Aa-Zz instead of A-Za-z)
diff --git a/org/ao_conf_make_meta.org b/org/ao_conf_make_meta.org
index d3413de..bf39340 100644
--- a/org/ao_conf_make_meta.org
+++ b/org/ao_conf_make_meta.org
@@ -13,7 +13,93 @@
#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
[[./sdp.org][sdp]] [[./][org/]]
-* 0. sdlang to AA
+* 0. Code Outline / Structure (tangles) :tangle:
+** 1. Header Hub :ao_markup_header_extract:
+
+#+BEGIN_SRC d :tangle ../src/sdp/ao_conf_make_meta.d
+/++
+ extract native/orig header return associative array<BR>
+
+ the header is passed as text (lopped off top of a sisu markup file until the
+ required first heading ^A~), determine whether is a native header or sdlang one
+ with a regex check if whether it contains the "native header" required tag/field
+ @title: then process accordingly as a "native header" or "sdlang header"
+ converting the metadata and make instructions to a common json format used by
+ program internally. Moved to associative array.
++/
+template SiSUheaderExtractHub() {
+ private import
+ std.regex;
+ private import
+ ao_rgx;
+ struct HeaderDocMetadataAndMake {
+ mixin SiSUheaderExtractNative;
+ mixin SiSUheaderExtractSDLang;
+ auto rgx = Rgx();
+ private auto headerContentAA(char[] header_src, string[string][string] conf_doc_make_aa) {
+ auto head_native = HeaderDocMetadataAndMakeNativeToAA();
+ auto head_sdlang = HeaderExtractSDL();
+ auto header_make_and_meta_tuple = (match(header_src, rgx.native_header_meta_title))
+ ? (head_native.headerNativeToAA(header_src))
+ : (head_sdlang.headerSDLangToAA(header_src, conf_doc_make_aa));
+ static assert(!isTypeTuple!(header_make_and_meta_tuple));
+ static assert(header_make_and_meta_tuple.length==2);
+ return header_make_and_meta_tuple;
+ }
+ }
+}
+#+END_SRC
+
+** 2a. Header Native :ao_markup_header_extract_native:
+
+#+BEGIN_SRC d :tangle ../src/sdp/ao_conf_make_meta_native.d
+/++
+ native headers using<br>@title:<BR>:subtitle:<BR>type tags<BR>
+ extract native/orig header return associative array
++/
+template SiSUheaderExtractNative() {
+ private import
+ std.exception,
+ std.regex,
+ std.utf,
+ std.conv : to;
+ private import
+ ao_rgx;
+ struct HeaderDocMetadataAndMakeNativeToAA {
+ mixin SiSUregisters;
+ mixin SiSUrgxInitFlags;
+ mixin RgxInit;
+ auto rgx = Rgx();
+ enum State { off, on }
+ string hm, hs;
+ <<ao_markup_header_extract_native>>
+ }
+}
+#+END_SRC
+
+** 2b. Header SDLang :ao_markup_header_extract_sdlang:
+
+#+BEGIN_SRC d :tangle ../src/sdp/ao_conf_make_meta_sdlang.d
+/++
+ sdlang headers<BR>
+ extract sdlang header return sdlang
++/
+template SiSUheaderExtractSDLang() {
+ private import
+ std.regex;
+ private import
+ ao_rgx;
+ struct HeaderExtractSDL {
+ mixin SiSUregisters;
+ mixin RgxInit;
+ auto rgx = Rgx();
+ <<ao_conf_make_meta_sdl>>
+ <<ao_conf_make_meta_sdl_to_aa>>
+ }
+}
+#+END_SRC
+
+* A. sdlang to AA
#+name: ao_conf_make_meta_sdl
#+BEGIN_SRC d
@@ -36,7 +122,7 @@ private auto sdlangToAAmake(string[string][string] conf, Tag conf_sdlang) {
}
#+END_SRC
-* A. conf settings sdlang
+* B. conf settings sdlang
#+name: ao_conf_make_meta_sdl
#+BEGIN_SRC d
@@ -46,7 +132,7 @@ private auto configSettingsSDLangToAAmake(Tag conf_sdlang) {
}
#+END_SRC
-* B. conf make sdlang
+* C. conf make sdlang
#+name: ao_conf_make_meta_sdl
#+BEGIN_SRC d
@@ -191,9 +277,10 @@ private auto documentMakeSDLangToAAmake(Tag document_make_sdlang) {
}
#+END_SRC
-* C.a. header native :header:native:
+* D. header :header:
+** a. header native :header:native:
-** native header document metadata in associative array :aa:
+*** native header document metadata in associative array :aa:
#+name: ao_markup_header_extract_native
#+BEGIN_SRC d
@@ -385,7 +472,7 @@ body {
}
#+END_SRC
-** native header extract to string object :string:
+*** native header extract to string object :string:
#+name: ao_markup_header_extract_native
#+BEGIN_SRC d
@@ -429,7 +516,7 @@ private auto native_header_extract(
}
#+END_SRC
-** native header reset states :reset:
+*** native header reset states :reset:
#+name: ao_markup_header_extract_native
#+BEGIN_SRC d
@@ -447,7 +534,7 @@ auto header_reset_states_common(
}
#+END_SRC
-** hub: native header start :hub:
+*** hub: native header start :hub:
#+name: ao_markup_header_extract_native
#+BEGIN_SRC d
@@ -502,8 +589,8 @@ private auto headerNativeToAA(in char[] src_header) {
}
#+END_SRC
-* C.b. header sdlang :header:sdl:
-** sdlang header parse and extract root Tag :sdlang:root:tag:
+** b. header sdlang :header:sdl:
+*** sdlang header parse and extract root Tag :sdlang:root:tag:
#+name: ao_conf_make_meta_sdl
#+BEGIN_SRC d
@@ -535,7 +622,7 @@ final private auto headerMakeSDLang(in string src_header) {
}
#+END_SRC
-** sdlang header get :sdlang:get:src:
+*** sdlang header get :sdlang:get:src:
#+name: ao_conf_make_meta_sdl
#+BEGIN_SRC d
@@ -564,7 +651,7 @@ private auto headerSDLangGet(in char[] src_header) {
}
#+END_SRC
-** sdlang header to associative array make sdlTag in :sdlang:aa:
+*** sdlang header to associative array make sdlTag in :sdlang:aa:
#+name: ao_conf_make_meta_sdl
#+BEGIN_SRC d
@@ -602,7 +689,7 @@ private auto headerSDLangToAAmake(Tag header_sdlang, string[string][string] doch
}
#+END_SRC
-** hub: get sdlang header and convert to associative array :hub:sdlang:aa:
+*** hub: get sdlang header and convert to associative array :hub:sdlang:aa:
#+name: ao_conf_make_meta_sdl
#+BEGIN_SRC d
@@ -612,89 +699,3 @@ private auto headerSDLangToAA(char[] header_sdlang_src, string[string][string] c
return header_aa_tuple;
}
#+END_SRC
-
-* tangles (code structure) :tangle:
-** 1. Header Hub :ao_markup_header_extract:
-
-#+BEGIN_SRC d :tangle ../src/sdp/ao_conf_make_meta.d
-/++
- extract native/orig header return associative array<BR>
-
- the header is passed as text (lopped off top of a sisu markup file until the
- required first heading ^A~), determine whether is a native header or sdlang one
- with a regex check if whether it contains the "native header" required tag/field
- @title: then process accordingly as a "native header" or "sdlang header"
- converting the metadata and make instructions to a common json format used by
- program internally. Moved to associative array.
-+/
-template SiSUheaderExtractHub() {
- private import
- std.regex;
- private import
- ao_rgx;
- struct HeaderDocMetadataAndMake {
- mixin SiSUheaderExtractNative;
- mixin SiSUheaderExtractSDLang;
- auto rgx = Rgx();
- private auto headerContentAA(char[] header_src, string[string][string] conf_doc_make_aa) {
- auto head_native = HeaderDocMetadataAndMakeNativeToAA();
- auto head_sdlang = HeaderExtractSDL();
- auto header_make_and_meta_tuple = (match(header_src, rgx.native_header_meta_title))
- ? (head_native.headerNativeToAA(header_src))
- : (head_sdlang.headerSDLangToAA(header_src, conf_doc_make_aa));
- static assert(!isTypeTuple!(header_make_and_meta_tuple));
- static assert(header_make_and_meta_tuple.length==2);
- return header_make_and_meta_tuple;
- }
- }
-}
-#+END_SRC
-
-** 2a. Header Native :ao_markup_header_extract_native:
-
-#+BEGIN_SRC d :tangle ../src/sdp/ao_conf_make_meta_native.d
-/++
- native headers using<br>@title:<BR>:subtitle:<BR>type tags<BR>
- extract native/orig header return associative array
-+/
-template SiSUheaderExtractNative() {
- private import
- std.exception,
- std.regex,
- std.utf,
- std.conv : to;
- private import
- ao_rgx;
- struct HeaderDocMetadataAndMakeNativeToAA {
- mixin SiSUregisters;
- mixin SiSUrgxInitFlags;
- mixin RgxInit;
- auto rgx = Rgx();
- enum State { off, on }
- string hm, hs;
- <<ao_markup_header_extract_native>>
- }
-}
-#+END_SRC
-
-** 2b. Header SDLang :ao_markup_header_extract_sdlang:
-
-#+BEGIN_SRC d :tangle ../src/sdp/ao_conf_make_meta_sdlang.d
-/++
- sdlang headers<BR>
- extract sdlang header return sdlang
-+/
-template SiSUheaderExtractSDLang() {
- private import
- std.regex;
- private import
- ao_rgx;
- struct HeaderExtractSDL {
- mixin SiSUregisters;
- mixin RgxInit;
- auto rgx = Rgx();
- <<ao_conf_make_meta_sdl>>
- <<ao_conf_make_meta_sdl_to_aa>>
- }
-}
-#+END_SRC
diff --git a/org/ao_defaults.org b/org/ao_defaults.org
index 39cfff8..d991dec 100644
--- a/org/ao_defaults.org
+++ b/org/ao_defaults.org
@@ -13,8 +13,32 @@
#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
[[./sdp.org][sdp]] [[./][org/]]
+* 0. Code Outline / Structure (tangles) :tangle:
+** 1. defaults: :ao_defaults.d:
-* default templates :template:defaults:
+#+name: tangle_ao_defaults
+#+BEGIN_SRC d :tangle ../src/sdp/ao_defaults.d
+/++
+ default settings
++/
+<<ao_defaults_templates>>
+#+END_SRC
+
+** 2. rgx: :ao_rgx.d:
+
+#+name: tangle_ao_rgx
+#+BEGIN_SRC d :tangle ../src/sdp/ao_rgx.d
+/++
+ regex: regular expressions used in sisu document parser
++/
+template RgxInit() {
+ struct Rgx {
+ <<ao_rgx>>
+ }
+}
+#+END_SRC
+
+* 1. default templates :template:defaults:
[[./sdp.org][sdp]] [[./][org/]]
** template: settings metadata associative array indexes :settings:
@@ -483,7 +507,7 @@ template InternalMarkup() {
}
#+END_SRC
-* regex ctRegex :regex:
+* 2. regex ctRegex :regex:
[[./sdp.org][sdp]] [[./][org/]]
http://dlang.org/phobos/std_regex.html
- Plain string, in which case it's compiled to bytecode before matching.
@@ -872,28 +896,3 @@ string[string] scr_txt_marker = [
"black" : "\033[30m*\033[0m "
];
#+END_SRC
-
-* tangles (code structure) :tangle:
-** defaults: :ao_defaults.d:
-
-#+name: tangle_ao_defaults
-#+BEGIN_SRC d :tangle ../src/sdp/ao_defaults.d
-/++
- default settings
-+/
-<<ao_defaults_templates>>
-#+END_SRC
-
-** rgx: :ao_rgx.d:
-
-#+name: tangle_ao_rgx
-#+BEGIN_SRC d :tangle ../src/sdp/ao_rgx.d
-/++
- regex: regular expressions used in sisu document parser
-+/
-template RgxInit() {
- struct Rgx {
- <<ao_rgx>>
- }
-}
-#+END_SRC
diff --git a/org/ao_output_debugs.org b/org/ao_output_debugs.org
index c576264..bea972e 100644
--- a/org/ao_output_debugs.org
+++ b/org/ao_output_debugs.org
@@ -12,7 +12,39 @@
#+FILETAGS: :sdp:rel:ao:
#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
-* output debugs :debug:output:
+[[./sdp.org][sdp]] [[./][org/]]
+* 0. Code Outline / Structure (tangles) :tangle:
+** code structure: :ao_output_debugs.d:
+
+#+name: tangle_ao_output_debugs
+#+BEGIN_SRC d :tangle ../src/sdp/ao_output_debugs.d
+/++
+ output debugs
++/
+template SiSUoutputDebugs() {
+ struct SDPoutputDebugs {
+ auto abstract_doc_source_debugs(S)(
+ auto ref const S contents,
+ string[][string] document_section_keys_sequenced,
+ string[] html_segnames,
+ string[string][string] dochead_make,
+ string[string][string] dochead_meta,
+ string fn_src,
+ bool[string] opt_action_bool
+ ) {
+ mixin RgxInit;
+ mixin InternalMarkup;
+ <<initialize>>
+ <<book_index_sorted_report>>
+ <<ao_output_debugs>>
+ <<ao_output_debugs_summary>>
+ }
+ }
+ }
+}
+#+END_SRC
+
+* 1. output debugs :debug:output:
[[./sdp.org][sdp]] [[./][org/]]
** initialize :report:
@@ -824,34 +856,3 @@ debug(checkdoc) {
}
}
#+END_SRC
-
-* tangles :tangle:
-** code structure: :ao_output_debugs.d:
-
-#+name: tangle_ao_output_debugs
-#+BEGIN_SRC d :tangle ../src/sdp/ao_output_debugs.d
-/++
- output debugs
-+/
-template SiSUoutputDebugs() {
- struct SDPoutputDebugs {
- auto abstract_doc_source_debugs(S)(
- auto ref const S contents,
- string[][string] document_section_keys_sequenced,
- string[] html_segnames,
- string[string][string] dochead_make,
- string[string][string] dochead_meta,
- string fn_src,
- bool[string] opt_action_bool
- ) {
- mixin RgxInit;
- mixin InternalMarkup;
- <<initialize>>
- <<book_index_sorted_report>>
- <<ao_output_debugs>>
- <<ao_output_debugs_summary>>
- }
- }
- }
-}
-#+END_SRC
diff --git a/org/ao_read_source_files.org b/org/ao_read_source_files.org
index 77c3266..3a72106 100644
--- a/org/ao_read_source_files.org
+++ b/org/ao_read_source_files.org
@@ -13,9 +13,147 @@
#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
[[./sdp.org][sdp]] [[./][org/]]
-* get config file :config:
-** [#A] read config file, source string :string:
-*** config file (conf.sdl & sisu_document_make) :file:config:
+* 0. Code Outline / Structure (tangles) :tangle:
+** 1. config files (conf.sdl & sisu_document_make) :ao_config_files:
+*** config files, read in
+
+#+BEGIN_SRC d :tangle ../src/sdp/ao_read_config_files.d
+/++
+ read configuration files<BR>
+ - read config files<BR>
+ ao_config_files.d
++/
+template SiSUconfigIn() {
+ private import
+ std.exception,
+ std.stdio,
+ std.utf,
+ std.conv : to;
+ private
+ struct ConfigIn {
+ private import std.file;
+ <<ao_config_file_in>>
+ }
+}
+#+END_SRC
+
+*** config files get sdlang root tag
+
+#+BEGIN_SRC d :tangle ../src/sdp/ao_read_config_files.d
+/+
+
++/
+template SiSUconfigSDLang() {
+ struct ConfigSDLangRootTag {
+ <<ao_config_file_sdlang>>
+ }
+}
+#+END_SRC
+
+*** config files hub
+
+#+BEGIN_SRC d :tangle ../src/sdp/ao_read_config_files.d
+/+
+
++/
+template SiSUconfigSDLangHub() {
+ mixin SiSUconfigIn;
+ mixin SiSUconfigSDLang;
+ struct ConfigHub {
+ <<ao_config_file_sdlang_hub>>
+ }
+}
+#+END_SRC
+
+** 2. ao_markup_source_raw.d: :ao_markup_source_raw:
+
+#+BEGIN_SRC d :tangle ../src/sdp/ao_read_source_files.d
+/++
+ module ao_read_source_files;<BR>
+ - open markup files<BR>
+ - if master file scan for addional files to import/insert
++/
+template SiSUmarkupRaw() {
+ private import
+ std.exception,
+ std.regex,
+ std.stdio,
+ std.utf,
+ std.conv : to;
+ private import
+ ao_rgx; // ao_defaults.d
+ mixin RgxInit;
+ auto rgx = Rgx();
+ struct MarkupRaw {
+ final sourceContent(in string fn_src) {
+ auto raw = MarkupRawUnit();
+ auto source_txt_str =
+ raw.markupSourceReadIn(fn_src);
+ return source_txt_str;
+ }
+ final auto sourceContentSplitIntoHeaderAndBody(in string source_txt_str, in string fn_src="") {
+ auto raw = MarkupRawUnit();
+ auto t =
+ raw.markupSourceHeaderContentRawLineTupleArray(source_txt_str);
+ auto header_raw = t[0];
+ auto sourcefile_body_content = t[1];
+ if (match(fn_src, rgx.src_fn_master)) { // filename with path needed if master file (.ssm) not otherwise
+ auto ins = Inserts();
+ sourcefile_body_content =
+ ins.scan_master_src_for_insert_files_and_import_content(sourcefile_body_content, fn_src);
+ }
+ t = tuple(
+ header_raw,
+ sourcefile_body_content
+ );
+ static assert(t.length==2);
+ return t;
+ }
+ }
+ private
+ struct MarkupRawUnit {
+ private import std.file;
+ <<ao_markup_source_raw_read_file_source_string>>
+ <<ao_markup_source_raw_doc_header_and_content_split>>
+ <<ao_markup_source_raw_source_line_array>>
+ <<ao_markup_source_raw_read_in_file>>
+ <<ao_markup_source_raw_tuple_of_header_and_body>>
+ <<ao_markup_source_raw_get_insert_source_line_array>>
+ }
+ struct Inserts {
+ private import ao_defaults; // ao_defaults.d
+ auto scan_subdoc_source(
+ char[][] markup_sourcefile_insert_content,
+ string fn_src
+ ) {
+ mixin SiSUrgxInitFlags;
+ <<ao_inserts_scan>>
+ foreach (line; markup_sourcefile_insert_content) {
+ <<ao_inserts_scan_loop>>
+ } // end src subdoc (inserts) loop
+ <<ao_inserts_scan_post>>
+ }
+ auto scan_master_src_for_insert_files_and_import_content(
+ char[][] sourcefile_body_content,
+ string fn_src
+ ) {
+ mixin SiSUrgxInitFlags;
+ <<ao_master_doc_scan_for_insert_filenames>>
+ foreach (line; sourcefile_body_content) {
+ <<ao_master_doc_scan_for_insert_filenames_loop>>
+ } // end src doc loop
+ <<ao_master_doc_scan_for_insert_filenames_post>>
+ }
+ }
+}
+#+END_SRC
+
+INSERTS?
+[[./ao_scan_inserts.org][ao_scan_inserts]]
+WORK AREA
+
+* 1. get config file :config:
+** read config file, source string (conf.sdl & sisu_document_make) :file:config:
#+name: ao_config_file_in
#+BEGIN_SRC d
@@ -51,7 +189,7 @@ final private string readInConfigFile(string conf_sdl) {
}
#+END_SRC
-*** config file get sdl root tag :file:conf:sdlang:
+** config file get sdl root tag :file:conf:sdlang:
#+name: ao_config_file_sdlang
#+BEGIN_SRC d
@@ -75,7 +213,7 @@ private auto configSDLangRootTag(string configuration, string conf_sdl_filename)
}
#+END_SRC
-*** config file (conf.sdl & sisu_document_make) :file:config:hub:
+** config file (conf.sdl & sisu_document_make) :file:config:hub:
#+name: ao_config_file_sdlang_hub
#+BEGIN_SRC d
@@ -88,8 +226,9 @@ final private auto configSDLang(string conf_sdl) {
}
#+END_SRC
-* get markup source, read file :source:markup:
-** [#A] read file, source string :string:
+* 2. get markup source, read file
+** get markup source, read file :source:markup:
+*** [#A] read file, source string :string:
#+name: ao_markup_source_raw_read_file_source_string
#+BEGIN_SRC d
@@ -117,13 +256,13 @@ final private string readInMarkupSource(in string fn_src) {
}
#+END_SRC
-*** notes
+**** notes
source_txt_str = readText(fn_src); // ok
catch (ErrnoException ex) {
}
-** [#A] document header & content, array.length == 2 :array:
+*** [#A] document header & content, array.length == 2 :array:
here you split document header and body, an array.length == 2
split is on first match of level A~ (which is required)
@@ -144,7 +283,7 @@ final private char[][] header0Content1(in string src_text) {
}
#+END_SRC
-** source line array :array:
+*** source line array :array:
#+name: ao_markup_source_raw_source_line_array
#+BEGIN_SRC d
@@ -155,11 +294,11 @@ final private char[][] markupSourceLineArray(in char[] src_text) {
}
#+END_SRC
-** source content raw line array :array:
+*** source content raw line array :array:
- used for regular .sst files; master .ssm files and; .ssi inserts
- regex is passed for relevant enforce match
-*** read in file
+**** read in file
#+name: ao_markup_source_raw_read_in_file
#+BEGIN_SRC d
@@ -174,7 +313,7 @@ auto markupSourceReadIn(in string fn_src) {
}
#+END_SRC
-*** tuple header and body content
+**** tuple header and body content
#+name: ao_markup_source_raw_tuple_of_header_and_body
#+BEGIN_SRC d
@@ -191,7 +330,7 @@ auto markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) {
}
#+END_SRC
-*** get insert source line array
+**** get insert source line array
#+name: ao_markup_source_raw_get_insert_source_line_array
#+BEGIN_SRC d
@@ -206,11 +345,11 @@ final char[][] getInsertMarkupSourceContentRawLineArray(in string fn_src, Regex!
}
#+END_SRC
-* get markup source, master file & inserts :masterfile:inserts:
+** get markup source, master file & inserts :masterfile:inserts:
[[./sdp.org][sdp]] [[./][org/]]
-** scan inserts (sub-document) source :scan_insert_src:
-*** scan subdoc source
+*** scan inserts (sub-document) source :scan_insert_src:
+**** scan subdoc source
#+name: ao_inserts_scan
#+BEGIN_SRC d
@@ -220,7 +359,7 @@ 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)
+**** loop insert (sub-document)
#+name: ao_inserts_scan_loop
#+BEGIN_SRC d
@@ -296,15 +435,15 @@ if (type1["curly_code"] == 1) {
}
#+END_SRC
-*** post loop
+**** post loop
#+name: ao_inserts_scan_post
#+BEGIN_SRC d
return contents_insert;
#+END_SRC
-** scan document source :scan_src:
-*** scan doc source
+*** scan document source :scan_src:
+**** scan doc source
#+name: ao_master_doc_scan_for_insert_filenames
#+BEGIN_SRC d
@@ -314,7 +453,7 @@ auto fn_pth_full = match(fn_src, rgx.src_pth);
auto markup_src_file_path = fn_pth_full.captures[1];
#+END_SRC
-*** loop master scan for inserts (insert documents)
+**** loop master scan for inserts (insert documents)
#+name: ao_master_doc_scan_for_insert_filenames_loop
#+BEGIN_SRC d
@@ -375,7 +514,7 @@ if (type["curly_code"] == 1) {
}
#+END_SRC
-*** post loop
+**** post loop
#+name: ao_master_doc_scan_for_insert_filenames_post
#+BEGIN_SRC d
@@ -386,94 +525,6 @@ debug(insert) { // insert file
return contents;
#+END_SRC
-* tangles (code structure) :tangle:
-** ao_markup_source_raw.d: :ao_markup_source_raw:
-
-#+BEGIN_SRC d :tangle ../src/sdp/ao_read_source_files.d
-/++
- module ao_read_source_files;<BR>
- - open markup files<BR>
- - if master file scan for addional files to import/insert
-+/
-template SiSUmarkupRaw() {
- private import
- std.exception,
- std.regex,
- std.stdio,
- std.utf,
- std.conv : to;
- private import
- ao_rgx; // ao_defaults.d
- mixin RgxInit;
- auto rgx = Rgx();
- struct MarkupRaw {
- final sourceContent(in string fn_src) {
- auto raw = MarkupRawUnit();
- auto source_txt_str =
- raw.markupSourceReadIn(fn_src);
- return source_txt_str;
- }
- final auto sourceContentSplitIntoHeaderAndBody(in string source_txt_str, in string fn_src="") {
- auto raw = MarkupRawUnit();
- auto t =
- raw.markupSourceHeaderContentRawLineTupleArray(source_txt_str);
- auto header_raw = t[0];
- auto sourcefile_body_content = t[1];
- if (match(fn_src, rgx.src_fn_master)) { // filename with path needed if master file (.ssm) not otherwise
- auto ins = Inserts();
- sourcefile_body_content =
- ins.scan_master_src_for_insert_files_and_import_content(sourcefile_body_content, fn_src);
- }
- t = tuple(
- header_raw,
- sourcefile_body_content
- );
- static assert(t.length==2);
- return t;
- }
- }
- private
- struct MarkupRawUnit {
- private import std.file;
- <<ao_markup_source_raw_read_file_source_string>>
- <<ao_markup_source_raw_doc_header_and_content_split>>
- <<ao_markup_source_raw_source_line_array>>
- <<ao_markup_source_raw_read_in_file>>
- <<ao_markup_source_raw_tuple_of_header_and_body>>
- <<ao_markup_source_raw_get_insert_source_line_array>>
- }
- struct Inserts {
- private import ao_defaults; // ao_defaults.d
- auto scan_subdoc_source(
- char[][] markup_sourcefile_insert_content,
- string fn_src
- ) {
- mixin SiSUrgxInitFlags;
- <<ao_inserts_scan>>
- foreach (line; markup_sourcefile_insert_content) {
- <<ao_inserts_scan_loop>>
- } // end src subdoc (inserts) loop
- <<ao_inserts_scan_post>>
- }
- auto scan_master_src_for_insert_files_and_import_content(
- char[][] sourcefile_body_content,
- string fn_src
- ) {
- mixin SiSUrgxInitFlags;
- <<ao_master_doc_scan_for_insert_filenames>>
- foreach (line; sourcefile_body_content) {
- <<ao_master_doc_scan_for_insert_filenames_loop>>
- } // end src doc loop
- <<ao_master_doc_scan_for_insert_filenames_post>>
- }
- }
-}
-#+END_SRC
-
-INSERTS?
-[[./ao_scan_inserts.org][ao_scan_inserts]]
-WORK AREA
-
** config files (conf.sdl & sisu_document_make) :ao_config_files:
*** config files, read in
diff --git a/org/compile_time_info.org b/org/compile_time_info.org
index 2dc5eba..ee143eb 100644
--- a/org/compile_time_info.org
+++ b/org/compile_time_info.org
@@ -12,6 +12,19 @@
#+FILETAGS: :sdp:niu:compile:info:
#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+[[./sdp.org][sdp]] [[./][org/]]
+* Code Outline / Structure (tangles) :tangle:
+** compile_time_info: :compile_time_info.d:
+
+#+begin_src d :tangle ../src/sdp/compile_time_info.d
+/++
+ compile_time_info
++/
+template CompileTimeInfo() {
+ <<sdp_compile_time_info>>
+}
+#+end_src
+
* compilation info :compile:
[[../maker.org][maker.org makefile]]
[[./sdp.org][sdp hub]] [[./][org/]]
@@ -90,15 +103,3 @@ version(D_LP64) {
enum bits = "32 bit";
}
#+END_SRC
-
-* tangles :tangle:
-** compile_time_info: :compile_time_info.d:
-
-#+begin_src d :tangle ../src/sdp/compile_time_info.d
-/++
- compile_time_info
-+/
-template CompileTimeInfo() {
- <<sdp_compile_time_info>>
-}
-#+end_src
diff --git a/org/output.org b/org/output.org
index 8331a59..924540c 100644
--- a/org/output.org
+++ b/org/output.org
@@ -13,10 +13,84 @@
#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
[[./sdp.org][sdp]] [[./][org/]]
-* output :output:
+* Code Outline / Structure (tangles) :tangle:
+** output hub template file [#A]
+
+#+BEGIN_SRC d :tangle ../src/sdp/output_hub.d
+/++
+ output hub<BR>
+ check & generate output types requested
++/
+template SiSUoutputHub() {
+ struct SDPoutput {
+ void hub(S)(
+ auto ref const S contents,
+ string[][string] document_section_keys_sequenced,
+ string[] html_segnames,
+ string[string][string] dochead_make,
+ string[string][string] dochead_meta,
+ string fn_src,
+ bool[string] opt_action_bool
+ ) {
+ auto rgx = Rgx();
+ if (opt_action_bool["source"]) {
+ writeln("sisupod source");
+ }
+ if (opt_action_bool["sisupod"]) {
+ writeln("sisupod source");
+ }
+ if (opt_action_bool["text"]) {
+ writeln("text processing");
+ }
+ if (opt_action_bool["html"]) {
+ mixin SiSUoutputHTML;
+ auto html=SDPoutputHTML();
+ html.css_write;
+ html.scroll(
+ contents,
+ document_section_keys_sequenced,
+ dochead_make,
+ dochead_meta,
+ fn_src,
+ opt_action_bool
+ );
+ }
+ if (opt_action_bool["epub"]) {
+ writeln("epub processing");
+ }
+ if (opt_action_bool["pdf"]) {
+ writeln("pdf processing");
+ }
+ if (opt_action_bool["odt"]) {
+ writeln("odt processing");
+ }
+ if (opt_action_bool["sqlite"]) {
+ writeln("sqlite processing");
+ }
+ if (opt_action_bool["postgresql"]) {
+ writeln("pgsql processing");
+ }
+ }
+ }
+}
+#+END_SRC
+
+** templates outpt types (file, db)s
+*** html
+
+#+BEGIN_SRC d :tangle ../src/sdp/output_html.d
+template SiSUoutputHTML() {
+ struct SDPoutputHTML {
+ <<output_html>>
+ <<output_html_css>>
+ }
+}
+#+END_SRC
+
+* output functions :output:
** text :text:
** html [#A] :html:
-*** html
+*** html text objects
**** html functions
***** html
@@ -1603,86 +1677,6 @@ auto css_write() {
** odt :odt:
** sqlite [#B] :sqlite:
** pgsql :pgsql:
-* tangles :tangle:
-** code structure: :output.d:
-
-**** hub
-
-#+BEGIN_SRC d :tangle ../src/sdp/output_hub.d
-/++
- output hub<BR>
- check & generate output types requested
-+/
-template SiSUoutputHub() {
- struct SDPoutput {
- void hub(S)(
- auto ref const S contents,
- string[][string] document_section_keys_sequenced,
- string[] html_segnames,
- string[string][string] dochead_make,
- string[string][string] dochead_meta,
- string fn_src,
- bool[string] opt_action_bool
- ) {
- auto rgx = Rgx();
- if (opt_action_bool["source"]) {
- writeln("sisupod source");
- }
- if (opt_action_bool["sisupod"]) {
- writeln("sisupod source");
- }
- if (opt_action_bool["text"]) {
- writeln("text processing");
- }
- if (opt_action_bool["html"]) {
- mixin SiSUoutputHTML;
- auto html=SDPoutputHTML();
- html.css_write;
- html.scroll(
- contents,
- document_section_keys_sequenced,
- dochead_make,
- dochead_meta,
- fn_src,
- opt_action_bool
- );
- }
- if (opt_action_bool["epub"]) {
- writeln("epub processing");
- }
- if (opt_action_bool["pdf"]) {
- writeln("pdf processing");
- }
- if (opt_action_bool["odt"]) {
- writeln("odt processing");
- }
- if (opt_action_bool["sqlite"]) {
- writeln("sqlite processing");
- }
- if (opt_action_bool["postgresql"]) {
- writeln("pgsql processing");
- }
- }
- }
-}
-#+END_SRC
-
-**** html
-
-#+BEGIN_SRC d :tangle ../src/sdp/output_html.d
-template SiSUoutputHTML() {
- struct SDPoutputHTML {
- <<output_html>>
- <<output_html_css>>
- }
-}
-#+END_SRC
-
-*** notes
-
-0.6.6 using nested structs hub and outputs within it e.g. html
-0.6.5 dmd had problems compiling with hub and outputs such as html as separate structs see comment
-
* +other+
** example head
diff --git a/org/sdp.org b/org/sdp.org
index fad6f12..e359c65 100644
--- a/org/sdp.org
+++ b/org/sdp.org
@@ -13,8 +13,8 @@
#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
[[../maker.org][maker.org makefile]] [[./][org/]]
-
-* TODO version.txt: set version (sisu document parser) :version:
+* 0. Code Outline / Structure (tangles) :tangle:
+** TODO version.txt: set version (sisu document parser) :version:
#+NAME: version_txt
#+BEGIN_SRC d :tangle ../views/version.txt
@@ -24,10 +24,52 @@ struct Version {
int minor;
int patch;
}
-enum ver = Version(0, 9, 4);
+enum ver = Version(0, 9, 6);
+#+END_SRC
+
+** TODO sdp src/sdp.d :sdp.d:
+
+#+BEGIN_SRC d :tangle ../src/sdp.d :shebang #!/usr/bin/env rdmd
+/+
+ sdp
++/
+<<imports_sdp>>
+<<imports_sdlang>>
+<<imports_std>>
+<<sdp_output_selection>>
+<<sdp_version_mixin>>
+<<std_mixins>>
+/++ A SiSU document parser writen in D. +/
+void main(string[] args) {
+ <<sdp_mixin>>
+ <<sdp_args>>
+ <<sdp_conf_files>>
+ foreach(fn_src; fns_src) {
+ if (!empty(fn_src)) {
+ <<sdp_each_file_do_scope>>
+ <<sdp_each_file_do_read_sisu_markup_file>>
+ <<sdp_each_file_do_split_sisu_markup_file_content_into_header_and_body>>
+ <<sdp_each_file_do_split_sisu_markup_file_header_into_make_and_meta>>
+ <<sdp_each_file_do_document_abstraction>>
+ <<sdp_each_file_do_debugs_checkdoc>>
+ <<sdp_each_file_do_selected_output>>
+ <<sdp_each_file_do_scope_exit>>
+ } else {
+ <<sdp_no_filename_provided>>
+ }
+ }
+}
+unittest {
+ /++
+ name "sdp"
+ description "A SiSU document parser writen in D."
+ homepage "http://sisudoc.org"
+ +/
+}
#+END_SRC
* sdp.d sisu document parser :sdp.d:
+
- deal with imports
- get options
- get command line instructions
@@ -494,47 +536,8 @@ writeln("no recognized filename");
break;
#+END_SRC
-* tangles (code structure) :tangle:
-** TODO sdp src/sdp.d :sdp.d:
-
-#+BEGIN_SRC d :tangle ../src/sdp.d :shebang #!/usr/bin/env rdmd
-/+
- sdp
-+/
-<<imports_sdp>>
-<<imports_sdlang>>
-<<imports_std>>
-<<sdp_output_selection>>
-<<sdp_version_mixin>>
-<<std_mixins>>
-/++ A SiSU document parser writen in D. +/
-void main(string[] args) {
- <<sdp_mixin>>
- <<sdp_args>>
- <<sdp_conf_files>>
- foreach(fn_src; fns_src) {
- if (!empty(fn_src)) {
- <<sdp_each_file_do_scope>>
- <<sdp_each_file_do_read_sisu_markup_file>>
- <<sdp_each_file_do_split_sisu_markup_file_content_into_header_and_body>>
- <<sdp_each_file_do_split_sisu_markup_file_header_into_make_and_meta>>
- <<sdp_each_file_do_document_abstraction>>
- <<sdp_each_file_do_debugs_checkdoc>>
- <<sdp_each_file_do_selected_output>>
- <<sdp_each_file_do_scope_exit>>
- } else {
- <<sdp_no_filename_provided>>
- }
- }
-}
-unittest {
- /++
- name "sdp"
- description "A SiSU document parser writen in D."
- homepage "http://sisudoc.org"
- +/
-}
-#+END_SRC
+* Notes
+** directory structure, program file arrangement
├── src
│   ├── sdp.d
@@ -554,11 +557,11 @@ unittest {
├── views
│   └── version.txt
-* TODO work on
-** program dir structure
+** TODO work on
+*** program dir structure
figure out best program dir structure for dub and compilers, issue with rdmd
-** sisu document structure
+*** sisu document structure
|---------------------+------------------------------------------+------------------------+------------------------+--------|
| | | | links | |
@@ -615,16 +618,16 @@ figure out best program dir structure for dub and compilers, issue with rdmd
- seg ../[fn]/#[ocn]
- metadata
-** config :config:
+*** config :config:
using sdlang in sdp
-*** sdp config and header? file format? sdl ? yml ? json ? :sdl:sdlang:
+**** sdp config and header? file format? sdl ? yml ? json ? :sdl:sdlang:
[[https://sdlang.org/][SDL: Simple Declarative Language]] [[http://sdl4r.rubyforge.org/syntaxhighlighter_brush.html][highlighter]]
https://github.com/Abscissa/SDLang-D
https://github.com/Abscissa/SDLang-D/blob/master/HOWTO.md
-**** build/ compile
+***** build/ compile
The recommended way to use SDLang-D is via DUB. Just add a dependency to
sdlang-d in your project's dub.json or dub.sdl file as shown here. Then simply
@@ -647,7 +650,7 @@ git clone https://github.com/abscissa/libInputVisitor
-I{path to SDLang-D}/src -I{path to libInputVisitor}/src
#+END_SRC
-**** Importing
+***** Importing
To use SDL, first import the module sdlang:
@@ -661,15 +664,15 @@ If you're not using DUB, then you must also include the path the SDLang-D source
rdmd --build-only -I{path to sdlang}/src -I{path to libInputVisitor}/src {other flags} yourProgram.d
#+END_SRC
-**** misc
+***** misc
http://forum.dlang.org/thread/hphtqkkmrfnlcipnxzai@forum.dlang.org
http://forum.dlang.org/thread/gnfctbuhiemidetngrzi@forum.dlang.org?page=23#post-rlxlfveyyzgewhkxhhta:40forum.dlang.org
-*** other links
+**** other links
http://semitwist.com/sdlang-d-docs/v0.9.3/sdlang.html http://semitwist.com/sdlang-d-docs/
-** markup
-*** code
+*** markup
+**** code
#+BEGIN_SRC txt :tangle no
code.ruby{
@@ -693,7 +696,7 @@ code.d{
}code
#+END_SRC
-** src dir structure & files
+*** src dir structure & files
#+BEGIN_SRC txt :tangle no
tree /home/ralph/sisu_www/current/src/democratizing_innovation.eric_von_hippel.sst
@@ -715,13 +718,13 @@ democratizing_innovation.eric_von_hippel.sst
#+END_SRC
-** read markup files
-*** regular .sst
+*** read markup files
+**** regular .sst
relatively straight forward
-*** master .ssm
+**** master .ssm
master files have been able to read in inser files .ssi and regular files .sst
-**** reading in .ssi files is straightforward
-**** reading in .sst files is more problematic
+***** reading in .ssi files is straightforward
+***** reading in .sst files is more problematic
.sst files have their own root (structure)
either
- the root needs to be disabled - not used
@@ -735,8 +738,8 @@ or
file would have to read and available for use in its header A that is demoted
to B
-** processing files, currently using utf8
-** check
+*** processing files, currently using utf8
+*** check
#+BEGIN_SRC text
./.sisu ./_sisu ~/.sisu /etc/.sisu
diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d
index 5431b3d..944a720 100644
--- a/src/sdp/ao_abstract_doc_source.d
+++ b/src/sdp/ao_abstract_doc_source.d
@@ -2449,6 +2449,7 @@ template SiSUdocAbstraction() {
invariant() {
}
}
+ /+ +/
struct ObjInlineMarkupMunge {
string[string] obj_txt;
int n_foot, n_foot_reg, n_foot_sp_asterisk, n_foot_sp_plus;
@@ -3085,6 +3086,7 @@ template SiSUdocAbstraction() {
assert(_make_segment_anchor_tags_if_none_provided(txt_in, txt_lev) == txt_out);
}
}
+ /+ +/
struct ObjAttributes {
string[string] _obj_attrib;
string obj_attributes(
@@ -3297,6 +3299,7 @@ template SiSUdocAbstraction() {
return _obj_attrib;
}
}
+ /+ +/
struct BookIndexNuggetHash {
string main_term, sub_term, sub_term_bits;
int obj_cite_number_offset, obj_cite_number_endpoint;
@@ -3585,6 +3588,7 @@ template SiSUdocAbstraction() {
return t;
}
}
+ /+ +/
struct NotesSection {
string[string] object_notes;
int previous_count;
@@ -3768,6 +3772,7 @@ template SiSUdocAbstraction() {
return t;
}
}
+ /+ +/
struct Bibliography {
public JSONValue[] _bibliography_(
ref string[] biblio_unsorted_incomplete,
@@ -3848,6 +3853,7 @@ template SiSUdocAbstraction() {
}
}
}
+ /+ +/
struct NodeStructureMetadata {
int lv, lv0, lv1, lv2, lv3, lv4, lv5, lv6, lv7;
int obj_cite_number;
diff --git a/views/version.txt b/views/version.txt
index 4f49ef6..9472cf9 100644
--- a/views/version.txt
+++ b/views/version.txt
@@ -4,4 +4,4 @@ struct Version {
int minor;
int patch;
}
-enum ver = Version(0, 9, 4);
+enum ver = Version(0, 9, 5);