aboutsummaryrefslogtreecommitdiffhomepage
path: root/org/meta_abstraction.org
diff options
context:
space:
mode:
Diffstat (limited to 'org/meta_abstraction.org')
-rw-r--r--org/meta_abstraction.org768
1 files changed, 266 insertions, 502 deletions
diff --git a/org/meta_abstraction.org b/org/meta_abstraction.org
index 8f2b76a..35d443f 100644
--- a/org/meta_abstraction.org
+++ b/org/meta_abstraction.org
@@ -29,64 +29,61 @@ Process markup document, create document abstraction.
+/
module doc_reform.meta.metadoc_from_src;
template DocReformDocAbstraction() {
- /+ ↓ abstraction imports +/
+ /+ ↓ abstraction imports +/
<<abs_top_imports>>
- /+ ↓ abstraction mixins +/
+ /+ ↓ abstraction mixins +/
<<abs_top_mixins>>
- /+ ↓ abstraction struct init +/
+ /+ ↓ abstraction struct init +/
<<abs_top_init_struct>>
<<abs_inline_para_tag_associations>>
- /+ ↓ abstract marked up document +/
- auto DocReformDocAbstraction(Src,CMM,Opt,Mfst)(
- Src markup_sourcefile_content,
- CMM conf_make_meta,
- Opt opt_action,
- Mfst manifest_matter,
- bool _new_doc
+ /+ ↓ abstract marked up document +/
+ auto DocReformDocAbstraction(CMM,Opt,Mf)(
+ char[][] markup_sourcefile_content,
+ CMM conf_make_meta,
+ Opt opt_action,
+ Mf manifest_matter,
+ bool _new_doc
) {
static auto rgx = Rgx();
- debug(asserts) {
- static assert(is(typeof(markup_sourcefile_content) == char[][]));
- }
- /+ ↓ abstraction init +/
+ /+ ↓ abstraction init +/
<<abs_init_rest>>
- /+ abstraction init ↑ +/
+ /+ abstraction init ↑ +/
<<make_tests>>
- /+ ↓ ↻ loop markup document/text line by line +/
+ /+ ↓ ↻ loop markup document/text line by line +/
srcDocLoop:
- foreach (line; markup_sourcefile_content) { /+ ↓ markup document/text line by line +/
- // "line" variable can be empty but should never be null
+ foreach (line; markup_sourcefile_content) { /+ ↓ markup document/text line by line +/
+ // "line" variable can be empty but should never be null
<<abs_in_loop_body_00>>
if (obj_type_status["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) +/
- /+ heading, glossary, blurb, poem, group, block, quote, table +/
+ } else if (!matchFirst(line, rgx.skip_from_regular_parse)) { /+ object other than "code block" object +/
+ /+ (includes regular text paragraph, headings & blocks other than code) +/
+ /+ heading, glossary, blurb, poem, group, block, quote, table +/
<<abs_in_loop_body_non_code_obj>>
- } else { /+ not within a block group +/
+ } else { /+ not within a block group +/
<<abs_in_loop_body_open_block_obj_assert>>
if (line.matchFirst(rgx.block_open)) {
<<abs_in_loop_body_open_block_obj>>
- } else if (!line.empty) { /+ line not empty +/
- /+ non blocks (headings, paragraphs) & closed blocks +/
+ } else if (!line.empty) { /+ line not empty +/
+ /+ non blocks (headings, paragraphs) & closed blocks +/
<<abs_in_loop_body_not_block_obj>>
- } else if (obj_type_status["blocks"] == TriState.closing) { /+ line empty, with blocks flag +/
+ } else if (obj_type_status["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: +/
+ } 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
+ } // 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>>
- } /+ ← srcDocLoop closed: loop markup document/text line by line +/
- /+ ↓ post loop markup document/text +/
+ } /+ ← srcDocLoop closed: loop markup document/text line by line +/
+ /+ ↓ post loop markup document/text +/
<<abs_post>>
<<abs_post_doc_reloop_processing>>
<<abs_struct_doc_has>>
<<abs_return_tuple>>
- /+ post loop markup document/text ↑ +/
- } /+ ← closed: abstract doc source +/
- /+ ↓ abstraction functions +/
+ /+ post loop markup document/text ↑ +/
+ } /+ ← closed: abstract doc source +/
+ /+ ↓ abstraction functions +/
<<abs_functions_object_reset>>
<<abs_functions_header_set_common>>
<<abs_functions_ocn_status>>
@@ -104,10 +101,10 @@ template DocReformDocAbstraction() {
<<abs_functions_heading>>
<<abs_functions_para>>
<<abs_functions_table>>
- /+ abstraction functions ↑ +/
- /+ ↓ abstraction function emitters +/
+ /+ abstraction functions ↑ +/
+ /+ ↓ abstraction function emitters +/
<<meta_emitters_ocn>>
- /+ +/
+ /+ +/
<<meta_emitters_obj_inline_markup_munge>>
<<meta_emitters_obj_inline_markup>>
<<meta_emitters_obj_inline_markup_and_anchor_tags_and_misc>>
@@ -115,28 +112,28 @@ template DocReformDocAbstraction() {
<<meta_emitters_obj_inline_markup_private>>
<<meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags>>
<<meta_emitters_obj_inline_markup_close>>
- /+ +/
+ /+ +/
<<meta_emitters_obj_attributes>>
<<meta_emitters_obj_attributes_public>>
<<meta_emitters_obj_attributes_private>>
<<meta_emitters_obj_attributes_private_an_attribute>>
<<meta_emitters_obj_attributes_private_json>>
<<meta_emitters_obj_attributes_private_close>>
- /+ +/
+ /+ +/
<<meta_emitters_book_index_nugget>>
<<meta_emitters_book_index_report_indented>>
<<meta_emitters_book_index_report_section>>
- /+ +/
+ /+ +/
<<meta_emitters_endnotes>>
- /+ +/
+ /+ +/
<<meta_emitters_bibliography>>
- /+ +/
+ /+ +/
<<meta_emitters_metadata>>
- /+ abstraction functions emitters ↑ +/
- /+ ↓ abstraction functions assertions +/
+ /+ abstraction functions emitters ↑ +/
+ /+ ↓ abstraction functions assertions +/
<<abs_functions_assertions>>
- /+ abstraction functions assertions ↑ +/
-} /+ ← closed: template DocReformDocAbstraction +/
+ /+ abstraction functions assertions ↑ +/
+} /+ ← closed: template DocReformDocAbstraction +/
<<template_doc_sect_keys_seq>>
#+END_SRC
@@ -247,9 +244,9 @@ enum DomTags { none, open, close, close_and_open, open_still, }
#+name: abs_top_init_struct
#+BEGIN_SRC d
-pure auto obj_heading_ancestors(O)(
- O obj,
- string[] lv_ancestors_txt,
+pure ObjGenericComposite obj_heading_ancestors()(
+ ObjGenericComposite obj,
+ string[] lv_ancestors_txt,
) {
switch (obj.metainfo.heading_lev_markup) {
case 0:
@@ -306,10 +303,10 @@ pure auto obj_heading_ancestors(O)(
#+name: abs_top_init_struct
#+BEGIN_SRC d
-pure auto obj_dom_structure_set_markup_tags(O)(
- O obj,
- int[] dom,
- int lev
+pure ObjGenericComposite obj_dom_structure_set_markup_tags()(
+ ObjGenericComposite obj,
+ int[] dom,
+ int lev
) {
foreach (i; 0 .. 8) {
if (i < lev) {
@@ -356,10 +353,10 @@ pure auto obj_dom_structure_set_markup_tags(O)(
#+name: abs_top_init_struct
#+BEGIN_SRC d
-pure auto obj_dom_set_collapsed_tags(O)(
- O obj,
- int[] dom,
- int lev
+pure ObjGenericComposite obj_dom_set_collapsed_tags()(
+ ObjGenericComposite obj,
+ int[] dom,
+ int lev
) {
foreach (i; 0 .. 8) {
if (i < lev) {
@@ -420,7 +417,7 @@ static auto inline_markup_faces(L)(L line) {
}
return line;
}
-static auto links_and_images(L)(L obj_txt) {
+static string links_and_images()(string obj_txt) {
static auto rgx = Rgx();
static auto mkup = InlineMarkup();
if (obj_txt.match(rgx.smid_inline_url_generic)) {
@@ -473,10 +470,10 @@ enum sObj { content, anchor_tag, notes_reg, notes_star, links, image_no_dimensio
#+name: abs_inline_para_tag_associations
#+BEGIN_SRC d
-auto inline_para_link_anchor(O,St,TA)(
- O an_object,
- St tag_in_seg,
- TA tag_assoc
+string[string][string] inline_para_link_anchor()(
+ string[string] an_object,
+ string[string] tag_in_seg,
+ string[string][string] tag_assoc
) {
static auto rgx = Rgx();
if (auto m = an_object["substantive"].match(rgx.inline_link_anchor)) {
@@ -577,7 +574,7 @@ string[string] heading_match_str = [
"h_3": "^(none)",
"h_4": "^(none)"
];
-auto heading_match_rgx = [
+Regex!char[string] heading_match_rgx = [
"h_A": regex(r"^(none)"),
"h_B": regex(r"^(none)"),
"h_C": regex(r"^(none)"),
@@ -1711,7 +1708,7 @@ debug(bibliosection) {
***** bibliography components
-auto biblio_entry_tags_jsonstr = `{
+JSONValue biblio_entry_tags_jsonstr = `{
"is" : "",
"sortby_deemed_author_year_title" : "",
"deemed_author" : "",
@@ -2266,7 +2263,7 @@ Build here:
#+name: abs_post
#+BEGIN_SRC d
-auto get_decendants(S)(S document_sections) {
+auto get_decendants()(ObjGenericComposite[] document_sections) {
int[string] _heading_ocn_decendants;
string[] _ocn_open_key = ["","","","","","","",""];
auto _doc_sect_length = document_sections.length - 1;
@@ -2320,7 +2317,7 @@ auto get_decendants(S)(S document_sections) {
#+name: abs_post
#+BEGIN_SRC d
string[] _images;
-auto extract_images(S)(S content_block) {
+string[] extract_images()(string content_block) {
string[] images_;
if (auto m = content_block.matchAll(rgx.image)) {
images_ ~= m.captures[1];
@@ -2923,7 +2920,7 @@ comp_obj_heading_ = comp_obj_heading_.obj_heading_ancestors(lv_ancestors_txt);
#+name: abs_post
#+BEGIN_SRC d
-auto document_the = [
+ObjGenericComposite[][string] document_the = [
"head": the_document_head_section,
"toc": the_table_of_contents_section,
/+ substantive/body: +/
@@ -2985,8 +2982,8 @@ if ((opt_action.html)
#+name: abs_post
#+BEGIN_SRC d
-auto segnames_4 = segnames["html"].dup;
-auto segnames_lv1_to_4 = segnames["epub"].dup;
+string[] segnames_4 = segnames["html"].dup;
+string[] segnames_lv1_to_4 = segnames["epub"].dup;
debug(segnames) {
writeln("segnames_lv4: ", segnames_4);
writeln("segnames_lv1_to_4: ", segnames_lv1_to_4);
@@ -3096,10 +3093,7 @@ functions used in document abstraction
#+name: abs_functions_object_reset
#+BEGIN_SRC d
-static auto object_reset(O)(O an_object) {
- debug(asserts) {
- static assert(is(typeof(an_object) == string[string]));
- }
+static string[string] object_reset()(string[string] an_object) {
an_object.remove("body_nugget");
an_object.remove("substantive");
an_object.remove("is");
@@ -3113,16 +3107,11 @@ static auto object_reset(O)(O an_object) {
#+name: abs_functions_header_set_common
#+BEGIN_SRC d
-auto flow_common_reset_(L,O,T)(
- return ref L line_occur,
- return ref O an_object,
- return ref T obj_type_status
+void flow_common_reset_()(
+ return ref int[string] line_occur,
+ return ref string[string] an_object,
+ return ref int[string] obj_type_status,
) {
- debug(asserts) {
- static assert(is(typeof(line_occur) == int[string]));
- static assert(is(typeof(an_object) == string[string]));
- static assert(is(typeof(obj_type_status) == int[string]));
- }
line_occur["heading"] = State.off;
line_occur["para"] = State.off;
obj_type_status["heading"] = State.off;
@@ -3135,14 +3124,10 @@ auto flow_common_reset_(L,O,T)(
#+name: abs_functions_ocn_status
#+BEGIN_SRC d
-static auto _check_ocn_status_(L,T)(
- L line,
- T obj_type_status
+static int[string] _check_ocn_status_()(
+ char[] line,
+ int[string] obj_type_status,
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- static assert(is(typeof(obj_type_status) == int[string]));
- }
static auto rgx = Rgx();
if (!(line.empty)
&& (obj_type_status["ocn_status_off_for_multiple_objects"] == OCN_off_block_status.off)
@@ -3205,13 +3190,10 @@ static auto _check_ocn_status_(L,T)(
#+name: abs_functions_substitutions
#+BEGIN_SRC d
-auto _doc_header_and_make_substitutions_(L,CMM)(
- L line,
- CMM conf_make_meta,
+char[] _doc_header_and_make_substitutions_(CMM)(
+ char[] line,
+ CMM conf_make_meta,
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- }
enum Substitute { match, markup, }
if (conf_make_meta.make.substitute) {
foreach(substitution_pair; conf_make_meta.make.substitute) {
@@ -3229,13 +3211,10 @@ auto _doc_header_and_make_substitutions_(L,CMM)(
#+name: abs_functions_substitutions
#+BEGIN_SRC d
-auto _doc_header_and_make_substitutions_fontface_(L,CMM)(
- L line,
- CMM conf_make_meta,
+char[] _doc_header_and_make_substitutions_fontface_(CMM)(
+ char[] line,
+ CMM conf_make_meta,
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- }
enum Substitute { match, markup, }
if ( conf_make_meta.make.bold) {
line = line.replaceAll(
@@ -3265,17 +3244,12 @@ auto _doc_header_and_make_substitutions_fontface_(L,CMM)(
#+name: abs_functions_block
#+BEGIN_SRC d
-void flow_txt_block_start(L,T,N)(
- L line,
- return ref T obj_type_status,
+void flow_txt_block_start()(
+ char[] line,
+ return ref int[string] obj_type_status,
return ref uint[string] dochas,
- return ref N object_number_poem
+ return ref string[string] object_number_poem
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- static assert(is(typeof(obj_type_status) == int[string]));
- static assert(is(typeof(object_number_poem) == string[string]));
- }
#+END_SRC
****** block (various) curly open :curly:
@@ -3554,16 +3528,11 @@ void flow_txt_block_start(L,T,N)(
#+name: abs_functions_block_code
#+BEGIN_SRC d
-void flow_txt_block_code(L,O,T)(
- L line,
- return ref O an_object,
- return ref T obj_type_status
+void flow_txt_block_code()(
+ char[] line,
+ return ref string[string] an_object,
+ return ref int[string] obj_type_status
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- static assert(is(typeof(an_object) == string[string]));
- static assert(is(typeof(obj_type_status) == int[string]));
- }
static auto rgx = Rgx();
if (obj_type_status["curly_code"] == TriState.on) {
if (line.matchFirst(rgx.block_curly_code_close)) {
@@ -3608,10 +3577,7 @@ void flow_txt_block_code(L,O,T)(
#+name: abs_functions_block_biblio
#+BEGIN_SRC d
-final string biblio_tag_map(A)(A abr) {
- debug(asserts) {
- static assert(is(typeof(abr) == string));
- }
+final string biblio_tag_map()(string abr) {
auto btm = [
"au" : "author_raw",
"ed" : "editor_raw",
@@ -3636,10 +3602,7 @@ final string biblio_tag_map(A)(A abr) {
#+name: none
#+BEGIN_SRC d
-final string biblio_tag_map_(A)(A abr) {
- debug(asserts) {
- static assert(is(typeof(abr) == string));
- }
+final string biblio_tag_map_()(string abr) {
string name;
switch (abr) {
case "au": name="author_raw"; break;
@@ -3801,16 +3764,11 @@ void flow_txt_block_biblio(
#+name: abs_functions_block_quote
#+BEGIN_SRC d
-auto flow_txt_block_quote(L,O,T)(
- L line,
- O an_object,
- return ref T obj_type_status
+string[string] flow_txt_block_quote()(
+ char[] line,
+ string[string] an_object,
+ return ref int[string] obj_type_status
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- static assert(is(typeof(an_object) == string[string]));
- static assert(is(typeof(obj_type_status) == int[string]));
- }
static auto rgx = Rgx();
if (obj_type_status["curly_quote"] == TriState.on) {
if (line.matchFirst(rgx.block_curly_quote_close)) {
@@ -3854,16 +3812,11 @@ auto flow_txt_block_quote(L,O,T)(
#+name: abs_functions_block_group
#+BEGIN_SRC d
-auto flow_txt_block_group(L,O,T)(
- L line,
- O an_object,
- return ref T obj_type_status
+string[string] flow_txt_block_group()(
+ char[] line,
+ string[string] an_object,
+ return ref int[string] obj_type_status
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- static assert(is(typeof(an_object) == string[string]));
- static assert(is(typeof(obj_type_status) == int[string]));
- }
static auto rgx = Rgx();
if (obj_type_status["curly_group"] == State.on) {
if (line.matchFirst(rgx.block_curly_group_close)) {
@@ -3908,16 +3861,11 @@ auto flow_txt_block_group(L,O,T)(
#+name: abs_functions_block_block
#+BEGIN_SRC d
-auto flow_txt_block_block(L,O,T)(
- L line,
- O an_object,
- return ref T obj_type_status
+string[string] flow_txt_block_block()(
+ char[] line,
+ string[string] an_object,
+ return ref int[string] obj_type_status
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- static assert(is(typeof(an_object) == string[string]));
- static assert(is(typeof(obj_type_status) == int[string]));
- }
static auto rgx = Rgx();
if (obj_type_status["curly_block"] == TriState.on) {
if (line.matchFirst(rgx.block_curly_block_close)) {
@@ -3960,22 +3908,15 @@ why extra object stuff only in poem/verse?
#+name: abs_functions_block_poem
#+BEGIN_SRC d
-auto flow_txt_block_poem(L,O,T,C,N,CMM,Ts)(
- L line,
- O an_object,
- return ref T obj_type_status,
- return ref C cntr,
- N object_number_poem,
- CMM conf_make_meta,
- Ts tag_in_seg,
+string[string] flow_txt_block_poem(CMM)(
+ char[] line,
+ string[string] an_object,
+ return ref int[string] obj_type_status,
+ return ref int cntr,
+ string[string] object_number_poem,
+ CMM conf_make_meta,
+ string[string] tag_in_seg,
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- static assert(is(typeof(an_object) == string[string]));
- static assert(is(typeof(obj_type_status) == int[string]));
- static assert(is(typeof(cntr) == int));
- static assert(is(typeof(object_number_poem) == string[string]));
- }
static auto rgx = Rgx();
if (obj_type_status["curly_poem"] == TriState.on) {
if (line.matchFirst(rgx.block_curly_poem_close)) {
@@ -4231,17 +4172,12 @@ you need:
#+name: abs_functions_block_table
#+BEGIN_SRC d
-auto flow_txt_block_table(L,O,T,CMM)(
- L line,
- O an_object,
- return ref T obj_type_status,
- return ref CMM conf_make_meta,
+string[string] flow_txt_block_table(CMM)(
+ char[] line,
+ string[string] an_object,
+ return ref int[string] obj_type_status,
+ return ref CMM conf_make_meta,
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- static assert(is(typeof(an_object) == string[string]));
- static assert(is(typeof(obj_type_status) == int[string]));
- }
static auto rgx = Rgx();
if (obj_type_status["curly_table"] == TriState.on) {
if (line.matchFirst(rgx.block_curly_table_close)) {
@@ -4355,7 +4291,7 @@ void flow_table_closed_make_special_notation_table_(N,CMM)(
#+name: abs_functions_block_line_status_empty
#+BEGIN_SRC d
-auto flow_block_flag_line_empty_(B,N,CMM,Ts)(
+string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)(
char[] line,
string[string] an_object,
B bookindex_extract_hash,
@@ -4711,19 +4647,13 @@ auto flow_block_flag_line_empty_(B,N,CMM,Ts)(
#+name: abs_functions_book_index
#+BEGIN_SRC d
-auto flow_book_index_(L,I,O,T,B)(
- L line,
- O an_object,
- I book_idx_tmp,
- return ref T obj_type_status,
- B opt_action,
+string[string] flow_book_index_(B)(
+ char[] line,
+ string[string] an_object,
+ return ref string book_idx_tmp,
+ return ref int[string] obj_type_status,
+ B opt_action,
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- static assert(is(typeof(book_idx_tmp) == string));
- static assert(is(typeof(an_object) == string[string]));
- static assert(is(typeof(obj_type_status) == int[string]));
- }
static auto rgx = Rgx();
if (auto m = line.match(rgx.book_index)) { /+ match book_index +/
debug(bookindexmatch) {
@@ -4774,20 +4704,13 @@ auto flow_book_index_(L,I,O,T,B)(
#+name: abs_functions_heading
#+BEGIN_SRC d
-auto flow_heading_found_(L,H,X,R,T)(
- L line,
- H heading_match_str,
- X _make_unmarked_headings,
- return ref R heading_match_rgx,
- return ref T obj_type_status
+string[string] flow_heading_found_()(
+ char[] line,
+ string[string] heading_match_str,
+ string[] _make_unmarked_headings,
+ return ref Regex!(char)[string] heading_match_rgx,
+ return ref int[string] obj_type_status
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- static assert(is(typeof(_make_unmarked_headings) == string[]));
- static assert(is(typeof(heading_match_str) == string[string]));
- static assert(is(typeof(heading_match_rgx) == Regex!(char)[string]));
- static assert(is(typeof(obj_type_status) == int[string]));
- }
static auto rgx = Rgx();
if ((_make_unmarked_headings.length > 2)
&& (obj_type_status["make_headings"] == State.off)) { /+ headings found +/
@@ -4868,18 +4791,12 @@ auto flow_heading_found_(L,H,X,R,T)(
#+name: abs_functions_heading
#+BEGIN_SRC d
-auto flow_heading_make_set_(L,C,R,T)(
- L line,
- C line_occur,
- return ref R heading_match_rgx,
- return ref T obj_type_status
+char[] flow_heading_make_set_()(
+ char[] line,
+ int[string] line_occur,
+ return ref Regex!(char)[string] heading_match_rgx,
+ return ref int[string] obj_type_status
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- static assert(is(typeof(line_occur) == int[string]));
- static assert(is(typeof(heading_match_rgx) == Regex!(char)[string]));
- static assert(is(typeof(obj_type_status) == int[string]));
- }
if ((obj_type_status["make_headings"] == State.on)
&& ((line_occur["para"] == State.off)
&& (line_occur["heading"] == State.off))
@@ -4936,25 +4853,16 @@ auto flow_heading_make_set_(L,C,R,T)(
#+name: abs_functions_heading
#+BEGIN_SRC d
-auto flow_heading_matched_(L,C,O,K,Lv,Lc,T,CMM)(
- L line,
- O an_object,
- return ref C line_occur,
- return ref K an_object_key,
- return ref Lv lv,
- return ref Lc collapsed_lev,
- return ref T obj_type_status,
- return ref CMM conf_make_meta,
+string[string] flow_heading_matched_(CMM)(
+ char[] line,
+ string[string] an_object,
+ return ref int[string] line_occur,
+ return ref string an_object_key,
+ return ref int[string] lv,
+ return ref int[string] collapsed_lev,
+ return ref int[string] obj_type_status,
+ return ref CMM conf_make_meta,
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- static assert(is(typeof(line_occur) == int[string]));
- static assert(is(typeof(an_object) == string[string]));
- static assert(is(typeof(an_object_key) == string));
- static assert(is(typeof(lv) == int[string]));
- static assert(is(typeof(collapsed_lev) == int[string]));
- static assert(is(typeof(obj_type_status) == int[string]));
- }
static auto rgx = Rgx();
if (auto m = line.match(rgx.heading)) { /+ heading match +/
++line_occur["heading"];
@@ -5097,24 +5005,15 @@ auto flow_heading_matched_(L,C,O,K,Lv,Lc,T,CMM)(
#+name: abs_functions_para
#+BEGIN_SRC d
-auto flow_para_match_(L,O,K,I,B,T,C)(
- L line,
- O an_object,
- return ref K an_object_key,
- return ref I indent,
- return ref B bullet,
- return ref T obj_type_status,
- return ref C line_occur,
+string[string] flow_para_match_()(
+ char[] line,
+ string[string] an_object,
+ return ref string an_object_key,
+ return ref int[string] indent,
+ return ref bool bullet,
+ return ref int[string] obj_type_status,
+ return ref int[string] line_occur,
) {
- debug(asserts) {
- static assert(is(typeof(line) == char[]));
- static assert(is(typeof(an_object) == string[string]));
- static assert(is(typeof(an_object_key) == string));
- static assert(is(typeof(indent) == int[string]));
- static assert(is(typeof(bullet) == bool));
- static assert(is(typeof(obj_type_status) == int[string]));
- static assert(is(typeof(line_occur) == int[string]));
- }
static auto rgx = Rgx();
if (line_occur["para"] == State.off) {
line = font_faces_line(line);
@@ -5165,8 +5064,8 @@ auto flow_para_match_(L,O,K,I,B,T,C)(
#+name: abs_functions_para
#+BEGIN_SRC d
-auto font_faces_line(T)(
- T textline,
+char[] font_faces_line()(
+ char[] textline,
) {
static auto rgx = Rgx();
static auto mkup = InlineMarkup();
@@ -5194,9 +5093,9 @@ auto font_faces_line(T)(
#+name: abs_functions_table
#+BEGIN_SRC d
-auto flow_table_instructions(O,H)(
- return ref O table_object,
- return ref H table_head,
+ObjGenericComposite flow_table_instructions(H)(
+ return ref ObjGenericComposite table_object,
+ H table_head,
) {
static auto rgx = Rgx();
table_object.metainfo.is_of_part = "body";
@@ -5225,9 +5124,9 @@ auto flow_table_instructions(O,H)(
#+name: abs_functions_table
#+BEGIN_SRC d
-auto flow_table_array_munge(O,T)(
- return ref O table_object,
- return ref T table_array,
+ObjGenericComposite flow_table_array_munge(T)(
+ return ref ObjGenericComposite table_object,
+ return ref T table_array,
) {
static auto rgx = Rgx();
static auto mng = InlineMarkup();
@@ -5355,9 +5254,9 @@ auto flow_table_array_munge(O,T)(
#+name: abs_functions_table
#+BEGIN_SRC d
-auto flow_table_substantive_munge(O,T)(
- return ref O table_object,
- return ref T table_substantive,
+ObjGenericComposite flow_table_substantive_munge(T)(
+ return ref ObjGenericComposite table_object,
+ return ref T table_substantive,
) {
static auto rgx = Rgx();
static auto munge = ObjInlineMarkupMunge();
@@ -5377,9 +5276,9 @@ auto flow_table_substantive_munge(O,T)(
#+name: abs_functions_table
#+BEGIN_SRC d
-auto flow_table_substantive_munge_special(O,T)(
- return ref O table_object,
- return ref T table_substantive,
+ObjGenericComposite flow_table_substantive_munge_special(T)(
+ return ref ObjGenericComposite table_object,
+ return ref T table_substantive,
) {
static auto rgx = Rgx();
static auto munge = ObjInlineMarkupMunge();
@@ -5475,10 +5374,7 @@ static struct ObjInlineMarkupMunge {
#+name: meta_emitters_obj_inline_markup_munge
#+BEGIN_SRC d
- static auto images(Ot)(Ot obj_txt_in) {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
+ static auto images()(string obj_txt_in) {
static auto mng = InlineMarkup();
/+ url matched +/
obj_txt_in = obj_txt_in.replaceAll(rgx.inline_notes_al_special, ""); // TODO reinstate when special footnotes are implemented
@@ -5514,10 +5410,7 @@ static struct ObjInlineMarkupMunge {
#+name: meta_emitters_obj_inline_markup_munge
#+BEGIN_SRC d
- auto footnotes_endnotes_markup_and_number_or_stars(Ot)(Ot obj_txt_in, bool reset_note_numbers) {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
+ auto footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) {
/+ endnotes (regular) +/
bool flg_notes_reg = false;
bool flg_notes_star = false;
@@ -5587,11 +5480,8 @@ static struct ObjInlineMarkupMunge {
#+name: meta_emitters_obj_inline_markup_munge
#+BEGIN_SRC d
- private auto object_notes_and_links_(Ot)(Ot obj_txt_in, bool reset_note_numbers=false)
+ private auto object_notes_and_links_()(string obj_txt_in, bool reset_note_numbers=false)
in {
- debug(asserts) {
- assert(is(typeof(obj_txt_in) == string));
- }
}
body {
obj_txt_out = "";
@@ -5663,11 +5553,8 @@ static struct ObjInlineMarkupMunge {
#+name: meta_emitters_obj_inline_markup_munge
#+BEGIN_SRC d
- auto munge_heading(Ot)(Ot obj_txt_in, bool reset_note_numbers=false)
+ auto munge_heading()(string obj_txt_in, bool reset_note_numbers=false)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
obj_txt["munge"] = obj_txt_in
@@ -5697,11 +5584,8 @@ static struct ObjInlineMarkupMunge {
#+name: meta_emitters_obj_inline_markup_munge
#+BEGIN_SRC d
- auto munge_para(Ot)(Ot obj_txt_in)
+ auto munge_para()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
obj_txt["munge"]=(obj_txt_in)
@@ -5722,11 +5606,8 @@ static struct ObjInlineMarkupMunge {
#+name: meta_emitters_obj_inline_markup_munge
#+BEGIN_SRC d
- string munge_quote(Ot)(Ot obj_txt_in)
+ string munge_quote()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
obj_txt["munge"]=obj_txt_in;
@@ -5769,11 +5650,8 @@ static struct ObjInlineMarkupMunge {
#+name: meta_emitters_obj_inline_markup_munge
#+BEGIN_SRC d
- auto munge_block(Ot)(Ot obj_txt_in)
+ auto munge_block()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
obj_txt["munge"]=obj_txt_in;
@@ -5795,11 +5673,8 @@ static struct ObjInlineMarkupMunge {
#+name: meta_emitters_obj_inline_markup_munge
#+BEGIN_SRC d
- auto munge_verse(Ot)(Ot obj_txt_in)
+ auto munge_verse()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
obj_txt["munge"]=obj_txt_in;
@@ -5820,11 +5695,8 @@ static struct ObjInlineMarkupMunge {
#+name: meta_emitters_obj_inline_markup_munge
#+BEGIN_SRC d
- string munge_code(Ot)(Ot obj_txt_in)
+ string munge_code()(string obj_txt_in)
in {
- debug(asserts) {
- assert(is(typeof(obj_txt_in) == string));
- }
}
body {
obj_txt_in = obj_txt_in.replaceAll(rgx.space, mkup.nbsp);
@@ -5841,11 +5713,8 @@ static struct ObjInlineMarkupMunge {
#+name: meta_emitters_obj_inline_markup_munge
#+BEGIN_SRC d
- string munge_table(Ot)(Ot obj_txt_in)
+ string munge_table()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
obj_txt["munge"]=obj_txt_in;
@@ -5859,11 +5728,8 @@ static struct ObjInlineMarkupMunge {
#+name: meta_emitters_obj_inline_markup_munge
#+BEGIN_SRC d
- string munge_comment(Ot)(Ot obj_txt_in)
+ string munge_comment()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
obj_txt["munge"]=obj_txt_in;
@@ -5896,17 +5762,13 @@ static struct ObjInlineMarkup {
#+name: meta_emitters_obj_inline_markup_and_anchor_tags_and_misc
#+BEGIN_SRC d
- auto obj_inline_markup_and_anchor_tags_and_misc(O,K,CMM)(
- O obj_,
- K obj_key_,
- CMM conf_make_meta,
- Flag!"_new_doc" _new_doc
+ auto obj_inline_markup_and_anchor_tags_and_misc(CMM)(
+ string[string] obj_,
+ string obj_key_,
+ CMM conf_make_meta,
+ Flag!"_new_doc" _new_doc
)
in {
- debug(asserts) {
- static assert(is(typeof(obj_) == string[string]));
- static assert(is(typeof(obj_key_) == string));
- }
}
body {
obj_txt["munge"] = obj_[obj_key_].dup;
@@ -6002,34 +5864,24 @@ static struct ObjInlineMarkup {
#+name: meta_emitters_obj_inline_markup_table_of_contents
#+BEGIN_SRC d
- auto _clean_heading_toc_(Toc)(
- Toc heading_toc_,
+ auto _clean_heading_toc_()(
+ char[] heading_toc_,
) {
- debug(asserts) {
- static assert(is(typeof(heading_toc_) == char[]));
- }
auto m = (cast(char[]) heading_toc_).matchFirst(rgx.heading);
heading_toc_ = (m.post).replaceAll(
rgx.inline_notes_curly_gen,
"");
return heading_toc_;
};
- auto flow_table_of_contents_gather_headings(O,CMM,Ts,Ta,X,Toc)(
- O obj_,
- CMM conf_make_meta,
- Ts tag_in_seg,
- Ta _anchor_tag,
- return ref X lev4_subtoc,
- Toc the_table_of_contents_section,
+ ObjGenericComposite[] flow_table_of_contents_gather_headings(CMM)(
+ string[string] obj_,
+ CMM conf_make_meta,
+ string[string] tag_in_seg,
+ string _anchor_tag,
+ return ref string[][string] lev4_subtoc,
+ ObjGenericComposite[] the_table_of_contents_section,
)
in {
- debug(asserts) {
- static assert(is(typeof(obj_) == string[string]));
- static assert(is(typeof(tag_in_seg) == string[string]));
- static assert(is(typeof(_anchor_tag) == string));
- static assert(is(typeof(lev4_subtoc) == string[][string]));
- static assert(is(typeof(the_table_of_contents_section) == ObjGenericComposite[]));
- }
}
body {
ObjGenericComposite comp_obj_toc;
@@ -6121,16 +5973,12 @@ private:
static string heading_number_auto_composite = "";
static string heading_number_auto_composite_segname = "";
static bool[] auto_heading_numbering = [ true, true, true, true];
- static string _configured_auto_heading_numbering_and_segment_anchor_tags(M,O,CMM)(
- M munge_,
- O obj_,
- CMM conf_make_meta,
- bool _new_doc,
+ static string _configured_auto_heading_numbering_and_segment_anchor_tags(CMM)(
+ string munge_,
+ string[string] obj_,
+ CMM conf_make_meta,
+ bool _new_doc,
) {
- debug(asserts) {
- static assert(is(typeof(munge_) == string));
- static assert(is(typeof(obj_) == string[string]));
- }
if (_new_doc) {
heading_num = [ 0, 0, 0, 0 ];
heading_number_auto_composite = "";
@@ -6275,15 +6123,11 @@ private:
#+name: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags
#+BEGIN_SRC d
static int heading_num_lev1 = 0;
- static string _make_segment_anchor_tags_if_none_provided(M,Lv)(
- M munge_,
- Lv lev_,
- bool _new_doc
+ static string _make_segment_anchor_tags_if_none_provided()(
+ string munge_,
+ string lev_,
+ bool _new_doc
) {
- debug(asserts) {
- static assert(is(typeof(munge_) == string));
- static assert(is(typeof(lev_) == string));
- }
if (!(munge_.match(rgx.heading_anchor_tag))) {
if (munge_.match(rgx.heading_identify_anchor_tag)) {
if (auto m = munge_.match(rgx.heading_extract_named_anchor_tag)) {
@@ -6334,17 +6178,12 @@ struct ObjAttributes {
#+name: meta_emitters_obj_attributes_public
#+BEGIN_SRC d
- string obj_attributes(Oi,OR,OH)(
- Oi obj_is_,
- OR obj_raw,
- OH _comp_obj_heading,
+ string obj_attributes()(
+ string obj_is_,
+ string obj_raw,
+ ObjGenericComposite _comp_obj_heading,
)
in {
- debug(asserts) {
- static assert(is(typeof(obj_is_) == string));
- static assert(is(typeof(obj_raw) == string));
- static assert(is(typeof(_comp_obj_heading) == ObjGenericComposite));
- }
}
body {
scope(exit) {
@@ -6417,11 +6256,8 @@ struct ObjAttributes {
#+name: meta_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
- string txt_para_and_blocks(Ot)(Ot obj_txt_in)
+ string txt_para_and_blocks()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
if (obj_txt_in.matchFirst(rgx.para_bullet)) {
@@ -6453,11 +6289,8 @@ struct ObjAttributes {
#+name: meta_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
- string txt_heading(Ot)(Ot obj_txt_in)
+ string txt_heading()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
_obj_attributes = " \"use\": \"content\","
@@ -6473,11 +6306,8 @@ struct ObjAttributes {
#+name: meta_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
- string txt_para(Ot)(Ot obj_txt_in)
+ string txt_para()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
_obj_attributes = " \"use\": \"content\","
@@ -6493,11 +6323,8 @@ struct ObjAttributes {
#+name: meta_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
- string txt_quote(Ot)(Ot obj_txt_in)
+ string txt_quote()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
_obj_attributes = " \"use\": \"content\","
@@ -6513,11 +6340,8 @@ struct ObjAttributes {
#+name: meta_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
- string txt_group(Ot)(Ot obj_txt_in)
+ string txt_group()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
_obj_attributes = " \"use\": \"content\","
@@ -6533,11 +6357,8 @@ struct ObjAttributes {
#+name: meta_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
- string txt_block(Ot)(Ot obj_txt_in)
+ string txt_block()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
_obj_attributes = " \"use\": \"content\","
@@ -6553,11 +6374,8 @@ struct ObjAttributes {
#+name: meta_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
- string txt_verse(Ot)(Ot obj_txt_in)
+ string txt_verse()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
_obj_attributes = " \"use\": \"content\","
@@ -6573,11 +6391,8 @@ struct ObjAttributes {
#+name: meta_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
- string txt_code(Ot)(Ot obj_txt_in)
+ string txt_code()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
_obj_attributes = " \"use\": \"content\","
@@ -6593,11 +6408,8 @@ struct ObjAttributes {
#+name: meta_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
- string txt_table(Ot)(Ot obj_txt_in)
+ string txt_table()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
_obj_attributes = " \"use\": \"content\","
@@ -6613,11 +6425,8 @@ struct ObjAttributes {
#+name: meta_emitters_obj_attributes_private_an_attribute
#+BEGIN_SRC d
- string txt_comment(Ot)(Ot obj_txt_in)
+ string txt_comment()(string obj_txt_in)
in {
- debug(asserts) {
- static assert(is(typeof(obj_txt_in) == string));
- }
}
body {
_obj_attributes = " \"use\": \"comment\","
@@ -6633,16 +6442,11 @@ struct ObjAttributes {
#+name: meta_emitters_obj_attributes_private_json
#+BEGIN_SRC d
- string _set_additional_values_parse_as_json(OA,Oi,OH)(
- OA _obj_attrib,
- Oi obj_is_,
- OH _comp_obj_heading,
+ string _set_additional_values_parse_as_json()(
+ string _obj_attrib,
+ string obj_is_,
+ ObjGenericComposite _comp_obj_heading,
) {
- debug(asserts) {
- static assert(is(typeof(_obj_attrib) == string));
- static assert(is(typeof(obj_is_) == string));
- static assert(is(typeof(_comp_obj_heading) == ObjGenericComposite));
- }
JSONValue oa_j = parseJSON(_obj_attrib);
assert(
(oa_j.type == JSON_TYPE.OBJECT)
@@ -6682,14 +6486,13 @@ struct BookIndexNuggetHash {
string[][string][string] bi;
string[][string][string] hash_nugget;
string[] bi_main_terms_split_arr;
- string[][string][string] bookindex_nugget_hash(BI,N,S)(
- BI bookindex_section,
- N obj_cite_digits,
- S tag_in_seg,
+ string[][string][string] bookindex_nugget_hash(N,S)(
+ string bookindex_section,
+ N obj_cite_digits,
+ S tag_in_seg,
)
in {
debug(asserts) {
- static assert(is(typeof(bookindex_section) == string));
static assert(is(typeof(obj_cite_digits.object_number) == int));
}
debug(bookindexraw) {
@@ -6763,12 +6566,9 @@ struct BookIndexNuggetHash {
#+BEGIN_SRC d
struct BookIndexReportIndent {
int mkn, skn;
- void bookindex_report_indented(BI)(
- BI bookindex_unordered_hashes
+ void bookindex_report_indented()(
+ string[][string][string] bookindex_unordered_hashes
) {
- debug(asserts) {
- static assert(is(typeof(bookindex_unordered_hashes) == string[][string][string]));
- }
auto mainkeys
= bookindex_unordered_hashes.byKey.array.sort().release;
foreach (mainkey; mainkeys) {
@@ -6807,8 +6607,8 @@ struct BookIndexReportSection {
#+name: meta_emitters_book_index_report_section
#+BEGIN_SRC d
- void bookindex_write_section(BI)(
- BI bookindex_unordered_hashes
+ void bookindex_write_section()(
+ string[][string][string] bookindex_unordered_hashes
) {
auto mainkeys =
bookindex_unordered_hashes.byKey.array
@@ -6842,13 +6642,12 @@ struct BookIndexReportSection {
#+name: meta_emitters_book_index_report_section
#+BEGIN_SRC d
- auto bookindex_build_abstraction_section(BI,N,B)(
- BI bookindex_unordered_hashes,
- N obj_cite_digits,
- B opt_action,
+ auto bookindex_build_abstraction_section(N,B)(
+ string[][string][string] bookindex_unordered_hashes,
+ N obj_cite_digits,
+ B opt_action,
) {
debug(asserts) {
- static assert(is(typeof(bookindex_unordered_hashes) == string[][string][string]));
static assert(is(typeof(obj_cite_digits.object_number) == int));
}
mixin DocReformNode;
@@ -7228,15 +7027,11 @@ struct Bibliography {
#+name: meta_emitters_bibliography
#+BEGIN_SRC d
- public JSONValue[] flow_bibliography_(Bi,BJ)(
- return ref Bi biblio_unsorted_incomplete,
- return ref BJ bib_arr_json
+ public JSONValue[] flow_bibliography_()(
+ return ref string[] biblio_unsorted_incomplete,
+ return ref JSONValue[] bib_arr_json
)
in {
- debug(asserts) {
- static assert(is(typeof(biblio_unsorted_incomplete) == string[]));
- static assert(is(typeof(bib_arr_json) == JSONValue[]));
- }
}
body {
JSONValue[] biblio_unsorted
@@ -7266,14 +7061,10 @@ struct Bibliography {
#+name: meta_emitters_bibliography
#+BEGIN_SRC d
- final private JSONValue[] biblio_make_unsorted_array_of_json_objects(Bi,BJ)(
- Bi biblio_unordered,
- BJ bib_arr_json
+ final private JSONValue[] biblio_make_unsorted_array_of_json_objects()(
+ string[] biblio_unordered,
+ JSONValue[] bib_arr_json
) {
- debug(asserts) {
- static assert(is(typeof(biblio_unordered) == string[]));
- static assert(is(typeof(bib_arr_json) == JSONValue[]));
- }
foreach (bibent; biblio_unordered) {
/+ update bib to include deemed_author, needed for:
sort_bibliography_array_by_deemed_author_year_title
@@ -7304,10 +7095,7 @@ struct Bibliography {
#+name: meta_emitters_bibliography
#+BEGIN_SRC d
- final private JSONValue[] biblio_sort(BJ)(BJ biblio_unordered) {
- debug(asserts) {
- static assert(is(typeof(biblio_unordered) == JSONValue[]));
- }
+ final private JSONValue[] biblio_sort()(JSONValue[] biblio_unordered) {
JSONValue[] biblio_sorted_;
biblio_sorted_
= sort!((a, b){
@@ -7328,10 +7116,7 @@ struct Bibliography {
#+name: meta_emitters_bibliography
#+BEGIN_SRC d
- void biblio_debug(BJ)(BJ biblio_sorted) {
- debug(asserts) {
- static assert(is(typeof(biblio_sorted) == JSONValue[]));
- }
+ void biblio_debug()(JSONValue[] biblio_sorted) {
debug(biblio0) {
foreach (j; biblio_sorted) {
if (!empty(j["fulltitle"].str)) {
@@ -7365,24 +7150,19 @@ struct NodeStructureMetadata {
#+name: meta_emitters_metadata
#+BEGIN_SRC d
- ObjGenericComposite node_location_emitter(Lv,Tg,La,Ta,N,C,P,I)(
- Lv lev_markup_number,
- Tg tag_in_seg,
- La lev_anchor_tag,
- Ta tag_assoc,
- N obj_cite_digits,
- C cntr_,
- P ptr_,
- I is_
+ ObjGenericComposite node_location_emitter(La,Ta,N)(
+ string lev_markup_number,
+ string[string] tag_in_seg,
+ La lev_anchor_tag,
+ Ta tag_assoc,
+ N obj_cite_digits,
+ int cntr_,
+ int ptr_,
+ string is_
)
in {
debug(asserts) {
- static assert(is(typeof(lev_markup_number) == string));
- static assert(is(typeof(tag_in_seg) == string[string]));
static assert(is(typeof(obj_cite_digits.object_number) == int));
- static assert(is(typeof(cntr_) == int));
- static assert(is(typeof(ptr_) == int));
- static assert(is(typeof(is_) == string));
}
assert(is_ != "heading");
assert(obj_cite_digits.object_number.to!int >= 0);
@@ -7433,37 +7213,28 @@ struct NodeStructureMetadata {
#+name: meta_emitters_metadata
#+BEGIN_SRC d
- ObjGenericComposite node_emitter_heading(T,Lm,Lc,Hd,TaB,TaL,TA,N,C,P,LA,I,PSn,fNr,fNs,fL)(
- T _text,
- Lm lev_markup_number,
- Lc lev_collapsed_number,
- Hd dummy_heading_status,
- TaB tag_in_seg,
- TaL lev_anchor_tag,
- TA tag_assoc,
- N obj_cite_digits,
- C cntr_,
- P ptr_,
- LA lv_ancestors_txt,
- I is_,
- PSn html_segnames_ptr,
- fNr flag_notes_reg,
- fNs flag_notes_star,
- fL flag_links,
+ ObjGenericComposite node_emitter_heading(Hd,TaL,TA,N,fNr,fNs,fL)(
+ string _text,
+ string lev_markup_number,
+ string lev_collapsed_number,
+ Hd dummy_heading_status,
+ string[string] tag_in_seg,
+ TaL lev_anchor_tag,
+ TA tag_assoc,
+ N obj_cite_digits,
+ int cntr_,
+ int ptr_,
+ string[] lv_ancestors_txt,
+ string is_,
+ int html_segnames_ptr,
+ fNr flag_notes_reg,
+ fNs flag_notes_star,
+ fL flag_links,
)
in {
debug(asserts) {
- static assert(is(typeof(_text) == string));
static assert(is(typeof(lev) == string));
- static assert(is(typeof(lev_markup_number) == string));
- static assert(is(typeof(lev_collapsed_number) == string));
- static assert(is(typeof(tag_in_seg) == string[string]));
static assert(is(typeof(obj_cite_digits.object_number) == int));
- static assert(is(typeof(cntr_) == int));
- static assert(is(typeof(ptr_) == int));
- static assert(is(typeof(lv_ancestors_txt) == string[]));
- static assert(is(typeof(is_) == string));
- static assert(is(typeof(html_segnames_ptr) == int));
}
assert(is_ == "heading");
assert((obj_cite_digits.object_number).to!int >= 0);
@@ -7655,14 +7426,10 @@ struct NodeStructureMetadata {
#+name: abs_functions_assertions
#+BEGIN_SRC d
-pure void assertions_doc_structure(O,Lv)(
- O an_object,
- Lv lv
+pure void assertions_doc_structure()(
+ string[string] an_object,
+ int[string] lv
) {
- debug(asserts) {
- static assert(is(typeof(an_object) == string[string]));
- static assert(is(typeof(lv) == int[string]));
- }
if (lv["h3"] > State.off) {
assert(lv["h0"] > State.off);
assert(lv["h1"] > State.off);
@@ -7840,10 +7607,7 @@ pure void assertions_doc_structure(O,Lv)(
#+name: abs_functions_assertions
#+BEGIN_SRC d
-pure void assertions_flag_types_block_status_none_or_closed(T)(T obj_type_status) {
- debug(asserts) {
- static assert(is(typeof(obj_type_status) == int[string]));
- }
+pure void assertions_flag_types_block_status_none_or_closed()(int[string] obj_type_status) {
assert(
(obj_type_status["code"] == TriState.off)
|| (obj_type_status["code"] == TriState.closing),