aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2016-11-28 20:03:08 -0500
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:13 -0400
commit42942142d1379e7e5361a641f837beb54b23a2f1 (patch)
tree83ddd207debd3f854b6b5d2150807c9abd457c8a
parenthousekeeping (diff)
discrete objects marks, output html work in progress
-rw-r--r--org/ao_abstract_doc_source.org77
-rw-r--r--org/ao_defaults.org2
-rw-r--r--org/output.org118
-rw-r--r--src/sdp/ao_abstract_doc_source.d50
-rw-r--r--src/sdp/ao_object_setter.d21
-rw-r--r--src/sdp/ao_rgx.d2
-rw-r--r--src/sdp/output_html.d100
7 files changed, 296 insertions, 74 deletions
diff --git a/org/ao_abstract_doc_source.org b/org/ao_abstract_doc_source.org
index b3c4cd6..690c029 100644
--- a/org/ao_abstract_doc_source.org
+++ b/org/ao_abstract_doc_source.org
@@ -842,7 +842,7 @@ if (the_document_body_section.length > 0) {
#+name: abs_post
#+BEGIN_SRC d
debug(objectrelated2) { // check
- writeln(line);
+ writeln(line);
}
/+
Backmatter:
@@ -1088,7 +1088,7 @@ if (the_endnotes_section["seg"].length > 1) {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -1105,7 +1105,7 @@ if (the_endnotes_section["scroll"].length > 1) {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -1122,7 +1122,7 @@ if (the_glossary_section.length > 1) {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -1137,7 +1137,7 @@ if (the_glossary_section.length > 1) {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -1154,7 +1154,7 @@ if (the_bibliography_section.length > 1){
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -1169,7 +1169,7 @@ if (the_bibliography_section.length > 1){
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -1186,7 +1186,7 @@ if (the_bookindex_section["seg"].length > 1) {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -1203,7 +1203,7 @@ if (the_bookindex_section["scroll"].length > 1) {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -1220,7 +1220,7 @@ if (the_blurb_section.length > 1) {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -1235,7 +1235,7 @@ if (the_blurb_section.length > 1) {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -3195,7 +3195,7 @@ struct ObjInlineMarkup {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -3209,7 +3209,7 @@ struct ObjInlineMarkup {
"base_position" : 0,
];
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
"Table of Contents",
"", // attrib
@@ -3227,7 +3227,7 @@ struct ObjInlineMarkup {
toc_txt_ = "{ Table of Contents }../toc.fn_suffix";
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -3247,7 +3247,7 @@ struct ObjInlineMarkup {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -3268,7 +3268,7 @@ struct ObjInlineMarkup {
"base_position" : to!int(obj_["lev_markup_number"]),
];
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -3290,7 +3290,7 @@ struct ObjInlineMarkup {
"base_position" : to!int(obj_["lev_markup_number"]),
];
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -4182,11 +4182,7 @@ struct NotesSection {
m.captures[2]); // sometimes need segment name (segmented html & epub)
}
// 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] ~ "』";
+ object_notes["anchor"] ~= "#note_" ~ m.captures[1] ~ "』";
object_notes["seg"] ~= (segment_object_belongs_to.empty)
? (munge.url_links(
"{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~
@@ -4218,9 +4214,11 @@ struct NotesSection {
if (object_notes.length > 1) {
endnotes_["seg"] = (split(object_notes["seg"], rgx.break_string))[0..$-1];
endnotes_["scroll"] = (split(object_notes["scroll"], rgx.break_string))[0..$-1];
+ endnotes_["anchor"] = (split(object_notes["anchor"], rgx.break_string))[0..$-1];
} else {
endnotes_["seg"] = [];
endnotes_["scroll"] = [];
+ endnotes_["anchor"] = [];
}
return endnotes_;
}
@@ -4316,15 +4314,15 @@ struct NotesSection {
1
);
}
- foreach (endnote; endnotes_["seg"]) {
+ foreach (i, endnote; endnotes_["seg"]) {
attrib="";
the_endnotes_section["seg"] ~=
- set_abstract_object.contents_endnote(endnote);
+ set_abstract_object.contents_endnote(endnote, endnotes_["anchor"][i]);
}
- foreach (endnote; endnotes_["scroll"]) {
+ foreach (i, endnote; endnotes_["scroll"]) {
attrib="";
the_endnotes_section["scroll"] ~=
- set_abstract_object.contents_endnote(endnote);
+ set_abstract_object.contents_endnote(endnote, endnotes_["anchor"][i]);
}
auto t = tuple(the_endnotes_section, obj_cite_number);
return t;
@@ -5066,12 +5064,38 @@ auto contents_para(
}
#+END_SRC
+*** toc :para:
+
+#+name: ao_object_setter_para
+#+BEGIN_SRC d
+auto contents_toc(
+ in string is_a,
+ in string object,
+ in string attrib,
+ in int obj_cite_number,
+ in int[string] indent,
+ in bool bullet
+) {
+ ObjComposite object_set;
+ object_set.use = "content";
+ object_set.of = "para";
+ object_set.is_a = "toc";
+ object_set.object = object.strip;
+ object_set.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number);
+ object_set.para_attrib.indent_start = to!int(indent["hang_position"]);
+ object_set.para_attrib.indent_rest = to!int(indent["base_position"]);
+ object_set.para_attrib.bullet = false; // bullet;
+ return object_set;
+}
+#+END_SRC
+
*** para_endnote :para:
#+name: ao_object_setter_endnote
#+BEGIN_SRC d
auto contents_endnote(
in string object,
+ in string tag,
) {
auto m = (matchFirst(object, rgx.note_ref));
string notenumber = to!string(m.captures[1]);
@@ -5082,6 +5106,7 @@ auto contents_endnote(
object_set.is_a = "endnote";
object_set.object = object.strip;
object_set.obj_cite_number = "";
+ object_set.anchor_tags ~= [ tag ];
object_set.para_attrib.indent_start = 0;
object_set.para_attrib.indent_rest = 0;
object_set.para_attrib.bullet = false;
diff --git a/org/ao_defaults.org b/org/ao_defaults.org
index 8dde679..b5ed652 100644
--- a/org/ao_defaults.org
+++ b/org/ao_defaults.org
@@ -672,7 +672,7 @@ static inline_notes_delimiter_al_regular_number_note = ctRegex!(`【(\d+)\s+(.+
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_text_and_note_al_ = ctRegex!(`(.+?(?:【[*+]*\s+.+?】|$))`, "mg");
#+END_SRC
** links/ urls :inline:footnote:
diff --git a/org/output.org b/org/output.org
index d17020f..b77c2dd 100644
--- a/org/output.org
+++ b/org/output.org
@@ -31,7 +31,7 @@ auto html_heading(O)(
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>
+ <h%s class="%s" id="%s"><a name="%s"></a>
%s
</h%s>
</div>
@@ -39,6 +39,7 @@ auto html_heading(O)(
obj.obj_cite_number,
obj.obj_cite_number,
obj.heading_attrib.lev_markup_number,
+ obj.is_a,
obj.obj_cite_number,
obj.obj_cite_number,
obj.object,
@@ -56,17 +57,109 @@ auto html_para(O)(
auto ref const O obj,
) {
string o;
+ if (obj.obj_cite_number.empty) {
+ o = format(q"¶<div class="substance">
+ <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>
+ <p class="%s" attrib="h%si%s">
+ %s
+ </p>
+ </div>
+ ¶",
+ obj.obj_cite_number,
+ obj.obj_cite_number,
+ obj.is_a,
+ obj.para_attrib.indent_start,
+ obj.para_attrib.indent_rest,
+ obj.object
+ );
+ } else {
+ o = format(q"¶<div class="substance">
+ <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>
+ <p class="%s" attrib="h%si%s" id="%s">
+ %s
+ </p>
+ </div>
+ ¶",
+ obj.obj_cite_number,
+ obj.obj_cite_number,
+ obj.is_a,
+ obj.para_attrib.indent_start,
+ obj.para_attrib.indent_rest,
+ obj.obj_cite_number,
+ obj.object
+ );
+ }
+ return o;
+}
+#+END_SRC
+
+***** html endnote
+
+#+name: output_html
+#+BEGIN_SRC d
+auto html_endnote(O)(
+ auto ref const O obj,
+) {
+ string o;
+ o = format(q"¶<div class="substance">
+ <label class="tag"><a name="%s" a href="%s" class="lnkocn"></a></label>
+ <p class="%s" attrib="h%si%s">
+ %s
+ </p>
+ </div>
+ ¶",
+ obj.anchor_tags[0],
+ obj.anchor_tags[0],
+ obj.is_a,
+ obj.para_attrib.indent_start,
+ obj.para_attrib.indent_rest,
+ obj.object
+ );
+ return o;
+}
+#+END_SRC
+
+***** html toc
+
+#+name: output_html
+#+BEGIN_SRC d
+auto html_toc(O)(
+ auto ref const O obj,
+) {
+ string o;
+ o = format(q"¶<div class="substance">
+ <p class="%s" attrib="h%si%s">
+ %s
+ </p>
+ </div>
+ ¶",
+ obj.is_a,
+ obj.para_attrib.indent_start,
+ obj.para_attrib.indent_rest,
+ obj.object
+ );
+ return o;
+}
+#+END_SRC
+
+***** html nugget
+
+#+name: output_html
+#+BEGIN_SRC d
+auto html_nugget(O)(
+ auto ref const O obj,
+) {
+ string o;
o = format(q"¶<div class="substance">
<label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>
- <p class="h%si%s" id="%s">
+ <p class="%s" id="%s">
%s
</p>
</div>
¶",
obj.obj_cite_number,
obj.obj_cite_number,
- obj.para_attrib.indent_start,
- obj.para_attrib.indent_rest,
+ obj.is_a,
obj.obj_cite_number,
obj.object
);
@@ -146,29 +239,34 @@ void scroll(C)(
case "heading":
body_html ~= html_heading(obj);
break;
+ case "toc":
+ body_html ~= html_toc(obj);
+ break;
case "para":
body_html ~= html_para(obj);
break;
case "verse":
- body_html ~= html_para(obj);
+ body_html ~= html_nugget(obj);
break;
case "group":
- body_html ~= html_para(obj);
+ body_html ~= html_nugget(obj);
break;
case "block":
- body_html ~= html_para(obj);
+ body_html ~= html_nugget(obj);
break;
case "quote":
- body_html ~= html_para(obj);
+ body_html ~= html_nugget(obj);
break;
case "table":
body_html ~= html_para(obj);
break;
case "code":
- body_html ~= html_para(obj);
+ body_html ~= html_nugget(obj);
+ break;
+ case "endnote":
+ body_html ~= html_endnote(obj);
break;
default:
- body_html ~= html_para(obj);
break;
}
}
diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d
index 9bfa6cb..51089cd 100644
--- a/src/sdp/ao_abstract_doc_source.d
+++ b/src/sdp/ao_abstract_doc_source.d
@@ -651,7 +651,7 @@ template SiSUdocAbstraction() {
} /+ ← closed: loop markup document/text line by line +/
/+ ↓ post loop markup document/text +/
debug(objectrelated2) { // check
- writeln(line);
+ writeln(line);
}
/+
Backmatter:
@@ -814,7 +814,7 @@ template SiSUdocAbstraction() {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -831,7 +831,7 @@ template SiSUdocAbstraction() {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -848,7 +848,7 @@ template SiSUdocAbstraction() {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -863,7 +863,7 @@ template SiSUdocAbstraction() {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -880,7 +880,7 @@ template SiSUdocAbstraction() {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -895,7 +895,7 @@ template SiSUdocAbstraction() {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -912,7 +912,7 @@ template SiSUdocAbstraction() {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -929,7 +929,7 @@ template SiSUdocAbstraction() {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -946,7 +946,7 @@ template SiSUdocAbstraction() {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -961,7 +961,7 @@ template SiSUdocAbstraction() {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -2677,7 +2677,7 @@ template SiSUdocAbstraction() {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -2691,7 +2691,7 @@ template SiSUdocAbstraction() {
"base_position" : 0,
];
the_table_of_contents_section["scroll"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
"Table of Contents",
"", // attrib
@@ -2709,7 +2709,7 @@ template SiSUdocAbstraction() {
toc_txt_ = "{ Table of Contents }../toc.fn_suffix";
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -2729,7 +2729,7 @@ template SiSUdocAbstraction() {
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -2750,7 +2750,7 @@ template SiSUdocAbstraction() {
"base_position" : to!int(obj_["lev_markup_number"]),
];
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -2772,7 +2772,7 @@ template SiSUdocAbstraction() {
"base_position" : to!int(obj_["lev_markup_number"]),
];
the_table_of_contents_section["seg"] ~=
- set_abstract_object.contents_para(
+ set_abstract_object.contents_toc(
"toc",
toc_txt_,
"", // attrib
@@ -3487,11 +3487,7 @@ template SiSUdocAbstraction() {
m.captures[2]); // sometimes need segment name (segmented html & epub)
}
// 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] ~ "』";
+ object_notes["anchor"] ~= "#note_" ~ m.captures[1] ~ "』";
object_notes["seg"] ~= (segment_object_belongs_to.empty)
? (munge.url_links(
"{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~
@@ -3517,9 +3513,11 @@ template SiSUdocAbstraction() {
if (object_notes.length > 1) {
endnotes_["seg"] = (split(object_notes["seg"], rgx.break_string))[0..$-1];
endnotes_["scroll"] = (split(object_notes["scroll"], rgx.break_string))[0..$-1];
+ endnotes_["anchor"] = (split(object_notes["anchor"], rgx.break_string))[0..$-1];
} else {
endnotes_["seg"] = [];
endnotes_["scroll"] = [];
+ endnotes_["anchor"] = [];
}
return endnotes_;
}
@@ -3609,15 +3607,15 @@ template SiSUdocAbstraction() {
1
);
}
- foreach (endnote; endnotes_["seg"]) {
+ foreach (i, endnote; endnotes_["seg"]) {
attrib="";
the_endnotes_section["seg"] ~=
- set_abstract_object.contents_endnote(endnote);
+ set_abstract_object.contents_endnote(endnote, endnotes_["anchor"][i]);
}
- foreach (endnote; endnotes_["scroll"]) {
+ foreach (i, endnote; endnotes_["scroll"]) {
attrib="";
the_endnotes_section["scroll"] ~=
- set_abstract_object.contents_endnote(endnote);
+ set_abstract_object.contents_endnote(endnote, endnotes_["anchor"][i]);
}
auto t = tuple(the_endnotes_section, obj_cite_number);
return t;
diff --git a/src/sdp/ao_object_setter.d b/src/sdp/ao_object_setter.d
index c48ddc0..844af9b 100644
--- a/src/sdp/ao_object_setter.d
+++ b/src/sdp/ao_object_setter.d
@@ -95,8 +95,28 @@ template ObjectSetter() {
// object_set.node_structure.node = _node;
return object_set;
}
+ auto contents_toc(
+ in string is_a,
+ in string object,
+ in string attrib,
+ in int obj_cite_number,
+ in int[string] indent,
+ in bool bullet
+ ) {
+ ObjComposite object_set;
+ object_set.use = "content";
+ object_set.of = "para";
+ object_set.is_a = "toc";
+ object_set.object = object.strip;
+ object_set.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number);
+ object_set.para_attrib.indent_start = to!int(indent["hang_position"]);
+ object_set.para_attrib.indent_rest = to!int(indent["base_position"]);
+ object_set.para_attrib.bullet = false; // bullet;
+ return object_set;
+ }
auto contents_endnote(
in string object,
+ in string tag,
) {
auto m = (matchFirst(object, rgx.note_ref));
string notenumber = to!string(m.captures[1]);
@@ -107,6 +127,7 @@ template ObjectSetter() {
object_set.is_a = "endnote";
object_set.object = object.strip;
object_set.obj_cite_number = "";
+ object_set.anchor_tags ~= [ tag ];
object_set.para_attrib.indent_start = 0;
object_set.para_attrib.indent_rest = 0;
object_set.para_attrib.bullet = false;
diff --git a/src/sdp/ao_rgx.d b/src/sdp/ao_rgx.d
index 3d531dc..f320867 100644
--- a/src/sdp/ao_rgx.d
+++ b/src/sdp/ao_rgx.d
@@ -144,7 +144,7 @@ template RgxInit() {
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_text_and_note_al_ = ctRegex!(`(.+?(?:【[*+]*\s+.+?】|$))`, "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 5552fe2..c20d6ef 100644
--- a/src/sdp/output_html.d
+++ b/src/sdp/output_html.d
@@ -7,7 +7,7 @@ template SiSUoutputHTML() {
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>
+ <h%s class="%s" id="%s"><a name="%s"></a>
%s
</h%s>
</div>
@@ -15,6 +15,7 @@ template SiSUoutputHTML() {
obj.obj_cite_number,
obj.obj_cite_number,
obj.heading_attrib.lev_markup_number,
+ obj.is_a,
obj.obj_cite_number,
obj.obj_cite_number,
obj.object,
@@ -26,17 +27,91 @@ template SiSUoutputHTML() {
auto ref const O obj,
) {
string o;
+ if (obj.obj_cite_number.empty) {
+ o = format(q"¶<div class="substance">
+ <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>
+ <p class="%s" attrib="h%si%s">
+ %s
+ </p>
+ </div>
+ ¶",
+ obj.obj_cite_number,
+ obj.obj_cite_number,
+ obj.is_a,
+ obj.para_attrib.indent_start,
+ obj.para_attrib.indent_rest,
+ obj.object
+ );
+ } else {
+ o = format(q"¶<div class="substance">
+ <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>
+ <p class="%s" attrib="h%si%s" id="%s">
+ %s
+ </p>
+ </div>
+ ¶",
+ obj.obj_cite_number,
+ obj.obj_cite_number,
+ obj.is_a,
+ obj.para_attrib.indent_start,
+ obj.para_attrib.indent_rest,
+ obj.obj_cite_number,
+ obj.object
+ );
+ }
+ return o;
+ }
+ auto html_endnote(O)(
+ auto ref const O obj,
+ ) {
+ string o;
+ o = format(q"¶<div class="substance">
+ <label class="tag"><a name="%s" a href="%s" class="lnkocn"></a></label>
+ <p class="%s" attrib="h%si%s">
+ %s
+ </p>
+ </div>
+ ¶",
+ obj.anchor_tags[0],
+ obj.anchor_tags[0],
+ obj.is_a,
+ obj.para_attrib.indent_start,
+ obj.para_attrib.indent_rest,
+ obj.object
+ );
+ return o;
+ }
+ auto html_toc(O)(
+ auto ref const O obj,
+ ) {
+ string o;
+ o = format(q"¶<div class="substance">
+ <p class="%s" attrib="h%si%s">
+ %s
+ </p>
+ </div>
+ ¶",
+ obj.is_a,
+ obj.para_attrib.indent_start,
+ obj.para_attrib.indent_rest,
+ obj.object
+ );
+ return o;
+ }
+ auto html_nugget(O)(
+ auto ref const O obj,
+ ) {
+ string o;
o = format(q"¶<div class="substance">
<label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>
- <p class="h%si%s" id="%s">
+ <p class="%s" id="%s">
%s
</p>
</div>
¶",
obj.obj_cite_number,
obj.obj_cite_number,
- obj.para_attrib.indent_start,
- obj.para_attrib.indent_rest,
+ obj.is_a,
obj.obj_cite_number,
obj.object
);
@@ -104,29 +179,34 @@ template SiSUoutputHTML() {
case "heading":
body_html ~= html_heading(obj);
break;
+ case "toc":
+ body_html ~= html_toc(obj);
+ break;
case "para":
body_html ~= html_para(obj);
break;
case "verse":
- body_html ~= html_para(obj);
+ body_html ~= html_nugget(obj);
break;
case "group":
- body_html ~= html_para(obj);
+ body_html ~= html_nugget(obj);
break;
case "block":
- body_html ~= html_para(obj);
+ body_html ~= html_nugget(obj);
break;
case "quote":
- body_html ~= html_para(obj);
+ body_html ~= html_nugget(obj);
break;
case "table":
body_html ~= html_para(obj);
break;
case "code":
- body_html ~= html_para(obj);
+ body_html ~= html_nugget(obj);
+ break;
+ case "endnote":
+ body_html ~= html_endnote(obj);
break;
default:
- body_html ~= html_para(obj);
break;
}
}