aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2017-08-07 07:58:02 -0400
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:14 -0400
commit8de7594804287154385e285147d2bbadcb0d3113 (patch)
treed4108c68ae5c4d57ce5d8e5bf24252460dc247d9 /src/sdp
parenta couple of small fixes (diff)
html css using grid & flex (remove tables)
Diffstat (limited to 'src/sdp')
-rw-r--r--src/sdp/meta/metadoc_from_src.d2
-rw-r--r--src/sdp/output/html.d17
-rw-r--r--src/sdp/output/xmls.d208
-rw-r--r--src/sdp/output/xmls_css.d136
4 files changed, 241 insertions, 122 deletions
diff --git a/src/sdp/meta/metadoc_from_src.d b/src/sdp/meta/metadoc_from_src.d
index 5445333..732dbd0 100644
--- a/src/sdp/meta/metadoc_from_src.d
+++ b/src/sdp/meta/metadoc_from_src.d
@@ -3358,7 +3358,7 @@ template SiSUdocAbstraction() {
}
}
void _para_match_(L,O,K,I,B,T,C)(
- L line, // watch
+ L line,
return ref O an_object,
return ref K an_object_key,
return ref I indent,
diff --git a/src/sdp/output/html.d b/src/sdp/output/html.d
index b961d4c..8145417 100644
--- a/src/sdp/output/html.d
+++ b/src/sdp/output/html.d
@@ -22,8 +22,11 @@ template outputHTML() {
string[] doc_html;
string[] doc;
string suffix = ".html";
+ string previous_part = "";
+ string delimit = "";
foreach (part; doc_matters.keys_seq.scroll) {
foreach (obj; doc_abstraction[part]) {
+ delimit = xhtml_format.div_delimit(part, previous_part);
string _txt = xhtml_format.special_characters(obj, obj.text);
switch (obj.of_part) {
case "frontmatter": assert(part == "head" || "toc_scroll");
@@ -31,7 +34,7 @@ template outputHTML() {
case "para":
switch (obj.is_a) {
case "heading":
- doc_html ~= xhtml_format.heading_scroll(obj, _txt, suffix);
+ doc_html ~= delimit ~ xhtml_format.heading_scroll(obj, _txt, suffix);
break;
case "toc":
doc_html ~= xhtml_format.para_scroll(obj, _txt, suffix);
@@ -55,7 +58,7 @@ template outputHTML() {
case "para":
switch (obj.is_a) {
case "heading":
- doc_html ~= xhtml_format.heading_scroll(obj, _txt, suffix);
+ doc_html ~= delimit ~ xhtml_format.heading_scroll(obj, _txt, suffix);
break;
case "para":
doc_html ~= xhtml_format.para_scroll(obj, _txt, suffix);
@@ -109,7 +112,7 @@ template outputHTML() {
case "para":
switch (obj.is_a) {
case "heading":
- doc_html ~= xhtml_format.heading_scroll(obj, _txt, suffix);
+ doc_html ~= delimit ~ xhtml_format.heading_scroll(obj, _txt, suffix);
break;
case "endnote": assert(part == "endnotes");
doc_html ~= xhtml_format.para_scroll(obj, _txt, suffix);
@@ -192,11 +195,13 @@ template outputHTML() {
string[] doc;
string segment_filename;
string[] top_level_headings = ["","","",""];
- string _bottom_bar ="";
string previous_seg_filename = "";
string suffix = ".html";
+ string previous_part = "";
+ string delimit = "";
foreach (part; doc_matters.keys_seq.seg) {
foreach (obj; doc_abstraction[part]) {
+ delimit = xhtml_format.div_delimit(part, previous_part);
string _txt = xhtml_format.special_characters(obj, obj.text);
if (obj.is_a == "heading") {
assert(part == "head" || "toc_seg" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex_seg" || "blurb" || "tail");
@@ -231,10 +236,8 @@ template outputHTML() {
case 4:
segment_filename = obj.segment_anchor_tag;
doc_html[segment_filename] ~= xhtml_format.html_head(doc_matters, "seg");
- doc_html_endnotes[previous_seg_filename] ~= _bottom_bar; // places after segment text and endnotes
auto navigation_bar = xhtml_format.nav_pre_next_svg(obj);
- doc_html[segment_filename] ~= navigation_bar.toc_pre_next;
- _bottom_bar = navigation_bar.toc_pre_next;
+ doc_html[segment_filename] ~= navigation_bar.toc_pre_next; // navigation bar
previous_seg_filename = segment_filename;
foreach (top_level_heading; top_level_headings) {
// writeln(top_level_heading);
diff --git a/src/sdp/output/xmls.d b/src/sdp/output/xmls.d
index c100bbc..57056de 100644
--- a/src/sdp/output/xmls.d
+++ b/src/sdp/output/xmls.d
@@ -14,6 +14,42 @@ template outputXHTMLs() {
mixin SiSUoutputRgxInit;
struct outputXHTMLs {
static auto rgx = Rgx();
+ string div_delimit(
+ string part,
+ return ref string previous_part
+ ){
+ string delimit = "";
+ string delimit_ = "";
+ if (part != previous_part) {
+ switch (part) {
+ case "head":
+ delimit_ ~= "\n<div class=\"doc_title\">\n" ;
+ break;
+ case "toc_seg":
+ delimit_ ~= "\n<div class=\"doc_toc\">\n" ;
+ break;
+ case "toc_scroll":
+ delimit_ ~= "\n<div class=\"doc_toc\">\n" ;
+ break;
+ case "bookindex_seg":
+ delimit_ ~= "\n<div class=\"doc_bookindex\">\n" ;
+ break;
+ case "bookindex_scroll":
+ delimit_ ~= "\n<div class=\"doc_bookindex\">\n" ;
+ break;
+ default:
+ delimit_ ~= "\n<div class=\"doc_" ~ part ~ "\">\n" ;
+ break;
+ }
+ if (previous_part.length > 0) {
+ delimit ~= "\n</div>";
+ }
+ previous_part = part;
+ delimit ~= delimit_;
+ }
+ // you also need to close the last div, introduce a footer?
+ return delimit;
+ }
string special_characters(O)(
auto return ref const O obj,
string _txt
@@ -123,21 +159,17 @@ template outputXHTMLs() {
string _location_3_url ="http://www.sisudoc.org";
string _location_3_lnk ="sisu";
string o;
- o = format(q"¶<!-- Site info button close -->
- <table summary="home button / home information" border="0" cellpadding="3" cellspacing="0">
- <tr><td align="left" bgcolor="#ffffff">
- <p class="tiny_left"><a href="%s" target="_top">
- %s
- </a></p>
- <p class="tiny_left"><a href="%s" target="_top">
- %s
- </a></p>
- <p class="tiny_left"><a href="%s" target="_top">
- %s
- </a></p>
- </td></tr>
- </table>
- <!-- Site info button close -->¶",
+ o = format(q"¶<div class="flex-menu-option">
+ <p class="tiny_left"><a href="%s" target="_top">
+ %s
+ </a></p>
+ <p class="tiny_left"><a href="%s" target="_top">
+ %s
+ </a></p>
+ <p class="tiny_left"><a href="%s" target="_top">
+ %s
+ </a></p>
+ </div>¶",
_location_1_url,
_location_1_lnk,
_location_2_url,
@@ -153,19 +185,19 @@ template outputXHTMLs() {
string _action="http://www.sisudoc.org/cgi-bin/search.cgi";
string _db="SiSU.7a.manual";
string o;
- o = format(q"¶<!-- SiSU Search open -->
- <a name="search"></a>
- <form method="get" action="%s" target="_top">
- <font size="2">
- <input type="text" name="s1" size="24" maxlength="255" />
- <input type="hidden" name="db" value="%s" />
- <input type="hidden" name="ltd" value="1000" />
- <input type="hidden" name="off" value="0" />
- <input type="hidden" name="doc" value="live-manual" /><br />
- <input type="submit" name="search" value="search doc" />
- <input type="submit" name="search" value="search db" />
- </font></form>
- <!-- SiSU Search close -->¶",
+ o = format(q"¶<div class="flex-menu-option">
+ <a name="search"></a>
+ <form method="get" action="%s" target="_top">
+ <font size="2">
+ <input type="text" name="s1" size="24" maxlength="255" />
+ <input type="hidden" name="db" value="%s" />
+ <input type="hidden" name="ltd" value="1000" />
+ <input type="hidden" name="off" value="0" />
+ <input type="hidden" name="doc" value="live-manual" /><br />
+ <input type="submit" name="search" value="search doc" />
+ <input type="submit" name="search" value="search db" />
+ </font></form>
+ </div>¶",
_action,
_db,
);
@@ -192,34 +224,17 @@ template outputXHTMLs() {
</head>
<body lang="%s">
<a name="top" id="top"></a>
- <div class="icon-bar">
- <div class="left-bar">
- <div class="table-bar">
- <table summary="table of contents segment navigation band" id="toc" width="85%%" bgcolor="#ffffff">
- <tr><td width="20%%">
- <!-- Site info button open -->
- %s
- <!-- Site info button close -->
- </td>
- <td width="75%%" align="center">
- <table summary="segment navigation available documents types: toc,doc,pdf,concordance" border="0" cellpadding="3" cellspacing="0">
- <tr>
- <td align="center" bgcolor="#ffffff">
- <td align="center" bgcolor="#ffffff">
- <a href="../../manifest/sisu.en.html" target="_top">
- <font face="verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman" size="2">
- [&nbsp;document&nbsp;manifest&nbsp;]
- </font>
- </a>
- </td>
- <!-- SiSU Search open -->
- %s
- <!-- SiSU Search close -->
- </tr></table>
- </td>
- </table>
- </div>
- </div>%s¶",
+ <div class='delimit headband'>
+ <div class="flex-menu-bar">
+ %s
+ <div class="flex-menu-option">
+ <a href="../../manifest/sisu.en.html" target="_top">
+ <font face="verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman" size="2">
+ [&nbsp;document&nbsp;manifest&nbsp;]
+ </font>
+ </a>
+ </div>
+ %s%s¶",
doc_matters.dochead_meta["title"]["full"],
(doc_matters.dochead_meta["creator"]["author"].empty) ? ""
: ", " ~ doc_matters.dochead_meta["creator"]["author"],
@@ -293,7 +308,8 @@ template outputXHTMLs() {
}
auto tail() {
string o;
- o = format(q"¶ <a name="bottom" id="bottom"></a>
+ o = format(q"¶ </div>
+ <a name="bottom" id="bottom"></a>
<a name="end" id="end"></a>
</body>
</html>¶");
@@ -457,66 +473,62 @@ template outputXHTMLs() {
toc = "";
prev = "";
} else {
- toc = format(q"¶
- <a href="toc.html" target="_top">
- <div class="toc-button menu">
- <svg viewbox="0 0 100 100">
- <path d="M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2 s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2 S29.104,22,28,22z"/>
- </svg>
- </div>
- </a>
- ¶",
+ toc = format(q"¶<a href="toc.html" target="_top">
+ <div class="toc-button menu">
+ <svg viewbox="0 0 100 100">
+ <path d="M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2 s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2 S29.104,22,28,22z"/>
+ </svg>
+ </div>
+ </a>¶",
);
}
if (obj.segname_prev == "") {
prev = "";
- } else { // previous
- prev = format(q"¶
- <a href="%s.html" target="_top">
- <div class="prev-next-button previous">
- <svg viewbox="0 0 100 100">
- <path class="arrow" d="M 50,0 L 60,10 L 20,50 L 60,90 L 50,100 L 0,50 Z" transform=" translate(15,0)">
- </svg>
- </div>
- </a>
- ¶",
+ } else {
+ prev = format(q"¶<a href="%s.html" target="_top">
+ <div class="prev-next-button previous">
+ <svg viewbox="0 0 100 100">
+ <path class="arrow" d="M 50,0 L 60,10 L 20,50 L 60,90 L 50,100 L 0,50 Z" transform=" translate(15,0)">
+ </svg>
+ </div>
+ </a>¶",
obj.segname_prev,
);
}
- if (obj.segname_next == "") { // next
+ if (obj.segname_next == "") {
next = "";
} else {
- next = format(q"¶
- <a href="%s.html" target="_top">
- <div class="prev-next-button next">
- <svg viewbox="0 0 100 100">
- <path class="arrow" d="M 50,0 L 60,10 L 20,50 L 60,90 L 50,100 L 0,50 Z "transform="translate(85,100) rotate(180) ">
- </svg>
- </div>
- </a>
- ¶",
+ next = format(q"¶<a href="%s.html" target="_top">
+ <div class="prev-next-button next">
+ <svg viewbox="0 0 100 100">
+ <path class="arrow" d="M 50,0 L 60,10 L 20,50 L 60,90 L 50,100 L 0,50 Z "transform="translate(85,100) rotate(180) ">
+ </svg>
+ </div>
+ </a>¶",
obj.segname_next,
);
}
- string _toc_pre_next = format(q"¶
- <!-- <div class="icon-bar"> -->
- <div class="nav-bar">
- %s
- %s
- %s
+ string _toc_pre_next = format(q"¶ <div class="flex-menu-option">
+ <div class="nav-bar">
+ %s
+ %s
+ %s
+ </div>
</div>
</div>
- ¶",
+ </div>¶",
toc,
prev,
next,
);
- string _pre_next = format(q"¶
- <div class="nav-bar">
- %s
- %s
+ string _pre_next = format(q"¶ <div class="flex-menu-option">
+ <div class="nav-bar">
+ %s
+ %s
+ </div>
</div>
- ¶",
+ </div>
+ </div>¶",
prev,
next,
);
diff --git a/src/sdp/output/xmls_css.d b/src/sdp/output/xmls_css.d
index 637bca9..0165e56 100644
--- a/src/sdp/output/xmls_css.d
+++ b/src/sdp/output/xmls_css.d
@@ -5,6 +5,124 @@ module sdp.output.xmls_css;
template SiSUcss() {
auto SiSUcss() {
string css_shared="
+ *{
+ padding: 0px;
+ margin: 0px;
+ }
+ body {
+ height: 100vh;
+ background-color: #ffffff;
+ }
+ /* flex */
+ .flex-menu-bar {
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-wrap: wrap;
+ -webkit-align-items: center;
+ align-items: center;
+ width: 100%;
+ background-color: #ffffff;
+ }
+ .flex-menu-option {
+ background-color: white;
+ margin: 8px;
+ }
+ .flex-list {
+ display: -webkit-flex;
+ display: flex;
+ -webkit-align-items: center;
+ display: block;
+ align-items: center;
+ width: 100%;
+ background-color: #ffffff;
+ }
+ .flex-list-item {
+ background-color: white;
+ margin: 4px;
+ }
+ /* grid */
+ .wrapper {
+ display: grid;
+ grid-template-columns: 100%;
+ grid-template-areas:
+ \"headband\"
+ \"doc_header\"
+ \"doc_title\"
+ \"doc_toc\"
+ \"doc_prefix\"
+ \"doc_intro\"
+ \"doc_body\"
+ \"doc_endnotes\"
+ \"doc_glossary\"
+ \"doc_biblio\"
+ \"doc_bookindex\"
+ \"doc_blurb\"
+ \"doc_suffix\";
+ margin: 0px;
+ padding: 0px;
+ background-color: #ffffff;
+ }
+ .delimit {
+ border-style: none;
+ border-color: white;
+ padding: 10px;
+ }
+ .headband {
+ grid-area: headband;
+ background-color: #ffffff;
+ }
+ .doc_header {
+ grid-area: doc_header;
+ }
+ .doc_title {
+ grid-area: doc_title;
+ }
+ .doc_toc {
+ grid-area: doc_toc;
+ }
+ .doc_prefix {
+ grid-area: doc_prefix;
+ }
+ .doc_intro {
+ grid-area: doc_intro;
+ }
+ .doc_body {
+ grid-area: doc_body;
+ }
+ .doc_endnotes {
+ grid-area: doc_endnotes;
+ }
+ .doc_glossary {
+ grid-area: doc_glossary;
+ }
+ .doc_biblio {
+ grid-area: doc_biblio;
+ }
+ .doc_bookindex {
+ grid-area: doc_bookindex;
+ }
+ .doc_blurb {
+ grid-area: doc_blurb;
+ }
+ .doc_suffix {
+ grid-area: doc_suffix;
+ }
+ .nav-ul {
+ list-style: none;
+ float: left;
+ }
+ .nav-li {
+ float: left;
+ padding-right: 0.7em;
+ }
+ .nav-li a {
+ text-decoration: none;
+ color: white;
+ }
+ footer {
+ background-color: #00704e;
+ }
+ /* regular */
body {
color: black;
background: #ffffff;
@@ -864,23 +982,9 @@ template SiSUcss() {
display: inline;
overflow: auto;
}
- .table-bar {
- float: left;
- overflow: auto;
- width: 100%;
- display: inline;
- }
- .nav-bar {
- width: 15%;
- float: right;
- display: inline;
- transition: all 0.3s ease;
- position: relative;
- padding-bottom: 3em;
- background: #ffffff;
- }
.toc-button {
position: absolute;
+ top: 8px;
width: 2em;
height: 2em;
border-radius: 50%;
@@ -899,7 +1003,7 @@ template SiSUcss() {
}
.prev-next-button {
position: absolute;
- top: 0em;
+ top: 8px;
width: 2em;
height: 2em;
border-radius: 50%;