aboutsummaryrefslogtreecommitdiffhomepage
path: root/org/ao_abstract_doc_source.org
diff options
context:
space:
mode:
Diffstat (limited to 'org/ao_abstract_doc_source.org')
-rw-r--r--org/ao_abstract_doc_source.org48
1 files changed, 32 insertions, 16 deletions
diff --git a/org/ao_abstract_doc_source.org b/org/ao_abstract_doc_source.org
index 5c78771..5677baa 100644
--- a/org/ao_abstract_doc_source.org
+++ b/org/ao_abstract_doc_source.org
@@ -2690,7 +2690,32 @@ struct ObjInlineMarkupMunge {
struct ObjInlineMarkup {
// struct ObjInlineMarkup : AssertObjInlineMarkup {
auto munge = ObjInlineMarkupMunge();
+#+END_SRC
+
+***** make segment anchor tags if not provided :markup:inline:segment:anchor:tags:
+
+#+name: ao_emitters
+#+BEGIN_SRC d
string[string] obj_txt;
+ string make_segment_anchor_tags_if_none_provided(string munge_, string lev_) {
+ if (!(match(munge_, rgx.heading_anchor_tag))) { // if (anchor_tags_.length == 0) {
+ if (match(munge_, rgx.heading_identify_anchor_tag)) {
+ if (auto m = match(munge_, rgx.heading_extract_named_anchor_tag)) {
+ munge_=replaceFirst(munge_, rgx.heading_marker_missing_tag,
+ "$1~" ~ toLower(m.captures[1]) ~ "_" ~ m.captures[2] ~ " ");
+ } else if (auto m = match(munge_, rgx.heading_extract_unnamed_anchor_tag)) {
+ munge_=replaceFirst(munge_, rgx.heading_marker_missing_tag,
+ "$1~" ~ "s" ~ m.captures[1] ~ " ");
+ }
+ } else if (lev_ == "1") { // (if not successful) manufacture a unique anchor tag for lev=="1"
+ static __gshared uint heading_num_lev1 = 0;
+ heading_num_lev1 ++;
+ munge_=replaceFirst(munge_, rgx.heading_marker_missing_tag,
+ "$1~" ~ "x" ~ to!string(heading_num_lev1) ~ " ");
+ }
+ }
+ return munge_;
+ }
#+END_SRC
***** object inline markup and anchor tags :markup:inline:
@@ -2818,22 +2843,7 @@ struct ObjInlineMarkup {
}
}
// WORK ON, you still need to ensure that level 1 anchor_tags are unique
- if (!(match(obj_txt["munge"], rgx.heading_anchor_tag))) { // if (anchor_tags_.length == 0) {
- if (match(obj_txt["munge"], rgx.heading_identify_anchor_tag)) {
- if (auto m = match(obj_txt["munge"], rgx.heading_extract_named_anchor_tag)) {
- obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.heading_marker_missing_tag,
- "$1~" ~ toLower(m.captures[1]) ~ "_" ~ m.captures[2] ~ " ");
- } else if (auto m = match(obj_txt["munge"], rgx.heading_extract_unnamed_anchor_tag)) {
- obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.heading_marker_missing_tag,
- "$1~" ~ "s" ~ m.captures[1] ~ " ");
- }
- } else if (obj_["lev"] == "1") { // (if not successful) manufacture a unique anchor tag for lev=="1"
- static __gshared uint heading_num_lev1 = 0;
- heading_num_lev1 ++;
- obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.heading_marker_missing_tag,
- "$1~" ~ "x" ~ to!string(heading_num_lev1) ~ " ");
- }
- }
+ obj_txt["munge"]=make_segment_anchor_tags_if_none_provided(obj_txt["munge"], obj_["lev"]);
if (auto m = match(obj_txt["munge"], rgx.heading_anchor_tag)) {
anchor_tag = m.captures[1];
anchor_tags_ ~=anchor_tag;
@@ -2881,6 +2891,12 @@ struct ObjInlineMarkup {
}
invariant() {
}
+#+END_SRC
+
+***** close
+
+#+name: ao_emitters
+#+BEGIN_SRC d
}
#+END_SRC