From 9f4cf3aaba75a1f71743c96ea079b1fb3dbc0db5 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Fri, 1 Feb 2019 11:55:35 -0500 Subject: inline fontface markup, internal representation, reorganise code --- src/doc_reform/meta/defaults.d | 10 +++++++++- src/doc_reform/meta/metadoc_from_src.d | 35 +++++++++++++++++++++------------- src/doc_reform/output/defaults.d | 10 +++++++++- 3 files changed, 40 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/doc_reform/meta/defaults.d b/src/doc_reform/meta/defaults.d index 661234c..7c1a726 100644 --- a/src/doc_reform/meta/defaults.d +++ b/src/doc_reform/meta/defaults.d @@ -127,8 +127,17 @@ template InternalMarkup() { static struct InlineMarkup { auto en_a_o = "【"; auto en_a_c = "】"; auto en_b_o = "〖"; auto en_b_c = "〗"; + auto ff_o = "┨"; auto ff_c = "┣"; // fontface auto lnk_o = "┥"; auto lnk_c = "┝"; auto url_o = "┤"; auto url_c = "├"; + auto emph = "*"; + auto bold = "!"; + auto italic = "/"; + auto underscore = "_"; + auto superscript = "^"; + auto subscript = ","; + auto mono = "■"; + auto cite = "‖"; auto mark_internal_site_lnk = "¤"; auto nbsp = "░"; auto br_line = "┘"; @@ -142,7 +151,6 @@ template InternalMarkup() { auto tc_o = "┏"; auto tc_c = "┚"; auto tc_p = "┆"; - auto mono = "■"; auto img = "☼"; static string indent_by_spaces_provided(int indent, string _indent_spaces ="░░") { _indent_spaces = replicate(_indent_spaces, indent); diff --git a/src/doc_reform/meta/metadoc_from_src.d b/src/doc_reform/meta/metadoc_from_src.d index 90cc08a..d82c60a 100644 --- a/src/doc_reform/meta/metadoc_from_src.d +++ b/src/doc_reform/meta/metadoc_from_src.d @@ -235,10 +235,11 @@ template DocReformDocAbstraction() { } static auto inline_markup_faces(L)(L line) { static auto rgx = Rgx(); - line = replaceAll!(m => "■┨" ~ m[2] ~ "┣■")(line, rgx.inline_mark_mono); - line = replaceAll!(m => "‖┨" ~ m[2] ~ "┣‖")(line, rgx.inline_mark_cite); + static auto mkup = InlineMarkup(); + line = replaceAll!(m => mkup.mono ~ mkup.ff_o ~ m[2] ~ mkup.ff_c ~ mkup.mono)(line, rgx.inline_mark_mono); + line = replaceAll!(m => mkup.cite ~ mkup.ff_o ~ m[2] ~ mkup.ff_c ~ mkup.cite)(line, rgx.inline_mark_cite); foreach (regx; [rgx.inline_mark_emphasis, rgx.inline_mark_bold, rgx.inline_mark_underscore, rgx.inline_mark_italics, rgx.inline_mark_superscript, rgx.inline_mark_subscript, rgx.inline_mark_strike, rgx.inline_mark_insert]) { - line = replaceAll!(m => m[1] ~ "┨" ~ m[2] ~ "┣"~ m[1])(line, regx); + line = replaceAll!(m => m[1] ~ mkup.ff_o ~ m[2] ~ mkup.ff_c ~ m[1])(line, regx); } return line; } @@ -457,7 +458,7 @@ template DocReformDocAbstraction() { /+ object other than "code block" object (includes regular text paragraph, headings & blocks other than code) +/ /+ heading, glossary, blurb, poem, group, block, quote, table +/ - line = line.inline_markup_faces; + line = line.inline_markup_faces; // by text line (rather than by text object), linebreaks in para problematic if (line.matchFirst(rgx.heading_biblio) || (obj_type_status["biblio_section"] == State.on && (!(line.matchFirst(rgx.heading_blurb_glossary))) @@ -1225,7 +1226,7 @@ template DocReformDocAbstraction() { "%s \"%s\"%s%s%s%s%s%s%s%s%s.", ((entry["author"].str.empty) ? entry["editor"].str : entry["author"].str), entry["fulltitle"].str, - ((entry["journal"].str.empty) ? "" : ", /┨" ~ entry["journal"].str ~ "┣/"), + ((entry["journal"].str.empty) ? "" : ", " ~ mkup.italic ~ mkup.ff_o ~ entry["journal"].str ~ mkup.ff_c ~ mkup.italic), ((entry["volume"].str.empty) ? "" : ", " ~ entry["volume"].str), ((entry["in"].str.empty) ? "" : ", " ~ entry["in"].str), ((!(entry["author"].str.empty) && (!(entry["editor"].str.empty))) ? entry["editor"].str : ""), @@ -1829,6 +1830,9 @@ template DocReformDocAbstraction() { tag_assoc[(obj.metainfo.identifier)]["seg_lv1_to_4"] = obj.tags.epub_segment_anchor_tag_is; } + if (obj.metainfo.is_a != "code") { + obj.text = obj.text.inline_markup_faces; + } if (obj.metainfo.is_a == "heading") { debug(dom) { writeln(obj.text); @@ -1871,6 +1875,7 @@ template DocReformDocAbstraction() { dom_structure_markedup_tags_status = dom_structure_markedup_tags_status_buffer.dup; dom_structure_collapsed_tags_status = dom_structure_collapsed_tags_status_buffer.dup; foreach (ref obj; the_endnotes_section) { + obj.text = obj.text.inline_markup_faces; if (obj.metainfo.is_a == "heading") { debug(dom) { writeln(obj.text); @@ -2040,6 +2045,9 @@ template DocReformDocAbstraction() { /+ optional only one 1~ level +/ if (the_blurb_section.length > 1) { foreach (ref obj; the_blurb_section) { + if (obj.metainfo.is_a != "code") { + obj.text = obj.text.inline_markup_faces; + } if (obj.metainfo.is_a == "heading") { debug(dom) { writeln(obj.text); @@ -3987,12 +3995,13 @@ template DocReformDocAbstraction() { T textline, ) { static auto rgx = Rgx(); + static auto mkup = InlineMarkup(); if (textline.match(rgx.inline_faces_line)) { textline = textline - .replaceFirst(rgx.inline_emphasis_line, ("*┨$1┣*$2")) - .replaceFirst(rgx.inline_bold_line, ("!┨$1┣!$2")) - .replaceFirst(rgx.inline_underscore_line, ("_┨$1┣_$2")) - .replaceFirst(rgx.inline_italics_line, ("/┨$1┣/$2")); + .replaceFirst(rgx.inline_emphasis_line, format(q"┋%s%s%s%s%s%s┋", mkup.emph, mkup.ff_o, "$1", mkup.ff_c, mkup.emph, "$2")) + .replaceFirst(rgx.inline_bold_line, format(q"┋%s%s%s%s%s%s┋", mkup.bold, mkup.ff_o, "$1", mkup.ff_c, mkup.bold, "$2")) + .replaceFirst(rgx.inline_underscore_line, format(q"┋%s%s%s%s%s%s┋", mkup.underscore, mkup.ff_o, "$1", mkup.ff_c, mkup.underscore, "$2")) + .replaceFirst(rgx.inline_italics_line, format(q"┋%s%s%s%s%s%s┋", mkup.italic, mkup.ff_o, "$1", mkup.ff_c, mkup.italic, "$2")); } return textline; } @@ -5507,7 +5516,7 @@ template DocReformDocAbstraction() { string[dchar] transTable = [' ' : "_"]; foreach (mainkey; mainkeys) { bi_tmp_tags = [""]; - bi_tmp = "!┨" ~ mainkey ~ "┣! "; + bi_tmp = mkup.bold ~ mkup.ff_o ~ mainkey ~ mkup.ff_c ~ mkup.bold ~ " "; buffer.clear(); bi_tmp_tags ~= translate(mainkey, transTable); auto bkidx_lnk(string locs) { @@ -5613,7 +5622,7 @@ template DocReformDocAbstraction() { ) { debug(endnotes_build) { writeln( - "{^┨", m.captures[1], ".┣^}" + "{^", mkup.ff_o, m.captures[1], ".", mkup.ff_c, "^}" ~ mkup.mark_internal_site_lnk, tag_in_seg["seg_lv4"], ".fnSuffix#noteref_\n ", m.captures[1], " ", @@ -5623,12 +5632,12 @@ template DocReformDocAbstraction() { object_notes["anchor"] ~= "note_" ~ m.captures[1] ~ "』"; object_notes["notes"] ~= (tag_in_seg["seg_lv4"].empty) ? (munge.url_links( - "{^┨" ~ m.captures[1] ~ ".┣^}#noteref_" + "{" ~ mkup.superscript ~ mkup.ff_o ~ m.captures[1] ~ "." ~ mkup.ff_c ~ mkup.superscript ~ "}#noteref_" ~ m.captures[1]) ~ " " ~ m.captures[2] ~ "』" ) : (munge.url_links( - "{^┨" ~ m.captures[1] ~ ".┣^}" + "{" ~ mkup.superscript ~ mkup.ff_o ~ m.captures[1] ~ "." ~ mkup.ff_c ~ mkup.superscript ~ "}" ~ mkup.mark_internal_site_lnk ~ tag_in_seg["seg_lv4"] ~ ".fnSuffix#noteref_" diff --git a/src/doc_reform/output/defaults.d b/src/doc_reform/output/defaults.d index 36f5c8e..e54afb9 100644 --- a/src/doc_reform/output/defaults.d +++ b/src/doc_reform/output/defaults.d @@ -8,8 +8,17 @@ template InternalMarkup() { static struct InlineMarkup { auto en_a_o = "【"; auto en_a_c = "】"; auto en_b_o = "〖"; auto en_b_c = "〗"; + auto ff_o = "┨"; auto ff_c = "┣"; // fontface auto lnk_o = "┥"; auto lnk_c = "┝"; auto url_o = "┤"; auto url_c = "├"; + auto emph = "*"; + auto bold = "!"; + auto italic = "/"; + auto underscore = "_"; + auto superscript = "^"; + auto subscript = ","; + auto mono = "■"; + auto cite = "‖"; auto mark_internal_site_lnk = "¤"; auto nbsp = "░"; auto br_line = "┘"; @@ -23,7 +32,6 @@ template InternalMarkup() { auto tc_o = "┏"; auto tc_c = "┚"; auto tc_p = "┆"; - auto mono = "■"; auto img = "☼"; static string indent_by_spaces_provided(int indent, string _indent_spaces ="░░") { _indent_spaces = replicate(_indent_spaces, indent); -- cgit v1.2.3