aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdp')
-rw-r--r--src/sdp/ao_abstract_doc_source.d105
-rw-r--r--src/sdp/ao_defaults.d45
-rw-r--r--src/sdp/ao_rgx.d9
-rw-r--r--src/sdp/output_html.d16
4 files changed, 90 insertions, 85 deletions
diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d
index fd4afa7..9bfa6cb 100644
--- a/src/sdp/ao_abstract_doc_source.d
+++ b/src/sdp/ao_abstract_doc_source.d
@@ -48,7 +48,7 @@ template SiSUdocAbstraction() {
JSONValue[] bib_arr_json;
int bib_entry;
/+ counters +/
- long counter, previous_count;
+ long counter, previous_count, previous_length;
int[string] line_occur;
int verse_line, heading_pointer;
/+ paragraph attributes +/
@@ -479,7 +479,7 @@ template SiSUdocAbstraction() {
debug(para) {
writeln(line);
}
- an_object[an_object_key] ~= line;
+ an_object[an_object_key] ~= " " ~ line;
++line_occur["para"];
}
}
@@ -624,16 +624,21 @@ template SiSUdocAbstraction() {
/+ unless (the_document_body_section.length == 0) ? +/
if (the_document_body_section.length > 0) {
if (((the_document_body_section[$-1].is_a == "para")
- || (the_document_body_section[$-1].is_a == "heading"))
- && (counter-1 > previous_count)) {
+ || (the_document_body_section[$-1].is_a == "heading")
+ || (the_document_body_section[$-1].is_a == "group"))
+ && (the_document_body_section.length > previous_length)
+ ) {
if ((the_document_body_section[$-1].is_a == "heading")
&& (the_document_body_section[$-1].heading_attrib.lev_markup_number < 5)) {
type["biblio_section"] = State.off;
type["glossary_section"] = State.off;
type["blurb_section"] = State.off;
}
- if (match(the_document_body_section[$-1].object,
- rgx.inline_notes_delimiter_al_regular_number_note)) {
+ previous_length = the_document_body_section.length;
+ if (
+ match(the_document_body_section[$-1].object,
+ rgx.inline_notes_delimiter_al_regular_number_note)
+ ) {
previous_count=the_document_body_section.length -1;
note_section.gather_notes_for_endnote_section(
the_document_body_section,
@@ -972,7 +977,7 @@ template SiSUdocAbstraction() {
the_table_of_contents_section["seg"].length
);
foreach (toc_linked_heading; the_table_of_contents_section["seg"]) {
- writeln(toc_linked_heading.object);
+ writeln(mkup.indent_by_spaces_provided(toc_linked_heading.para_attrib.indent_start), toc_linked_heading.object);
}
}
the_document_head_section ~= the_document_body_section[0];
@@ -2333,6 +2338,7 @@ template SiSUdocAbstraction() {
struct ObjInlineMarkupMunge {
string[string] obj_txt;
int n_foot, n_foot_reg, n_foot_sp_asterisk, n_foot_sp_plus;
+ string asterisks_;
string obj_txt_out, tail, note;
auto rgx = Rgx();
auto mkup = InlineMarkup();
@@ -2387,7 +2393,7 @@ template SiSUdocAbstraction() {
}
return obj_txt_in;
}
- string footnotes_endnotes(string obj_txt_in) {
+ string footnotes_endnotes_markup_and_number_or_stars(string obj_txt_in) {
/+ endnotes (regular) +/
obj_txt_in =
replaceAll(
@@ -2396,28 +2402,36 @@ template SiSUdocAbstraction() {
(mkup.en_a_o ~ " $1" ~ mkup.en_a_c)
);
if (match(obj_txt_in, rgx.inline_notes_al_gen)) {
- foreach(m; matchAll(obj_txt_in, rgx.inline_text_and_note_al)) {
- if (match(obj_txt_in, rgx.inline_al_delimiter_open_asterisk)) {
- ++n_foot_sp_asterisk;
- n_foot=n_foot_sp_asterisk;
- } else if (match(obj_txt_in, rgx.inline_al_delimiter_open_plus)) {
- ++n_foot_sp_plus;
- n_foot=n_foot_sp_plus;
- } else {
- ++n_foot_reg;
- n_foot=n_foot_reg;
+ if (auto m = matchAll(obj_txt_in, rgx.inline_text_and_note_al_)) {
+ foreach(n; m) {
+ if (match(to!string(n.hit), rgx.inline_al_delimiter_open_symbol_star)) {
+ ++n_foot_sp_asterisk;
+ asterisks_ = "*";
+ n_foot=n_foot_sp_asterisk;
+ obj_txt_out ~=
+ (replaceFirst(
+ to!string(n.hit),
+ rgx.inline_al_delimiter_open_symbol_star,
+ (mkup.en_a_o ~ replicate(asterisks_, n_foot_sp_asterisk) ~ " ")
+ ) ~ "\n");
+ } else if (match(to!string(n.hit), rgx.inline_al_delimiter_open_regular)) {
+ ++n_foot_reg;
+ n_foot=n_foot_reg;
+ obj_txt_out ~=
+ (replaceFirst(
+ to!string(n.hit),
+ rgx.inline_al_delimiter_open_regular,
+ (mkup.en_a_o ~ to!string(n_foot) ~ " ")
+ ) ~ "\n");
+ } else {
+ obj_txt_out ~= to!string(n.hit) ~ "\n";
+ }
}
- obj_txt_out ~= replaceFirst(
- m.hit,
- rgx.inline_al_delimiter_open_regular,
- (mkup.en_a_o ~ to!string(n_foot))
- );
- tail = m.post;
}
} else {
obj_txt_out = obj_txt_in;
}
- return obj_txt_in;
+ return obj_txt_out;
}
private auto object_notes_(string obj_txt_in)
in { }
@@ -2440,7 +2454,7 @@ template SiSUdocAbstraction() {
if (auto m = matchAll(obj_txt_in, rgx.inline_url)) {
obj_txt_in = url_links(obj_txt_in);
}
- obj_txt_in = footnotes_endnotes(obj_txt_in);
+ obj_txt_out = footnotes_endnotes_markup_and_number_or_stars(obj_txt_in);
debug(footnotes) {
writeln(obj_txt_out, tail);
}
@@ -3449,8 +3463,9 @@ template SiSUdocAbstraction() {
// doc objects other than paragraphs & headings
// various forms of grouped text
assert((contents_am[counter].is_a == "para")
- || (contents_am[counter].is_a == "heading"));
- assert(counter > previous_count);
+ || (contents_am[counter].is_a == "heading")
+ || (contents_am[counter].is_a == "group"));
+ assert(counter >= previous_count);
previous_count=counter;
assert(
match(contents_am[counter].object,
@@ -3459,9 +3474,13 @@ template SiSUdocAbstraction() {
}
body {
auto munge = ObjInlineMarkupMunge();
- foreach(m;
- matchAll(contents_am[counter].object,
- rgx.inline_notes_delimiter_al_regular_number_note)) {
+ foreach(
+ m;
+ matchAll(
+ contents_am[counter].object,
+ rgx.inline_notes_delimiter_al_regular_number_note
+ )
+ ) {
debug(endnotes_build) {
writeln(
"{^{", m.captures[1], ".}^}../", segment_object_belongs_to, ".fn_suffix#noteref_\n ", m.captures[1], " ",
@@ -3469,16 +3488,24 @@ template SiSUdocAbstraction() {
}
// TODO NEXT you need anchor for segments at this point ->
object_notes["seg"] ~=
- munge.url_links("{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~
- m.captures[1]) ~ " " ~ m.captures[2] ~ "』";
+ munge.url_links(
+ "{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~
+ m.captures[1]
+ ) ~ " " ~ m.captures[2] ~ "』";
object_notes["seg"] ~= (segment_object_belongs_to.empty)
- ? (munge.url_links("{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~
- m.captures[1]) ~ " " ~ m.captures[2] ~ "』")
- : (munge.url_links("{^{" ~ m.captures[1] ~ ".}^}../" ~ segment_object_belongs_to ~ ".fn_suffix#noteref_" ~
- m.captures[1]) ~ " " ~ m.captures[2] ~ "』");
+ ? (munge.url_links(
+ "{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~
+ m.captures[1]) ~ " " ~ m.captures[2] ~ "』"
+ )
+ : (munge.url_links(
+ "{^{" ~ m.captures[1] ~ ".}^}../" ~ segment_object_belongs_to ~ ".fn_suffix#noteref_" ~
+ m.captures[1]) ~ " " ~ m.captures[2] ~ "』"
+ );
object_notes["scroll"] ~=
- munge.url_links("{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~
- m.captures[1]) ~ " " ~ m.captures[2] ~ "』";
+ munge.url_links(
+ "{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~
+ m.captures[1]
+ ) ~ " " ~ m.captures[2] ~ "』";
}
return object_notes;
}
diff --git a/src/sdp/ao_defaults.d b/src/sdp/ao_defaults.d
index f1c05ac..9a84e80 100644
--- a/src/sdp/ao_defaults.d
+++ b/src/sdp/ao_defaults.d
@@ -388,42 +388,17 @@ template InternalMarkup() {
auto en_b_o = "〖"; auto en_b_c = "〗"; // endnote en_b_o: '~['; en_b_c: ']~';
auto lnk_o = "┥"; auto lnk_c = "┝";
auto url_o = "┤"; auto url_c = "├";
- string _indent_spaces ="";
+ auto nbsp = "░";
+ auto br_line = "┘";
+ auto br_nl = "┙";
+ auto br_paragraph = "┚";
+ auto br_obj = "break_obj";
+ auto br_page_line = "┼";
+ auto br_page = "┿";
+ auto br_page_new = "╂";
string indent_by_spaces_provided(int indent) {
- switch (indent) {
- case 0:
- _indent_spaces = "";
- break;
- case 1:
- _indent_spaces = " ";
- break;
- case 2:
- _indent_spaces = " ";
- break;
- case 3:
- _indent_spaces = " ";
- break;
- case 4:
- _indent_spaces = " ";
- break;
- case 5:
- _indent_spaces = " ";
- break;
- case 6:
- _indent_spaces = " ";
- break;
- case 7:
- _indent_spaces = " ";
- break;
- case 8:
- _indent_spaces = " ";
- break;
- case 9:
- _indent_spaces = " ";
- break;
- default:
- break;
- }
+ auto _indent_spaces ="░░"; // auto nbsp = "░";
+ _indent_spaces = replicate(_indent_spaces, indent);
return _indent_spaces;
}
}
diff --git a/src/sdp/ao_rgx.d b/src/sdp/ao_rgx.d
index 73cdb40..3d531dc 100644
--- a/src/sdp/ao_rgx.d
+++ b/src/sdp/ao_rgx.d
@@ -134,14 +134,17 @@ template RgxInit() {
/+ inline markup footnotes endnotes +/
static inline_notes_al = ctRegex!(`【(?:[*+]\s+|\s*)(.+?)】`, "mg");
static inline_notes_al_gen = ctRegex!(`【.+?】`, "m");
- static inline_al_delimiter_open_regular = ctRegex!(`【`, "m");
+ static inline_al_delimiter_open_regular = ctRegex!(`【\s`, "m");
+ static inline_al_delimiter_open_symbol_star = ctRegex!(`【[*]\s`, "m");
+ static inline_al_delimiter_open_symbol_plus = ctRegex!(`【[+]\s`, "m");
static inline_al_delimiter_close_regular = ctRegex!(`】`, "m");
static inline_al_delimiter_open_and_close_regular = ctRegex!(`【|】`, "m");
- static inline_notes_delimiter_al_regular = ctRegex!(`【(.+?)】`, "m");
- static inline_notes_delimiter_al_regular_number_note = ctRegex!(`【(\d+)\s+(.+?)】`, "m");
+ static inline_notes_delimiter_al_regular = ctRegex!(`【(.+?)】`, "mg");
+ static inline_notes_delimiter_al_regular_number_note = ctRegex!(`【(\d+)\s+(.+?)】`, "mg");
static inline_al_delimiter_open_asterisk = ctRegex!(`【\*`, "m");
static inline_al_delimiter_open_plus = ctRegex!(`【\+`, "m");
static inline_text_and_note_al = ctRegex!(`(?P<text>.+?)【(?:[*+ ]*)(?P<note>.+?)】`, "mg");
+ static inline_text_and_note_al_ = ctRegex!(`(.+?(?:【[*+ ]*.+?】|$))`, "mg");
static inline_url = ctRegex!(`((?:(?:https?|git):\/\/|\.\.\/|\.\/|#)\S+)`, "mg");
static inline_link_naked_url = ctRegex!(`(^|[ ])((?:(?:https?|git):\/\/|\.\.\/|\.\/|#)\S+?)([.,;:?!]?(?:[ ]|$))`, "mg");
static inline_link_markup_regular = ctRegex!(`(^|[ ])\{\s*(.+?)\s*\}((?:(?:https?|git):\/\/|\.\.\/|\.\/|#)\S+?)([.,;:?!]?(?:[ ]|$))`, "mg");
diff --git a/src/sdp/output_html.d b/src/sdp/output_html.d
index ce5684f..5552fe2 100644
--- a/src/sdp/output_html.d
+++ b/src/sdp/output_html.d
@@ -4,14 +4,14 @@ template SiSUoutputHTML() {
auto ref const O obj,
) {
string o;
- o = format(q"◎<br><hr /><br>
+ o = format(q"¶<br><hr /><br>
<div class="substance">
<label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>
<h%s class="norm" id="%s"><a name="%s"></a>
%s
</h%s>
</div>
- ◎",
+ ¶",
obj.obj_cite_number,
obj.obj_cite_number,
obj.heading_attrib.lev_markup_number,
@@ -26,13 +26,13 @@ template SiSUoutputHTML() {
auto ref const O obj,
) {
string o;
- o = format(q"◎<div class="substance">
+ o = format(q"¶<div class="substance">
<label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>
<p class="h%si%s" id="%s">
%s
</p>
</div>
- ◎",
+ ¶",
obj.obj_cite_number,
obj.obj_cite_number,
obj.para_attrib.indent_start,
@@ -44,7 +44,7 @@ template SiSUoutputHTML() {
}
auto scroll_head_html() {
string o;
- o = format(q"◎
+ o = format(q"¶
<!DOCTYPE html>
<html>
<head>
@@ -72,18 +72,18 @@ template SiSUoutputHTML() {
</head>
<body lang="en">
<a name="top" id="top"></a>
- ◎");
+ ¶");
return o;
}
auto scroll_tail_html() {
string o;
- o = format(q"◎
+ o = format(q"¶
<a name="bottom" id="bottom"></a>
<a name="end" id="end"></a>
</div>
</body>
</html>
- ◎");
+ ¶");
return o;
}
void scroll(C)(