#+TITLE: sdp output html #+AUTHOR: Ralph Amissah #+EMAIL: ralph.amissah@gmail.com #+STARTUP: indent #+LANGUAGE: en #+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t #+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc #+OPTIONS: author:nil email:nil creator:nil timestamp:nil #+PROPERTY: header-args :padline no :exports code :noweb yes #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport #+FILETAGS: :sdp:rel:output: #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] * output :output: ** text :text: ** html [#A] :html: *** html **** html functions ***** html ***** heading #+name: output_html #+BEGIN_SRC d auto html_heading(O)( auto ref const O obj, ) { string o; o = format(q"¶<br><hr /><br> <div class="substance"> <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label> <h%s class="%s" id="%s"><a name="%s"></a> %s </h%s> </div> ¶", obj.obj_cite_number, obj.obj_cite_number, obj.heading_attrib.lev_int_markup, obj.is_a, obj.obj_cite_number, obj.obj_cite_number, obj.object, obj.heading_attrib.lev_int_markup ); return o; } #+END_SRC ***** para #+name: output_html #+BEGIN_SRC d 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="%s" id="%s"> %s </p> </div> ¶", obj.obj_cite_number, obj.obj_cite_number, obj.is_a, obj.obj_cite_number, obj.object ); return o; } #+END_SRC **** html scroll head & tail #+name: output_html #+BEGIN_SRC d auto scroll_head_html() { string o; o = format(q"¶ <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> Title </title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta name="dc.title" content="Title" /> <meta name="dc.author" content="Author" /> <meta name="dc.publisher" content="SiSU http://www.jus.uio.no/sisu (this copy)" /> <meta name="dc.date" content="year" /> <meta name="dc.date.created" content="year" /> <meta name="dc.date.issued" content="year" /> <meta name="dc.date.available" content="year" /> <meta name="dc.date.valid" content="year" /> <meta name="dc.date.modified" content="year" /> <meta name="dc.language" content="US" /> <meta name="dc.rights" content="Copyright: Copyright (C) year holder /> <meta name="generator" content="sdp [SiSU 7.1.8 of 2016w08/5 (2016-02-26)] (n*x and D)" /> <link rel="generator" href="http://www.sisudoc.org/" /> <link rel="shortcut icon" href="../_sisu/image/rb7.ico" /> <link href="../../_sisu/css/html.css" rel="stylesheet"> <link href="../../../_sisu/css/html.css" rel="stylesheet"> </head> <body lang="en"> <a name="top" id="top"></a> ¶"); return o; } auto scroll_tail_html() { string o; o = format(q"¶ <a name="bottom" id="bottom"></a> <a name="end" id="end"></a> </div> </body> </html> ¶"); return o; } #+END_SRC **** html scroll #+name: output_html #+BEGIN_SRC d void scroll(C)( auto ref const C contents, string[][string] document_section_keys_sequenced, string[string][string] dochead_make, string[string][string] dochead_meta, string fn_src, bool[string] opt_action_bool ) { auto rgx = Rgx(); string[] body_html; string[] doc; foreach (part; document_section_keys_sequenced["scroll"]) { foreach (obj; contents[part]) { if (obj.use == "content") { switch (obj.is_a) { 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_nugget(obj); break; case "group": body_html ~= html_nugget(obj); break; case "block": body_html ~= html_nugget(obj); break; case "quote": body_html ~= html_nugget(obj); break; case "table": body_html ~= html_para(obj); break; case "code": body_html ~= html_nugget(obj); break; case "endnote": body_html ~= html_endnote(obj); break; default: break; } } } } doc = scroll_head_html ~ body_html ~ scroll_tail_html; auto m = matchFirst(fn_src, rgx.src_fn); auto fn = m["fn_base"] ~ ".html"; auto pth_html = "en/html"; auto pth_seg = pth_html ~ "/" ~ m["fn_base"]; auto pth_html_fn = pth_html ~ "/" ~ fn; try { mkdirRecurse(pth_seg); auto f = File(pth_html_fn, "w"); foreach (o; doc) { f.writeln(o); } } catch (ErrnoException ex) { // Handle error } } #+END_SRC *** css :css: #+name: output_html_css #+BEGIN_SRC d auto html_css() { string css; css="/* SiSU css default stylesheet */ body { color: black; background: #ffffff; background-color: #ffffff; } a:link { color: #003399; text-decoration: none; } a:visited { color: #003399; text-decoration: none; } a:hover { color: #000000; background-color: #f9f9aa; } a.lnkocn:link { color: #777777; text-decoration: none; } a:hover img { background-color: #ffffff; } a:active { color: #003399; text-decoration: underline; } div { margin-left: 0; margin-right: 0; } div.p { margin-left: 5%; margin-right: 1%; } #top_band { position: absolute; top: 0; bottom: 80px; width: 100%; } #top_band_search { position: absolute; top: 0px; right: 0px; margin-left: 75%; width: 20%; } #column_left { position: absolute; top: 80px; left: 0; margin-left: 1%; width: 20%; } #column_center { position: absolute; top: 80px; margin-left: 20%; width: 55%; } #column_right { position: absolute; top: 80px; right: 0px; margin-left: 75%; width: 25%; } #pane_major { position: absolute; top: 0px; left: 0; margin-left: 0; width: 80%; } #pane_minor { position: absolute; top: 0px; right: 0px; margin-left: 75%; width: 20%; background-color: #aaaaaa; } .norm, .bold, .verse, .group, .block, .alt { line-height: 133%; margin-left: 0em; margin-right: 2em; margin-top: 12px; margin-bottom: 0px; padding-left: 0em; text-indent: 0em; } p, h0, h1, h2, h3, h4, h5, h6, h7 { display: block; font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman; font-size: 100%; font-weight: normal; line-height: 133%; text-align: justify; margin-left: 0em; margin-right: 2em; text-indent: 0mm; margin-top: 0.8em; margin-bottom: 0.8em; } /* indent */ p.norm { } p.i1 {padding-left: 1em;} p.i2 {padding-left: 2em;} p.i3 {padding-left: 3em;} p.i4 {padding-left: 4em;} p.i5 {padding-left: 5em;} p.i6 {padding-left: 6em;} p.i7 {padding-left: 7em;} p.i8 {padding-left: 8em;} p.i9 {padding-left: 9em;} /* hanging indent */ p.h0i0 { padding-left: 0em; text-indent: 0em; } p.h0i1 { padding-left: 1em; text-indent: -1em; } p.h0i2 { padding-left: 2em; text-indent: -2em; } p.h0i3 { padding-left: 3em; text-indent: -3em; } p.h0i4 { padding-left: 4em; text-indent: -4em; } p.h0i5 { padding-left: 5em; text-indent: -5em; } p.h0i6 { padding-left: 6em; text-indent: -6em; } p.h0i7 { padding-left: 7em; text-indent: -7em; } p.h0i8 { padding-left: 8em; text-indent: -8em; } p.h0i9 { padding-left: 9em; text-indent: -9em; } p.h1i0 { padding-left: 0em; text-indent: 1em; } p.h1i1 { padding-left: 1em; text-indent: 0em; } p.h1i2 { padding-left: 2em; text-indent: -1em; } p.h1i3 { padding-left: 3em; text-indent: -2em; } p.h1i4 { padding-left: 4em; text-indent: -3em; } p.h1i5 { padding-left: 5em; text-indent: -4em; } p.h1i6 { padding-left: 6em; text-indent: -5em; } p.h1i7 { padding-left: 7em; text-indent: -6em; } p.h1i8 { padding-left: 8em; text-indent: -7em; } p.h1i9 { padding-left: 9em; text-indent: -8em; } p.h2i0 { padding-left: 0em; text-indent: 2em; } p.h2i1 { padding-left: 1em; text-indent: 1em; } p.h2i2 { padding-left: 2em; text-indent: 0em; } p.h2i3 { padding-left: 3em; text-indent: -1em; } p.h2i4 { padding-left: 4em; text-indent: -2em; } p.h2i5 { padding-left: 5em; text-indent: -3em; } p.h2i6 { padding-left: 6em; text-indent: -4em; } p.h2i7 { padding-left: 7em; text-indent: -5em; } p.h2i8 { padding-left: 8em; text-indent: -6em; } p.h2i9 { padding-left: 9em; text-indent: -7em; } p.h3i0 { padding-left: 0em; text-indent: 3em; } p.h3i1 { padding-left: 1em; text-indent: 2em; } p.h3i2 { padding-left: 2em; text-indent: 1em; } p.h3i3 { padding-left: 3em; text-indent: 0em; } p.h3i4 { padding-left: 4em; text-indent: -1em; } p.h3i5 { padding-left: 5em; text-indent: -2em; } p.h3i6 { padding-left: 6em; text-indent: -3em; } p.h3i7 { padding-left: 7em; text-indent: -4em; } p.h3i8 { padding-left: 8em; text-indent: -5em; } p.h3i9 { padding-left: 9em; text-indent: -6em; } p.h4i0 { padding-left: 0em; text-indent: 4em; } p.h4i1 { padding-left: 1em; text-indent: 3em; } p.h4i2 { padding-left: 2em; text-indent: 2em; } p.h4i3 { padding-left: 3em; text-indent: 1em; } p.h4i4 { padding-left: 4em; text-indent: 0em; } p.h4i5 { padding-left: 5em; text-indent: -1em; } p.h4i6 { padding-left: 6em; text-indent: -2em; } p.h4i7 { padding-left: 7em; text-indent: -3em; } p.h4i8 { padding-left: 8em; text-indent: -4em; } p.h4i9 { padding-left: 9em; text-indent: -5em; } p.h5i0 { padding-left: 0em; text-indent: 5em; } p.h5i1 { padding-left: 1em; text-indent: 4em; } p.h5i2 { padding-left: 2em; text-indent: 3em; } p.h5i3 { padding-left: 3em; text-indent: 2em; } p.h5i4 { padding-left: 4em; text-indent: 1em; } p.h5i5 { padding-left: 5em; text-indent: 0em; } p.h5i6 { padding-left: 6em; text-indent: -1em; } p.h5i7 { padding-left: 7em; text-indent: -2em; } p.h5i8 { padding-left: 8em; text-indent: -3em; } p.h5i9 { padding-left: 9em; text-indent: -4em; } p.h6i0 { padding-left: 0em; text-indent: 6em; } p.h6i1 { padding-left: 1em; text-indent: 5em; } p.h6i2 { padding-left: 2em; text-indent: 4em; } p.h6i3 { padding-left: 3em; text-indent: 3em; } p.h6i4 { padding-left: 4em; text-indent: 2em; } p.h6i5 { padding-left: 5em; text-indent: 1em; } p.h6i6 { padding-left: 6em; text-indent: 0em; } p.h6i7 { padding-left: 7em; text-indent: -1em; } p.h6i8 { padding-left: 8em; text-indent: -2em; } p.h6i9 { padding-left: 9em; text-indent: -3em; } p.h7i0 { padding-left: 0em; text-indent: 7em; } p.h7i1 { padding-left: 1em; text-indent: 6em; } p.h7i2 { padding-left: 2em; text-indent: 5em; } p.h7i3 { padding-left: 3em; text-indent: 4em; } p.h7i4 { padding-left: 4em; text-indent: 3em; } p.h7i5 { padding-left: 5em; text-indent: 2em; } p.h7i6 { padding-left: 6em; text-indent: 1em; } p.h7i7 { padding-left: 7em; text-indent: 0em; } p.h7i8 { padding-left: 8em; text-indent: -1em; } p.h7i9 { padding-left: 9em; text-indent: -2em; } p.h8i0 { padding-left: 0em; text-indent: 8em; } p.h8i1 { padding-left: 1em; text-indent: 7em; } p.h8i2 { padding-left: 2em; text-indent: 6em; } p.h8i3 { padding-left: 3em; text-indent: 5em; } p.h8i4 { padding-left: 4em; text-indent: 4em; } p.h8i5 { padding-left: 5em; text-indent: 3em; } p.h8i6 { padding-left: 6em; text-indent: 2em; } p.h8i7 { padding-left: 7em; text-indent: 1em; } p.h8i8 { padding-left: 8em; text-indent: 0em; } p.h8i9 { padding-left: 9em; text-indent: -1em; } p.h9i0 { padding-left: 0em; text-indent: 9em; } p.h9i1 { padding-left: 1em; text-indent: 8em; } p.h9i2 { padding-left: 2em; text-indent: 7em; } p.h9i3 { padding-left: 3em; text-indent: 6em; } p.h9i4 { padding-left: 4em; text-indent: 5em; } p.h9i5 { padding-left: 5em; text-indent: 4em; } p.h9i6 { padding-left: 6em; text-indent: 3em; } p.h9i7 { padding-left: 7em; text-indent: 2em; } p.h9i8 { padding-left: 8em; text-indent: 1em; } p.h9i9 { padding-left: 9em; text-indent: 0em; } p.it0 { margin-left: 0em; margin-top: 6px; margin-bottom: 0px; line-height: 100%; } p.it1 { margin-left: 1em; margin-top: 0px; margin-bottom: 0px; line-height: 100%; } p.it2 { margin-left: 2em; margin-top: 0px; margin-bottom: 0px; line-height: 100%; } p.it3 { margin-left: 3em; margin-top: 0px; margin-bottom: 0px; line-height: 100%; } p.it4 { margin-left: 4em; margin-top: 0px; margin-bottom: 0px; line-height: 100%; } p.it5 { margin-left: 5em; margin-top: 0px; margin-bottom: 0px; line-height: 100%; } p.it6 { margin-left: 6em; margin-top: 0px; margin-bottom: 0px; line-height: 100%; } p.it7 { margin-left: 7em; margin-top: 0px; margin-bottom: 0px; line-height: 100%; } p.it8 { margin-left: 8em; margin-top: 0px; margin-bottom: 0px; line-height: 100%; } p.it9 { margin-left: 9em; margin-bottom: 0px; margin-top: 0px; line-height: 100%; } p.block { } p.group { } p.alt { } p.verse { margin-bottom: 6px; } p.code { font-family: inconsolata, andale mono, courier new, courier, monospace; font-size: 90%; text-align: left; background-color: #eeeeee; } p.caption { text-align: left; font-size: 80%; display: inline; } p.endnote { font-size: 96%; line-height: 120%; text-align: left; margin-right: 15mm; } p.endnote_indent { font-size: 96%; line-height: 120%; text-align: left; margin-left: 2em; margin-right: 15mm; } p.center { text-align: center; } p.bold { font-weight: bold; } p.bold_left { font-weight: bold; text-align: left; } p.centerbold { text-align: center; font-weight: bold; } p.em { font-weight: bold; font-style: normal; background: #fff3b6; } p.small { font-size: 80%; margin-top: 0px; margin-bottom: 0px; margin-right: 6px; text-align: left; } .tiny, .tiny_left, .tiny_right, .tiny_center { font-size: 10px; margin-top: 0px; margin-bottom: 0px; color: #777777; margin-right: 6px; text-align: left; } p.tiny { } p.tiny_left { margin-left: 0px; margin-right: 0px; text-align: left; } p.tiny_right { margin-right: 1em; text-align: right; } p.tiny_center { margin-left: 0px; margin-right: 0px; text-align: center; } p.pane, p.pane_title, p.pane_blurb, p.pane_link, p.pane_indent { font-size: 80%; margin-top: 0px; margin-bottom: 0px; margin-left: 2mm; margin-right: 4px; text-align: left; } p.pane { } p.pane_title { font-weight: bold; margin-bottom: 0px; } p.pane_blurb { font-size: 10px; margin-bottom: 0px; } p.pane_link { font-size: 10px; margin-bottom: 0px; margin-left: 4mm; } p.pane_indent { font-size: 10px; margin-bottom: 0px; margin-left: 4mm; } p.concordance_word { line-height: 150%; font-weight: bold; display: inline; margin-top: 4px; margin-bottom: 1px; } p.concordance_count { font-size: 80%; color: #777777; display: inline; margin-left: 0em; } p.concordance_object { font-size: 80%; line-height: 120%; text-align: left; margin-left: 3em; margin-top: 1px; margin-bottom: 3px; } p.book_index_lev1 { line-height: 100%; margin-top: 4px; margin-bottom: 1px; } p.book_index_lev2 { line-height: 100%; text-align: left; margin-left: 3em; margin-top: 1px; margin-bottom: 3px; } p.quickref { font-size: 10px; font-style: italic; margin-top: 0px; margin-bottom: 0px; color: #777777; margin-right: 5px; text-align: left; } p.bigref { font-size: 11px; font-weight: bold; margin-top: 0px; margin-bottom: 0px; color: #777777; margin-right: 5px; text-align: center; } p.letter { font-weight: bold; font-size: 80%; margin-left: 0em; margin-top: 2px; margin-bottom: 2px; margin-right: 6px; text-align: left; color: white; background: #880000; } tt { font-family: inconsolata, andale mono, courier new, courier, monospace; background-color: #eeeeee; } label.ocn { width: 2%; float: right; top: 0; font-size: 10px; margin-top: 0px; margin-bottom: 5px; color: #777777; margin-right: 5px; text-align: right; background-color: #ffffff; } table { } tr { } th,td { vertical-align: top; text-align: left; } th { font-weight: bold; } p.left,th.left,td.left { text-align: left; } p.small_left,th.small_left,td.small_left { text-align: left; font-size: 80%; } p.right,th.right,td.right { text-align: right; } #horizontal_links { background: #eeeeee; margin-left: 5%; margin-right: 5%; } #horizontal { margin: 0; padding: 0 0 0 10px; border-top: 1px solid #000077; border-bottom: 1px solid #000077; } #horizontal li { margin: 0 0 0 0; padding: 0 16px 0 0; display: inline; list-style-type: none; text-align: left; background: none; } #horizontal a { line-height: 12px; margin: 0 0 0 0; text-decoration: none; color: #000077; } #horizontal a.active, #horizontal a:hover { border-bottom: 2px solid #777777; padding-bottom: 2px; color: #000077; } #horizontal a:hover { color: #000077; } #document_versions { position: absolute; top: 10mm; right: 2%; width: 12%; float: right; } #vertical_links { position: absolute; top: 10mm; right: 0px; width: 20%; background: #dddddd; float: right; } #vertical { padding: 0 12px 0px 0px; margin-left: 2%; margin-right: 2%; } #vertical li { display: block; list-style-type: none; } #vertical a { line-height: 12px; text-decoration: none; color: #000077; } #vertical a.active, #vertical a:hover { border-bottom: 2px solid #777777; padding-bottom: 2px; color: #000077; } ul, li { list-style-type: none; list-style: none; padding-left: 20px; display: block; font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman; font-weight: normal; line-height: 150%; text-align: left; text-indent: 0mm; margin-left: 1em; margin-right: 2em; margin-top: 3px; margin-bottom: 3px; } li { background: url(../image_sys/bullet_09.png) no-repeat 0px 6px; } ul { } li.bullet { margin-left: 1em; } li.i1 { margin-left: 2em; } li.i2 { margin-left: 3em; } li.i3 { margin-left: 4em; } li.i4 { margin-left: 5em; } li.i5 { margin-left: 6em; } li.i6 { margin-left: 7em; } li.i7 { margin-left: 8em; } li.i8 { margin-left: 9em; } li.i9 { margin-left: 10em; } li.doc, li.ref, li.refcenter { margin-top: 0px; margin-bottom: 0px; margin-right: 0px; font-size: 8px; font-style: normal; text-align: left; } li.doc { background: url(../image_sys/bullet_09.png) no-repeat 0px 6px; padding-left: 16px; margin-left: 10px; margin-right: 0px; } li.ref { background: none; padding-left: 0; margin-left: 0; color: #777777; } li.refcenter { background: url(../image_sys/bullet_09.png) no-repeat 0px 6px; padding-left: 20px; margin-left: 10%; font-size: 9px; color: #777777; text-align: center; } li.refbold { list-style-type: none; padding-left: 16px; margin-left: 0; margin-right: 10mm; font-weight: bold; } h0, h1, h2, h3, h4, h5, h6, h7 { font-weight: bold; line-height: 120%; text-align: left; margin-top: 20px; margin-bottom: 10px; } h4.norm, h5.norm, h6.norm, h7.norm { margin-top: 10px; margin-bottom: 0px; } h0.center, h1.center, h2.center, h3.center, h4.center, h5.center, h6.center, h7.center { text-align: center; } h0 { font-size: 125%; } h1 { font-size: 120%; } h2 { font-size: 115%; } h3 { font-size: 110%; } h4 { font-size: 105%; } h5 { font-size: 100%; } h6 { font-size: 100%; } h7 { font-size: 100%; } h1.i {margin-left: 2em;} h2.i {margin-left: 3em;} h3.i {margin-left: 4em;} h4.i {margin-left: 5em;} h5.i {margin-left: 6em;} h6.i {margin-left: 7em;} h7.i {margin-left: 8em;} h8.i {margin-left: 9em;} h9.i {margin-left: 10em;} h1.top_band { display: inline; text-align: left; margin-top: 0; margin-left: 4mm; text-indent: 0mm; font-weight: bold; font-size: 120%; } h2.top_band_tiny { font-size: 10px; font-weight: normal; margin-top: 0px; margin-left: 4mm; text-indent: 0mm; margin-bottom: 0px; color: #777777; margin-left: 140px; margin-right: 0px; text-align: left; } p.top_band { display: inline; text-align: left; margin-top: 0; margin-left: 140px; text-indent: 0mm; font-weight: bold; font-size: 120%; } p.top_band_tiny { font-size: 10px; margin-top: 0px; margin-bottom: 0px; color: #777777; margin-left: 140px; margin-right: 0px; text-align: left; } p.top_band_image { float: left; display: inline; text-align: left; margin-top: 0; margin-left: 1mm; text-indent: 0mm; margin-right: 1mm; } .banner, .subbanner { font-weight: bold; text-align: center; margin-left: 10mm; margin-right: 15mm; margin-top: 20px; margin-bottom: 10px; } h0.banner { font-size: 125%; } h1.banner { font-size: 120%; } h1.subbanner { font-size: 115%; } h2.banner { font-size: 110%; } h3.banner { color: #990000; font-size: 105%; } h4.banner { color: #ff0000; font-size: 100%; } h5.banner { } h6.banner { } h7.banner { } .toc { font-weight: normal; margin-top: 6px; margin-bottom: 6px; } h0.toc { margin-left: 1em; font-size: 120%; line-height: 150%; } h1.toc { margin-left: 1em; font-size: 115%; line-height: 150%; } h2.toc { margin-left: 2em; font-size: 110%; line-height: 140%; } h3.toc { margin-left: 3em; font-size: 105%; line-height: 120%; } h4.toc { margin-left: 4em; font-size: 100%; line-height: 120%; } h5.toc { margin-left: 5em; font-size: 95%; line-height: 110%; } h6.toc { margin-left: 6em; font-size: 90%; line-height: 110%; } h7.toc { margin-left: 7em; font-size: 85%; line-height: 100%; } .microtoc { margin-top: 2px; margin-bottom: 2px; } h0.microtoc { margin-left: 0mm; font-size: 120%; } h1.microtoc { margin-left: 0mm; font-size: 115%; } h2.microtoc { margin-left: 5mm; font-size: 110%; } h3.microtoc { margin-left: 10mm; font-size: 105%; } h4.microtoc { margin-left: 15mm; font-weight: normal; font-size: 100%; } h5.microtoc { margin-left: 20mm; font-weight: normal; font-size: 95%; } h6.microtoc { margin-left: 25mm; font-weight: normal; font-size: 90%; } h7.microtoc { margin-left: 30mm; font-weight: normal; font-size: 85%; } .subtoc { margin-right: 34%; font-weight: normal; } h5.subtoc { margin-left: 2em; font-size: 80%; margin-top: 2px; margin-bottom: 2px; } h6.subtoc { margin-left: 3em; font-size: 75%; margin-top: 0px; margin-bottom: 0px; } h7.subtoc { margin-left: 4em; font-size: 70%; margin-top: 0px; margin-bottom: 0px; } div.substance { width: 100%; background-color: #ffffff; } div.ocn { width: 5%; float: right; top: 0; background-color: #ffffff; } div.endnote { width: 95%; background-color: #fffffff; } div.toc { position: absolute; float: left; margin: 0; padding: 0; padding-top: 0.5em; border: 0; width: 13em; background-color: #eeeeee; margin-right:1em; } div.summary { margin: 0; padding: 0; border-left: 13em solid #eeeeee; padding-left: 1em; background-color: #eeeeee; } div.content, div.main_column { margin: 0; padding: 0; border-left: 13em solid #ffffff; padding-left: 1em; padding-right: 1em; } div.content0, div.main_column0 { margin: 0; padding: 0; border-left: 0% solid #ffffff; padding-left: 5%; } div.scroll { margin: 0; padding: 0; padding-left: 1em; padding-right: 1em; } div.content:after { content:' '; clear:both; display:block; height:0; overflow:hidden } div.footer { clear:left; padding: 0.5em; font-size: 80%; margin: 0; } div.toc ul { list-style: none; padding: 0; margin: 0; } div.toc li ul a, li ul span.currentlink { font-weight: normal; font-size: 90%; padding-left: 2em; background-color: #eeeeee; } div.toc a, span.currentlink{ display:block; text-decoration: none; padding-left: 0.5em; color: #0000aa; } hr { width: 90%; } span.currentlink { text-decoration: none; background-color: #aaaaf9; } div.toc a:visited { color: #0000aa; } div.toc a:hover { color: #000000; background-color: #f9f9aa; } .minitoc { font-weight: normal; margin-top: 2px; margin-bottom: 2px; } h1.minitoc, h2.minitoc, h3.minitoc { margin-left: 0em; font-weight: bold; text-align: left; font-size: 90%; margin-top: 4px; margin-bottom: 4px; } h4.minitoc { margin-left: 0em; font-size: 90%; } h5.minitoc { margin-left: 1em; font-size: 85%; } h6.minitoc { margin-left: 2em; font-size: 85%; } h7.minitoc { margin-left: 3em; font-size: 80%; } h0.minitoc { margin-left: 0em; font-size: 90%; } h0.c, h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, h7.c, p.c { text-align: center } h1.red, h2.red, h3.red, h4.red, h5.red, h6.red, h7.red { text-align: center; color: #ff0000; margin-left: 5mm; text-indent: 5mm; margin-top: 30px; margin-bottom: 20px; margin-right: 15mm; } h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby, h7.ruby { text-align: center; color: #990000; margin-left: 5mm; text-indent: 5mm; margin-top: 30px; margin-bottom: 20px; margin-right: 15mm; }"; return css; } auto css_write() { auto pth_css= "_sisu/css"; auto pth_css_fn= pth_css ~ "/html.css"; try { mkdirRecurse(pth_css); auto f = File(pth_css_fn, "w"); f.writeln(html_css); } catch (ErrnoException ex) { // Handle error } } #+END_SRC ** epub [#B] :epub: ** pdf :pdf: ** odt :odt: ** sqlite [#B] :sqlite: ** pgsql :pgsql: * tangles :tangle: ** code structure: :output.d: **** hub #+BEGIN_SRC d :tangle ../src/sdp/output_hub.d /++ output hub<BR> check & generate output types requested +/ template SiSUoutputHub() { struct SDPoutput { void hub(S)( auto ref const S contents, string[][string] document_section_keys_sequenced, string[] html_segnames, string[string][string] dochead_make, string[string][string] dochead_meta, string fn_src, bool[string] opt_action_bool ) { auto rgx = Rgx(); if (opt_action_bool["source"]) { writeln("sisupod source"); } if (opt_action_bool["sisupod"]) { writeln("sisupod source"); } if (opt_action_bool["text"]) { writeln("text processing"); } if (opt_action_bool["html"]) { mixin SiSUoutputHTML; auto html=SDPoutputHTML(); html.css_write; html.scroll( contents, document_section_keys_sequenced, dochead_make, dochead_meta, fn_src, opt_action_bool ); } if (opt_action_bool["epub"]) { writeln("epub processing"); } if (opt_action_bool["pdf"]) { writeln("pdf processing"); } if (opt_action_bool["odt"]) { writeln("odt processing"); } if (opt_action_bool["sqlite"]) { writeln("sqlite processing"); } if (opt_action_bool["postgresql"]) { writeln("pgsql processing"); } } } } #+END_SRC **** html #+BEGIN_SRC d :tangle ../src/sdp/output_html.d template SiSUoutputHTML() { struct SDPoutputHTML { <<output_html>> <<output_html_css>> } } #+END_SRC *** notes 0.6.6 using nested structs hub and outputs within it e.g. html 0.6.5 dmd had problems compiling with hub and outputs such as html as separate structs see comment * +other+ ** example head <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> Democratizing Innovation </title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta name="dc.title" content="Democratizing Innovation" /> <meta name="dc.author" content="Eric von Hippel" /> <meta name="dc.publisher" content="SiSU http://www.jus.uio.no/sisu (this copy)" /> <meta name="dc.date" content="2005" /> <meta name="dc.date.created" content="2005" /> <meta name="dc.date.issued" content="2005" /> <meta name="dc.date.available" content="2005" /> <meta name="dc.date.valid" content="2005" /> <meta name="dc.date.modified" content="2005" /> <meta name="dc.language" content="US" /> <meta name="dc.rights" content="Copyright: Copyright (C) 2005 Eric von Hippel. Exclusive rights to publish and sell this book in print form in English are licensed to The MIT Press. All other rights are reserved by the author. An electronic version of this book is available under a Creative Commons license. \\ License: Creative Commons US Attribution-NonCommercial-NoDerivs license 2.0. http://creativecommons.org/licenses/by-nc-nd/2.0/legalcode Some Rights Reserved. You are free to copy, distribute, display and perform the work, under the following conditions: Attribution, you must give the original author credit; you may not use this work for commercial purposes; No Derivative Works, you may not alter, transform, or build-upon this work. For reuse or distribution you must make clear to others the license terms of this work. Any conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above." /> <meta name="generator" content="SiSU 7.1.8 of 2016w08/5 (2016-02-26) (n*x and Ruby!)" /> <link rel="generator" href="http://www.sisudoc.org/" /> <link rel="shortcut icon" href="../_sisu/image/rb7.ico" /> <link href="../../_sisu/css/html.css" rel="stylesheet"> <link href="../../../_sisu/css/html.css" rel="stylesheet"> </head> <body lang="en"> <a name="top" id="top"></a> <a name="bottom" id="bottom"></a> <a name="end" id="end"></a> </div> </body> </html>