aboutsummaryrefslogtreecommitdiffhomepage
path: root/org/metaverse.org
diff options
context:
space:
mode:
Diffstat (limited to 'org/metaverse.org')
-rw-r--r--org/metaverse.org78
1 files changed, 39 insertions, 39 deletions
diff --git a/org/metaverse.org b/org/metaverse.org
index b51f4da..88c5e59 100644
--- a/org/metaverse.org
+++ b/org/metaverse.org
@@ -536,6 +536,7 @@ scope(exit) {
#+NAME: abs_init_rest
#+BEGIN_SRC d
mixin spineRgxDocStructFlags;
+mixin spineDocStatus;
mixin spineNode;
auto node_para_int_ = node_metadata_para_int;
auto node_para_str_ = node_metadata_para_str;
@@ -559,6 +560,12 @@ uint[string] dochas = [
"images" : 0,
];
auto obj_type_status = flags_type_init;
+int[string] track = [
+ "section" : 0,
+ "block" : 0,
+ "obj" : 0,
+ "ocn" : 0,
+];
string[string] object_number_poem = [
"start" : "",
"end" : ""
@@ -739,18 +746,15 @@ line = line.inline_markup_faces; // by text line (rather than by text object), l
#+NAME: abs_in_loop_body_non_code_obj
#+BEGIN_SRC d
if (line.matchFirst(rgx.heading_biblio)
-|| (obj_type_status["biblio_section"] == State.on
+|| (track["section"] == status.sect.bibliography
&& ((!(line.matchFirst(rgx.heading_glossary)))
&& (!(line.matchFirst(rgx.heading_blurb)))
&& (!(line.matchFirst(rgx.heading)))
&& (!(line.matchFirst(rgx.comment)))))
) {
- /+ within section (block object): biblio +/
- obj_type_status["glossary_section"] = State.off;
- obj_type_status["biblio_section"] = State.on;
- obj_type_status["blurb_section"] = State.off;
+ track["section"] = status.sect.bibliography;
if (opt_action.backmatter && opt_action.section_biblio) {
- line.flow_txt_block_biblio(obj_type_status, bib_entry, biblio_entry_str_json, biblio_arr_json);
+ line.flow_txt_block_biblio(obj_type_status, bib_entry, biblio_entry_str_json, biblio_arr_json, track);
debug(bibliobuild) {
writeln("- ", biblio_entry_str_json);
writeln("-> ", biblio_arr_json.length);
@@ -771,7 +775,7 @@ if there is a glossary section you need to:
#+NAME: abs_in_loop_body_non_code_obj
#+BEGIN_SRC d
} else if (line.matchFirst(rgx.heading_glossary)
-|| (obj_type_status["glossary_section"] == State.on
+|| (track["section"] == status.sect.glossary
&& ((!(line.matchFirst(rgx.heading_biblio)))
&& (!(line.matchFirst(rgx.heading_blurb)))
&& (!(line.matchFirst(rgx.heading)))
@@ -782,9 +786,7 @@ if there is a glossary section you need to:
writeln(__LINE__);
writeln(line);
}
- obj_type_status["glossary_section"] = State.on;
- obj_type_status["biblio_section"] = State.off;
- obj_type_status["blurb_section"] = State.off;
+ track["section"] = status.sect.glossary;
if (opt_action.backmatter && opt_action.section_glossary) {
indent=[
"hang_position" : 0,
@@ -881,20 +883,17 @@ if there is a blurb section you need to:
#+NAME: abs_in_loop_body_non_code_obj
#+BEGIN_SRC d
} else if (line.matchFirst(rgx.heading_blurb)
-|| (obj_type_status["blurb_section"] == State.on
+|| (track["section"] == status.sect.blurb
&& ((!(line.matchFirst(rgx.heading_glossary)))
&& (!(line.matchFirst(rgx.heading_biblio)))
&& (!(line.matchFirst(rgx.heading)))
&& (!(line.matchFirst(rgx.comment)))))
) {
- /+ within section (block object): blurb +/
+ track["section"] = status.sect.blurb;
debug(blurb) {
writeln(__LINE__);
writeln(line);
}
- obj_type_status["glossary_section"] = State.off;
- obj_type_status["biblio_section"] = State.off;
- obj_type_status["blurb_section"] = State.on;
if (opt_action.backmatter && opt_action.section_blurb) {
indent=[
"hang_position" : 0,
@@ -1139,9 +1138,9 @@ if (obj_type_status["blocks"] == TriState.closing) {
writeln(line);
}
assert(
- line.matchFirst(rgx.book_index)
- || line.matchFirst(rgx.book_index_open)
- || obj_type_status["book_index"] == State.on,
+ line.matchFirst(rgx.book_index_item)
+ || line.matchFirst(rgx.book_index_item_open)
+ || track["section"] == status.sect.book_index,
"\nblocks closed, unless followed by book index, non-matching line:\n \""
~ line ~ "\""
);
@@ -1152,10 +1151,10 @@ if (obj_type_status["blocks"] == TriState.closing) {
#+NAME: abs_in_loop_body_not_block_obj
#+BEGIN_SRC d
-if (line.matchFirst(rgx.book_index)
-|| line.matchFirst(rgx.book_index_open)
-|| obj_type_status["book_index"] == State.on ) { /+ book_index +/
- an_object = line.flow_book_index_(an_object, book_idx_tmp, obj_type_status, opt_action);
+if (line.matchFirst(rgx.book_index_item)
+|| line.matchFirst(rgx.book_index_item_open)
+|| track["section"] == status.sect.book_index) { /+ book_index +/
+ an_object = line.flow_book_index_(an_object, book_idx_tmp, obj_type_status, track, opt_action);
#+END_SRC
******* not book index [+1]
@@ -1221,7 +1220,8 @@ if (line.matchFirst(rgx.book_index)
lv,
collapsed_lev,
obj_type_status,
- conf_make_meta
+ conf_make_meta,
+ track,
);
} else if (line_occur["para"] == State.off) { /+ para match +/
an_object_key="body_nugget";
@@ -1512,9 +1512,7 @@ if (the_document_body_section.length > 0) {
&& (the_document_body_section.length > previous_length)) {
if ((the_document_body_section[$-1].metainfo.is_a == "heading")
&& (the_document_body_section[$-1].metainfo.heading_lev_markup < 5)) {
- obj_type_status["glossary_section"] = State.off;
- obj_type_status["biblio_section"] = State.off;
- obj_type_status["blurb_section"] = State.off;
+ track["section"] = status.sect.unset;
}
if (the_document_body_section[$-1].metainfo.is_a == "verse") { /+ scan for endnotes for whole poem (each verse in poem) +/
foreach (i; previous_length .. the_document_body_section.length) {
@@ -3658,15 +3656,15 @@ final string biblio_tag_map_()(string abr) {
return ref int[string] obj_type_status,
return ref int bib_entry,
return ref string biblio_entry_str_json,
- return ref string[] biblio_arr_json
+ return ref string[] biblio_arr_json,
+ return ref int[string] track,
) {
mixin spineBiblio;
+ mixin spineDocStatus;
auto jsn = BibJsnStr();
static auto rgx = RgxI();
if (line.matchFirst(rgx.heading_biblio)) {
- obj_type_status["glossary_section"] = State.off;
- obj_type_status["biblio_section"] = TriState.on;
- obj_type_status["blurb_section"] = State.off;
+ track["section"] = status.sect.bibliography;
}
if (line.empty) {
debug {
@@ -4671,10 +4669,12 @@ process and use an_object["table_head"] (then empty it)
string[string] an_object,
return ref string book_idx_tmp,
return ref int[string] obj_type_status,
+ return ref int[string] track,
B opt_action,
) {
+ mixin spineDocStatus;
static auto rgx = RgxI();
- if (auto m = line.match(rgx.book_index)) { /+ match book_index +/
+ if (auto m = line.match(rgx.book_index_item)) { /+ match book_index +/
debug(bookindexmatch) {
writefln(
"* [bookindex] %s\n",
@@ -4682,8 +4682,8 @@ process and use an_object["table_head"] (then empty it)
);
}
an_object["bookindex_nugget"] = m.captures[1].to!string;
- } else if (auto m = line.match(rgx.book_index_open)) { /+ match open book_index +/
- obj_type_status["book_index"] = State.on;
+ } else if (auto m = line.match(rgx.book_index_item_open)) { /+ match open book_index +/
+ track["section"] = status.sect.book_index;
if (opt_action.backmatter && opt_action.section_bookindex) {
book_idx_tmp = m.captures[1].to!string;
debug(bookindexmatch) {
@@ -4693,9 +4693,9 @@ process and use an_object["table_head"] (then empty it)
);
}
}
- } else if (obj_type_status["book_index"] == State.on ) { /+ book_index flag set +/
- if (auto m = line.match(rgx.book_index_close)) {
- obj_type_status["book_index"] = State.off;
+ } else if (track["section"] == status.sect.book_index) { /+ book_index flag set +/
+ if (auto m = line.match(rgx.book_index_item_close)) {
+ track["section"] = status.sect.unset;
if (opt_action.backmatter
&& opt_action.section_bookindex) {
an_object["bookindex_nugget"] = book_idx_tmp ~ m.captures[1].to!string;
@@ -4881,16 +4881,16 @@ process and use an_object["table_head"] (then empty it)
return ref int[string] collapsed_lev,
return ref int[string] obj_type_status,
return ref CMM conf_make_meta,
+ return ref int[string] track,
) {
+ mixin spineDocStatus;
static auto rgx = RgxI();
if (auto m = line.match(rgx.headings)) { /+ heading match +/
++line_occur["heading"];
obj_type_status["heading"] = State.on;
obj_type_status["para"] = State.off;
if (line.match(rgx.heading_seg_and_above)) {
- obj_type_status["glossary_section"] = State.off;
- obj_type_status["biblio_section"] = State.off;
- obj_type_status["blurb_section"] = State.off;
+ track["section"] = status.sect.unset;
}
an_object[an_object_key] ~= line ~= "\n";
an_object["lev"] ~= m.captures[1];