diff options
Diffstat (limited to 'org/meta_abstraction.org')
-rw-r--r-- | org/meta_abstraction.org | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/org/meta_abstraction.org b/org/meta_abstraction.org index aa79d9a..a1e5a95 100644 --- a/org/meta_abstraction.org +++ b/org/meta_abstraction.org @@ -88,6 +88,7 @@ template SiSUdocAbstraction() { <<abs_functions_object_reset>> <<abs_functions_header_set_common>> <<abs_functions_ocn_status>> + <<abs_functions_substitutions>> <<abs_functions_block>> <<abs_functions_block_quote>> <<abs_functions_block_group>> @@ -825,6 +826,7 @@ if there is a blurb section you need to: #+BEGIN_SRC d } else if (obj_type_status["quote"] == TriState.on) { /+ within block object: quote +/ + line = _doc_header_and_make_substitutions_(line, conf_make_meta); _quote_block_(line, an_object, obj_type_status); continue; #+END_SRC @@ -836,6 +838,7 @@ if there is a blurb section you need to: /+ within block object: group +/ } else if (obj_type_status["group"] == TriState.on) { /+ within block object: group +/ + line = _doc_header_and_make_substitutions_(line, conf_make_meta); line = (line) .replaceAll(rgx.para_delimiter, mkup.br_paragraph ~ "$1"); _group_block_(line, an_object, obj_type_status); @@ -848,6 +851,7 @@ if there is a blurb section you need to: #+BEGIN_SRC d } else if (obj_type_status["block"] == TriState.on) { /+ within block object: block +/ + line = _doc_header_and_make_substitutions_(line, conf_make_meta); if (auto m = line.match(rgx.spaces_line_start)) { line = (line) .replaceAll(rgx.spaces_line_start, (m.captures[1]).translate([ ' ' : mkup.nbsp ])); @@ -903,6 +907,7 @@ if (line.matchFirst(rgx.block_poem_open)) { processing.remove("verse"); obj_cite_number_poem["start"] = obj_cite_digits.on.to!string; } +line = _doc_header_and_make_substitutions_(line, conf_make_meta); _start_block_(line, obj_type_status, obj_cite_number_poem); continue; #+END_SRC @@ -1012,6 +1017,7 @@ if (line.matchFirst(rgx.book_index) } else if (line_occur["para"] == State.off) { /+ para match +/ an_object_key="body_nugget"; + line = _doc_header_and_make_substitutions_(line, conf_make_meta); _para_match_(line, an_object, an_object_key, indent, bullet, obj_type_status, line_occur); } #+END_SRC @@ -1038,6 +1044,7 @@ if (line.matchFirst(rgx.book_index) debug(para) { writeln(an_object_key, "-> ", line); } + line = _doc_header_and_make_substitutions_(line, conf_make_meta); an_object[an_object_key] ~= " " ~ line; ++line_occur["para"]; } @@ -2524,6 +2531,46 @@ static auto _check_ocn_status_(L,T)( } #+END_SRC +#+name: abs_functions_substitutions +#+BEGIN_SRC d +auto _doc_header_and_make_substitutions_(L,CMM)( + L line, + CMM conf_make_meta, +) { + debug(asserts) { + static assert(is(typeof(line) == char[])); + } + if (!( + conf_make_meta.make.bold_rgxmatch == "=NULL" + || conf_make_meta.make.bold_rgxmatch.empty + )) { + line = line.replaceAll( + regex(conf_make_meta.make.bold_rgxmatch), + conf_make_meta.make.bold_substitute_sisu_markup + ); + } + if (!( + conf_make_meta.make.emphasis_rgxmatch == "=NULL" + || conf_make_meta.make.emphasis_rgxmatch.empty + )) { + line = line.replaceAll( + regex(conf_make_meta.make.emphasis_rgxmatch), + conf_make_meta.make.emphasis_substitute_sisu_markup + ); + } + if (!( + conf_make_meta.make.italics_rgxmatch == "=NULL" + || conf_make_meta.make.italics_rgxmatch.empty + )) { + line = line.replaceAll( + regex(conf_make_meta.make.italics_rgxmatch), + conf_make_meta.make.italics_substitute_sisu_markup + ); + } + return line; +} +#+END_SRC + *** block :block: **** block start (open) block :start: ***** { block starts function |