diff options
| -rw-r--r-- | org/doc_reform.org | 2 | ||||
| -rw-r--r-- | org/output_xmls.org | 302 | ||||
| -rw-r--r-- | src/doc_reform/output/epub3.d | 20 | ||||
| -rw-r--r-- | src/doc_reform/output/html.d | 12 | ||||
| -rw-r--r-- | src/doc_reform/output/xmls.d | 152 | ||||
| -rw-r--r-- | views/version.txt | 2 | 
6 files changed, 284 insertions, 206 deletions
| diff --git a/org/doc_reform.org b/org/doc_reform.org index 6b2f87c..55bd41d 100644 --- a/org/doc_reform.org +++ b/org/doc_reform.org @@ -26,7 +26,7 @@ struct Version {    int minor;    int patch;  } -enum ver = Version(0, 4, 1); +enum _ver = Version(0, 4, 2);  #+END_SRC  ** compilation restrictions (supported compilers) diff --git a/org/output_xmls.org b/org/output_xmls.org index 29b999b..b9302bd 100644 --- a/org/output_xmls.org +++ b/org/output_xmls.org @@ -91,20 +91,13 @@ string div_delimit(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string special_characters(O)( -  const  O         obj, -  string           _txt -){ +string special_characters_text(string _txt){    _txt = _txt      .replaceAll(rgx.xhtml_ampersand,    "&")      .replaceAll(rgx.xhtml_quotation,    """)      .replaceAll(rgx.xhtml_less_than,    "<")      .replaceAll(rgx.xhtml_greater_than, ">")      .replaceAll(rgx.nbsp_char,          " "); -  if (!(obj.metainfo.is_a == "code")) { -    _txt = (_txt) -      .replaceAll(rgx.xhtml_line_break,   "<br />"); -  }    return _txt;  }  #+END_SRC @@ -113,13 +106,14 @@ string special_characters(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string special_characters_text(string _txt){ -  _txt = _txt -    .replaceAll(rgx.xhtml_ampersand,    "&") -    .replaceAll(rgx.xhtml_quotation,    """) -    .replaceAll(rgx.xhtml_less_than,    "<") -    .replaceAll(rgx.xhtml_greater_than, ">") -    .replaceAll(rgx.nbsp_char,          " "); +string special_characters(O)( +  const  O         obj, +){ +  string _txt = special_characters_text(obj.text); +  if (!(obj.metainfo.is_a == "code")) { +    _txt = (_txt) +      .replaceAll(rgx.xhtml_line_break,   "<br />"); +  }    return _txt;  }  #+END_SRC @@ -170,19 +164,7 @@ string _xhtml_anchor_tags(O)(O obj) {  auto header_metadata(M)(    M  doc_matters,  ) { -  string _title="Title"; -  string _author="Author"; -  string _publisher="Publisher"; -  string _date="Date"; -  string _date_created="Date"; -  string _date_issued="Date"; -  string _date_available="Date"; -  string _date_valid="Date"; -  string _date_modified="Date"; -  string _language="en"; -  string _rights="Copyright: Copyright (C) year holder"; -  string _generator="doc_reform [DocReform 7.1.8 of 2016w08/5 (2016-02-26)] (n*x and D)"; -  string _generator_home="http://www.sisudoc.org"; +  string _publisher="Publisher"; // TODO    string o;    o = format(q"¶<!-- DocReform header metadata -->  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> @@ -200,19 +182,19 @@ auto header_metadata(M)(  <meta name="generator" content="%s" />  <link rel="generator" href="%s" />  <!-- DocReform header metadata -->¶", -  _title, -  _author, -  _publisher, -  _date, -  _date_created, -  _date_issued, -  _date_available, -  _date_valid, -  _date_modified, -  _language, -  _rights, -  _generator, -  _generator_home, +    doc_matters.conf_make_meta.meta.title_full, +    doc_matters.conf_make_meta.meta.creator_author, +    _publisher, +    doc_matters.conf_make_meta.meta.date_published, +    doc_matters.conf_make_meta.meta.date_created, +    doc_matters.conf_make_meta.meta.date_issued, +    doc_matters.conf_make_meta.meta.date_available, +    doc_matters.conf_make_meta.meta.date_valid, +    doc_matters.conf_make_meta.meta.date_modified, +    doc_matters.src.language, +    doc_matters.conf_make_meta.meta.rights_copyright, +    doc_matters.generator_program.name_and_version, +    doc_matters.generator_program.url_home,    );    return o;  } @@ -242,7 +224,7 @@ auto site_info_button(M)(    o = format(q"¶<div class="flex-menu-option">        %s      </div>¶", -  _locations, +    _locations,    );    return o;  } @@ -385,18 +367,18 @@ auto epub3_seg_head(M)(    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />    <meta name="dc.title" content="%s" />    <meta name="dc.author" content="%s" /> -  <meta name="dc.publisher" content="DocReform 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="doc_reform [DocReform 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" /> +  <meta name="dc.publisher" content="FIX" /> +  <meta name="dc.date" content="%s" /> +  <meta name="dc.date.created" content="%s" /> +  <meta name="dc.date.issued" content="%s" /> +  <meta name="dc.date.available" content="%s" /> +  <meta name="dc.date.valid" content="%s" /> +  <meta name="dc.date.modified" content="%s" /> +  <meta name="dc.language" content="%s" /> +  <meta name="dc.rights" content="%s" /> +  <meta name="generator" content="%s" /> +  <link rel="generator" href="%s" /> +  <link rel="shortcut icon" href="../_sisu/image/d.ico" />    <link rel="stylesheet" href="css/epub.css" type="text/css" id="main-css" />  </head>  <body lang="%s"> @@ -408,6 +390,16 @@ auto epub3_seg_head(M)(      doc_matters.conf_make_meta.meta.title_full,      (doc_matters.conf_make_meta.meta.creator_author.empty) ? ""        : ", " ~ doc_matters.conf_make_meta.meta.creator_author, +    doc_matters.conf_make_meta.meta.date_published, +    doc_matters.conf_make_meta.meta.date_created, +    doc_matters.conf_make_meta.meta.date_issued, +    doc_matters.conf_make_meta.meta.date_available, +    doc_matters.conf_make_meta.meta.date_valid, +    doc_matters.conf_make_meta.meta.date_modified, +    doc_matters.src.language, +    doc_matters.conf_make_meta.meta.rights_copyright, +    doc_matters.generator_program.name_and_version, +    doc_matters.generator_program.url_home,      doc_matters.src.language,    );    return o; @@ -786,8 +778,7 @@ auto nav_pre_next_svg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto heading(M,O)( -               M    doc_matters, +auto heading(O)(    const        O    obj,    string            _txt,    string            _xml_type = "html", @@ -856,7 +847,7 @@ auto heading_scroll(M,O)(  ) {    auto tags = _xhtml_anchor_tags(obj);    _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -  string o = heading(doc_matters, obj, _txt); +  string o = heading(obj, _txt);    return o;  }  #+END_SRC @@ -875,7 +866,7 @@ auto heading_seg(M,O)(    auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);    _txt = t[0];    string[] _endnotes = t[1]; -  string o = heading(doc_matters, obj, _txt, _xml_type); +  string o = heading(obj, _txt, _xml_type);    auto u = tuple(      o,      _endnotes, @@ -889,8 +880,7 @@ auto heading_seg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto para(M,O)( -               M    doc_matters, +auto para(O)(    const        O    obj,    string            _txt,  ) { @@ -945,7 +935,7 @@ auto para_scroll(M,O)(  ) {    auto tags = _xhtml_anchor_tags(obj);    _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -  string o = para(doc_matters, obj, _txt); +  string o = para(obj, _txt);    return o;  }  #+END_SRC @@ -964,7 +954,7 @@ auto para_seg(M,O)(    auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; -  string o = para(doc_matters, obj, _txt); +  string o = para(obj, _txt);    auto u = tuple(      o,      _endnotes, @@ -978,8 +968,7 @@ auto para_seg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto quote(M,O)( -               M  doc_matters, +auto quote(O)(    const        O  obj,    string          _txt,  ) { @@ -1024,7 +1013,7 @@ auto quote_scroll(M,O)(  ) {    auto tags = _xhtml_anchor_tags(obj);    _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -  string o = quote(doc_matters, obj, _txt); +  string o = quote(obj, _txt);    return o;  }  #+END_SRC @@ -1043,7 +1032,7 @@ auto quote_seg(M,O)(    auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; -  string o = quote(doc_matters, obj, _txt); +  string o = quote(obj, _txt);    auto u = tuple(      o,      _endnotes, @@ -1057,8 +1046,7 @@ auto quote_seg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto group(M,O)( -               M    doc_matters, +auto group(O)(    const        O    obj,    string            _txt,  ) { @@ -1104,7 +1092,7 @@ auto group_scroll(M,O)(  ) {    auto tags = _xhtml_anchor_tags(obj);    _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -  string o = group(doc_matters, obj, _txt); +  string o = group(obj, _txt);    return o;  }  #+END_SRC @@ -1123,7 +1111,7 @@ auto group_seg(M,O)(    auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; -  string o = group(doc_matters, obj, _txt); +  string o = group(obj, _txt);    auto u = tuple(      o,      _endnotes, @@ -1137,8 +1125,7 @@ auto group_seg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto block(M,O)( -               M    doc_matters, +auto block(O)(    const        O    obj,    string            _txt,  ) { @@ -1180,7 +1167,7 @@ auto block_scroll(M,O)(  ) {    auto tags = _xhtml_anchor_tags(obj);    _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -  string o = block(doc_matters, obj, _txt); +  string o = block(obj, _txt);    return o;  }  #+END_SRC @@ -1199,7 +1186,7 @@ auto block_seg(M,O)(    auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; -  string o = block(doc_matters, obj, _txt); +  string o = block(obj, _txt);    auto u = tuple(      o,      _endnotes, @@ -1213,8 +1200,7 @@ auto block_seg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto verse(M,O)( -               M    doc_matters, +auto verse(O)(    const        O    obj,    string            _txt,  ) { @@ -1256,7 +1242,7 @@ auto verse_scroll(M,O)(  ) {    auto tags = _xhtml_anchor_tags(obj);    _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -  string o = verse(doc_matters, obj, _txt); +  string o = verse(obj, _txt);    return o;  }  #+END_SRC @@ -1275,7 +1261,7 @@ auto verse_seg(M,O)(    auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; -  string o = verse(doc_matters, obj, _txt); +  string o = verse(obj, _txt);    auto u = tuple(      o,      _endnotes, @@ -1288,8 +1274,7 @@ auto verse_seg(M,O)(  #+name: xhtml_format_objects_code  #+BEGIN_SRC d -auto code(M,O)( -               M    doc_matters, +auto code(O)(    const        O    obj,    string            _txt,  ) { @@ -1330,8 +1315,7 @@ align="left|right|center"  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto tablarize(M,O)( -               M    doc_matters, +auto tablarize(O)(    const        O    obj,    string            _txt,  ) { @@ -1370,14 +1354,13 @@ auto tablarize(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto table(M,O)( -               M    doc_matters, +auto table(O)(    const        O    obj,    string            _txt,  ) {    auto tags = _xhtml_anchor_tags(obj);    _txt = font_face(_txt); -  auto t = tablarize(doc_matters, obj, _txt); +  auto t = tablarize(obj, _txt);    _txt = t[0];    string _note = t[1];    string o; @@ -1406,8 +1389,7 @@ auto table(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto endnote(M,O)( -               M    doc_matters, +auto endnote(O)(    const        O    obj,    string            _txt,  ) { @@ -1456,11 +1438,23 @@ void scroll(D,M)(    string suffix = ".html";    string previous_part = "";    string delimit = ""; +#+END_SRC + +**** the loops & outer switch (sections & objects) format output + +#+name: output_html_scroll +#+BEGIN_SRC d    foreach (part; doc_matters.xml.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); +      string _txt = xhtml_format.special_characters(obj);        switch (obj.metainfo.is_of_part) { +#+END_SRC + +***** frontmatter + +#+name: output_html_scroll +#+BEGIN_SRC d        case "frontmatter":              assert(part == "head" || "toc");          switch (obj.metainfo.is_of_type) {          case "para": @@ -1491,6 +1485,12 @@ void scroll(D,M)(            break;          }          break; +#+END_SRC + +***** body + +#+name: output_html_scroll +#+BEGIN_SRC d        case "body":                     assert(part == "body" || "head");          switch (obj.metainfo.is_of_type) {          case "para": @@ -1528,10 +1528,10 @@ void scroll(D,M)(              doc_html ~= xhtml_format.verse_scroll(doc_matters, obj, _txt, suffix);              break;            case "code": -            doc_html ~= xhtml_format.code(doc_matters, obj, _txt); +            doc_html ~= xhtml_format.code(obj, _txt);              break;            case "table": -            doc_html ~= xhtml_format.table(doc_matters, obj, _txt); +            doc_html ~= xhtml_format.table(obj, _txt);              break;            default:              { /+ debug +/ @@ -1553,6 +1553,12 @@ void scroll(D,M)(            break;          }          break; +#+END_SRC + +***** backmatter + +#+name: output_html_scroll +#+BEGIN_SRC d        case "backmatter":          assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");          switch (obj.metainfo.is_of_type) { @@ -1608,6 +1614,12 @@ void scroll(D,M)(            }          }          break; +#+END_SRC + +***** closings & post loop + +#+name: output_html_scroll +#+BEGIN_SRC d        }      }    } @@ -1666,10 +1678,22 @@ void seg(D,M)(    string suffix = ".html";    string previous_part = "";    string delimit = ""; +#+END_SRC + +**** ↻ the loop (sections & objects) format output + +#+name: output_html_seg +#+BEGIN_SRC d    foreach (part; doc_matters.xml.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); +      string _txt = xhtml_format.special_characters(obj); +#+END_SRC + +***** all headings + +#+name: output_html_seg +#+BEGIN_SRC d        if (obj.metainfo.is_a == "heading") {          assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");          switch (obj.metainfo.heading_lev_markup) { @@ -1737,9 +1761,21 @@ void seg(D,M)(            }            break;          } +#+END_SRC + +***** non-heading + +#+name: output_html_seg +#+BEGIN_SRC d        } else {          assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");          switch (obj.metainfo.is_of_part) { +#+END_SRC + +****** frontmatter + +#+name: output_html_seg +#+BEGIN_SRC d          case "frontmatter":             assert(part == "head" || "toc");            switch (obj.metainfo.is_of_type) {            case "para": @@ -1768,6 +1804,12 @@ void seg(D,M)(              break;            }            break; +#+END_SRC + +****** body + +#+name: output_html_seg +#+BEGIN_SRC d          case "body":                    assert(part == "body");            switch (obj.metainfo.is_of_type) {            case "para": @@ -1812,10 +1854,10 @@ void seg(D,M)(                doc_html_endnotes[segment_filename] ~= t[1];                break;              case "code": -              doc_html[segment_filename] ~= xhtml_format.code(doc_matters, obj, _txt); +              doc_html[segment_filename] ~= xhtml_format.code(obj, _txt);                break;              case "table": -              doc_html[segment_filename] ~= xhtml_format.table(doc_matters, obj, _txt); +              doc_html[segment_filename] ~= xhtml_format.table(obj, _txt);                doc_html_endnotes[segment_filename] ~= "";                break;              default: @@ -1838,6 +1880,12 @@ void seg(D,M)(              break;            }            break; +#+END_SRC + +****** backmatter + +#+name: output_html_seg +#+BEGIN_SRC d          case "backmatter":            assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");            switch (obj.metainfo.is_of_type) { @@ -1898,6 +1946,12 @@ void seg(D,M)(            }            break;          } +#+END_SRC + +***** closings & post loop + +#+name: output_html_seg +#+BEGIN_SRC d        }      }    } @@ -2081,7 +2135,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">  string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {    auto xhtml_format = outputXHTMLs();    auto pth_epub3 = DocReformPathsEPUB!()(doc_matters.output_path, doc_matters.src.language); -  string uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters! +  string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters!    string content = format(q"¶  <?xml version='1.0' encoding='utf-8'?>  <package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="EPB-UUID">    <metadata @@ -2110,7 +2164,7 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {      <!-- nav epub3 navigation -->        <item id="nav" href="toc_nav.xhtml" media-type="application/xhtml+xml" properties="nav" />  ¶", -    uuid, +    _uuid,      xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_full),      xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_main),      (doc_matters.conf_make_meta.meta.title_sub.empty) @@ -2124,9 +2178,9 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {        ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.date_published),      (doc_matters.conf_make_meta.meta.rights_copyright.empty)        ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.rights_copyright), -    uuid, -    uuid, -    uuid, +    _uuid, +    _uuid, +    _uuid,      (pth_epub3.fn_oebps_css(doc_matters.src.filename)).chompPrefix("OEBPS/"),    );    content ~= "    " ~ "<!-- Content Documents -->" ~ "\n  "; @@ -2274,7 +2328,7 @@ string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) {  #+BEGIN_SRC d  string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {    int counter = 0; -  string uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere +  string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere    auto markup = InlineMarkup();    auto rgx = Rgx();    enum DomTags { none, open, close, close_and_open, open_still, } @@ -2301,7 +2355,7 @@ string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {      doc_matters.conf_make_meta.meta.title_full,                          // title      (doc_matters.conf_make_meta.meta.creator_author.empty) ? ""        : " by " ~ doc_matters.conf_make_meta.meta.creator_author,         // author -    uuid,                                                                // uuid +    _uuid,                                                                // uuid      "3",                                                                 // content depth      doc_matters.conf_make_meta.meta.title_full,                          // title      (doc_matters.conf_make_meta.meta.creator_author.empty) ? "" @@ -2379,9 +2433,21 @@ void outputEPub3(D,I)(    string[string] oepbs_content_parts;    string suffix = ".xhtml";    string[] doc_parts_; +#+END_SRC + +**** ↻ the loop (sections & objects) format output + +#+name: output_epub3_xhtml_seg +#+BEGIN_SRC d    foreach (part; doc_matters.xml.keys_seq.seg) {      foreach (obj; doc_abstraction[part]) { -      string _txt = xhtml_format.special_characters(obj, obj.text); +      string _txt = xhtml_format.special_characters(obj); +#+END_SRC + +***** all headings + +#+name: output_epub3_xhtml_seg +#+BEGIN_SRC d        if (obj.metainfo.is_a == "heading") {          assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");          switch (obj.metainfo.heading_lev_markup) { @@ -2445,9 +2511,21 @@ void outputEPub3(D,I)(            }            break;          } +#+END_SRC + +***** non-heading + +#+name: output_epub3_xhtml_seg +#+BEGIN_SRC d        } else {          assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");          switch (obj.metainfo.is_of_part) { +#+END_SRC + +****** frontmatter + +#+name: output_epub3_xhtml_seg +#+BEGIN_SRC d          case "frontmatter":             assert(part == "head" || "toc");            switch (obj.metainfo.is_of_type) {            case "para": @@ -2477,6 +2555,12 @@ void outputEPub3(D,I)(              break;            }            break; +#+END_SRC + +****** body + +#+name: output_epub3_xhtml_seg +#+BEGIN_SRC d          case "body":                    assert(part == "body");            switch (obj.metainfo.is_of_type) {            case "para": @@ -2521,10 +2605,10 @@ void outputEPub3(D,I)(                doc_epub3_endnotes[segment_filename] ~= t[1];                break;              case "code": -              doc_epub3[segment_filename] ~= xhtml_format.code(doc_matters, obj, _txt); +              doc_epub3[segment_filename] ~= xhtml_format.code(obj, _txt);                break;              case "table": -              doc_epub3[segment_filename] ~= xhtml_format.table(doc_matters, obj, _txt); +              doc_epub3[segment_filename] ~= xhtml_format.table(obj, _txt);                doc_epub3_endnotes[segment_filename] ~= "";                break;              default: @@ -2547,6 +2631,12 @@ void outputEPub3(D,I)(              break;            }            break; +#+END_SRC + +****** backmatter + +#+name: output_epub3_xhtml_seg +#+BEGIN_SRC d          case "backmatter":            assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");            switch (obj.metainfo.is_of_type) { @@ -2652,6 +2742,12 @@ void outputEPub3(D,I)(              obj.metainfo.object_number,            );          } +#+END_SRC + +***** closings & post loop + +#+name: output_epub3_xhtml_seg +#+BEGIN_SRC d        }      }    } diff --git a/src/doc_reform/output/epub3.d b/src/doc_reform/output/epub3.d index 4d86036..026a2b5 100644 --- a/src/doc_reform/output/epub3.d +++ b/src/doc_reform/output/epub3.d @@ -32,7 +32,7 @@ template outputEPub3() {    string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {      auto xhtml_format = outputXHTMLs();      auto pth_epub3 = DocReformPathsEPUB!()(doc_matters.output_path, doc_matters.src.language); -    string uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters! +    string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters!      string content = format(q"¶  <?xml version='1.0' encoding='utf-8'?>    <package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="EPB-UUID">      <metadata @@ -61,7 +61,7 @@ template outputEPub3() {        <!-- nav epub3 navigation -->          <item id="nav" href="toc_nav.xhtml" media-type="application/xhtml+xml" properties="nav" />    ¶", -      uuid, +      _uuid,        xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_full),        xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_main),        (doc_matters.conf_make_meta.meta.title_sub.empty) @@ -75,9 +75,9 @@ template outputEPub3() {          ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.date_published),        (doc_matters.conf_make_meta.meta.rights_copyright.empty)          ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.rights_copyright), -      uuid, -      uuid, -      uuid, +      _uuid, +      _uuid, +      _uuid,        (pth_epub3.fn_oebps_css(doc_matters.src.filename)).chompPrefix("OEBPS/"),      );      content ~= "    " ~ "<!-- Content Documents -->" ~ "\n  "; @@ -208,7 +208,7 @@ template outputEPub3() {    }    string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {      int counter = 0; -    string uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere +    string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere      auto markup = InlineMarkup();      auto rgx = Rgx();      enum DomTags { none, open, close, close_and_open, open_still, } @@ -235,7 +235,7 @@ template outputEPub3() {        doc_matters.conf_make_meta.meta.title_full,                          // title        (doc_matters.conf_make_meta.meta.creator_author.empty) ? ""          : " by " ~ doc_matters.conf_make_meta.meta.creator_author,         // author -      uuid,                                                                // uuid +      _uuid,                                                                // uuid        "3",                                                                 // content depth        doc_matters.conf_make_meta.meta.title_full,                          // title        (doc_matters.conf_make_meta.meta.creator_author.empty) ? "" @@ -309,7 +309,7 @@ template outputEPub3() {      string[] doc_parts_;      foreach (part; doc_matters.xml.keys_seq.seg) {        foreach (obj; doc_abstraction[part]) { -        string _txt = xhtml_format.special_characters(obj, obj.text); +        string _txt = xhtml_format.special_characters(obj);          if (obj.metainfo.is_a == "heading") {            assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");            switch (obj.metainfo.heading_lev_markup) { @@ -449,10 +449,10 @@ template outputEPub3() {                  doc_epub3_endnotes[segment_filename] ~= t[1];                  break;                case "code": -                doc_epub3[segment_filename] ~= xhtml_format.code(doc_matters, obj, _txt); +                doc_epub3[segment_filename] ~= xhtml_format.code(obj, _txt);                  break;                case "table": -                doc_epub3[segment_filename] ~= xhtml_format.table(doc_matters, obj, _txt); +                doc_epub3[segment_filename] ~= xhtml_format.table(obj, _txt);                  doc_epub3_endnotes[segment_filename] ~= "";                  break;                default: diff --git a/src/doc_reform/output/html.d b/src/doc_reform/output/html.d index 63a5dc2..97ba0ce 100644 --- a/src/doc_reform/output/html.d +++ b/src/doc_reform/output/html.d @@ -27,7 +27,7 @@ template outputHTML() {      foreach (part; doc_matters.xml.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); +        string _txt = xhtml_format.special_characters(obj);          switch (obj.metainfo.is_of_part) {          case "frontmatter":              assert(part == "head" || "toc");            switch (obj.metainfo.is_of_type) { @@ -96,10 +96,10 @@ template outputHTML() {                doc_html ~= xhtml_format.verse_scroll(doc_matters, obj, _txt, suffix);                break;              case "code": -              doc_html ~= xhtml_format.code(doc_matters, obj, _txt); +              doc_html ~= xhtml_format.code(obj, _txt);                break;              case "table": -              doc_html ~= xhtml_format.table(doc_matters, obj, _txt); +              doc_html ~= xhtml_format.table(obj, _txt);                break;              default:                { /+ debug +/ @@ -224,7 +224,7 @@ template outputHTML() {      foreach (part; doc_matters.xml.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); +        string _txt = xhtml_format.special_characters(obj);          if (obj.metainfo.is_a == "heading") {            assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");            switch (obj.metainfo.heading_lev_markup) { @@ -367,10 +367,10 @@ template outputHTML() {                  doc_html_endnotes[segment_filename] ~= t[1];                  break;                case "code": -                doc_html[segment_filename] ~= xhtml_format.code(doc_matters, obj, _txt); +                doc_html[segment_filename] ~= xhtml_format.code(obj, _txt);                  break;                case "table": -                doc_html[segment_filename] ~= xhtml_format.table(doc_matters, obj, _txt); +                doc_html[segment_filename] ~= xhtml_format.table(obj, _txt);                  doc_html_endnotes[segment_filename] ~= "";                  break;                default: diff --git a/src/doc_reform/output/xmls.d b/src/doc_reform/output/xmls.d index ef35e10..58cfb4e 100644 --- a/src/doc_reform/output/xmls.d +++ b/src/doc_reform/output/xmls.d @@ -44,31 +44,25 @@ template outputXHTMLs() {        // you also need to close the last div, introduce a footer?        return delimit;      } -    string special_characters(O)( -      const  O         obj, -      string           _txt -    ){ +    string special_characters_text(string _txt){        _txt = _txt          .replaceAll(rgx.xhtml_ampersand,    "&")          .replaceAll(rgx.xhtml_quotation,    """)          .replaceAll(rgx.xhtml_less_than,    "<")          .replaceAll(rgx.xhtml_greater_than, ">")          .replaceAll(rgx.nbsp_char,          " "); +      return _txt; +    } +    string special_characters(O)( +      const  O         obj, +    ){ +      string _txt = special_characters_text(obj.text);        if (!(obj.metainfo.is_a == "code")) {          _txt = (_txt)            .replaceAll(rgx.xhtml_line_break,   "<br />");        }        return _txt;      } -    string special_characters_text(string _txt){ -      _txt = _txt -        .replaceAll(rgx.xhtml_ampersand,    "&") -        .replaceAll(rgx.xhtml_quotation,    """) -        .replaceAll(rgx.xhtml_less_than,    "<") -        .replaceAll(rgx.xhtml_greater_than, ">") -        .replaceAll(rgx.nbsp_char,          " "); -      return _txt; -    }      string font_face(string _txt){        _txt = _txt          .replaceAll(rgx.inline_emphasis,    ("<em>$1</em>")) @@ -98,19 +92,7 @@ template outputXHTMLs() {      auto header_metadata(M)(        M  doc_matters,      ) { -      string _title="Title"; -      string _author="Author"; -      string _publisher="Publisher"; -      string _date="Date"; -      string _date_created="Date"; -      string _date_issued="Date"; -      string _date_available="Date"; -      string _date_valid="Date"; -      string _date_modified="Date"; -      string _language="en"; -      string _rights="Copyright: Copyright (C) year holder"; -      string _generator="doc_reform [DocReform 7.1.8 of 2016w08/5 (2016-02-26)] (n*x and D)"; -      string _generator_home="http://www.sisudoc.org"; +      string _publisher="Publisher"; // TODO        string o;        o = format(q"¶<!-- DocReform header metadata -->      <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> @@ -128,19 +110,19 @@ template outputXHTMLs() {      <meta name="generator" content="%s" />      <link rel="generator" href="%s" />      <!-- DocReform header metadata -->¶", -      _title, -      _author, -      _publisher, -      _date, -      _date_created, -      _date_issued, -      _date_available, -      _date_valid, -      _date_modified, -      _language, -      _rights, -      _generator, -      _generator_home, +        doc_matters.conf_make_meta.meta.title_full, +        doc_matters.conf_make_meta.meta.creator_author, +        _publisher, +        doc_matters.conf_make_meta.meta.date_published, +        doc_matters.conf_make_meta.meta.date_created, +        doc_matters.conf_make_meta.meta.date_issued, +        doc_matters.conf_make_meta.meta.date_available, +        doc_matters.conf_make_meta.meta.date_valid, +        doc_matters.conf_make_meta.meta.date_modified, +        doc_matters.src.language, +        doc_matters.conf_make_meta.meta.rights_copyright, +        doc_matters.generator_program.name_and_version, +        doc_matters.generator_program.url_home,        );        return o;      } @@ -164,7 +146,7 @@ template outputXHTMLs() {        o = format(q"¶<div class="flex-menu-option">            %s          </div>¶", -      _locations, +        _locations,        );        return o;      } @@ -289,18 +271,18 @@ template outputXHTMLs() {        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />        <meta name="dc.title" content="%s" />        <meta name="dc.author" content="%s" /> -      <meta name="dc.publisher" content="DocReform 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="doc_reform [DocReform 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" /> +      <meta name="dc.publisher" content="FIX" /> +      <meta name="dc.date" content="%s" /> +      <meta name="dc.date.created" content="%s" /> +      <meta name="dc.date.issued" content="%s" /> +      <meta name="dc.date.available" content="%s" /> +      <meta name="dc.date.valid" content="%s" /> +      <meta name="dc.date.modified" content="%s" /> +      <meta name="dc.language" content="%s" /> +      <meta name="dc.rights" content="%s" /> +      <meta name="generator" content="%s" /> +      <link rel="generator" href="%s" /> +      <link rel="shortcut icon" href="../_sisu/image/d.ico" />        <link rel="stylesheet" href="css/epub.css" type="text/css" id="main-css" />      </head>      <body lang="%s"> @@ -312,6 +294,16 @@ template outputXHTMLs() {          doc_matters.conf_make_meta.meta.title_full,          (doc_matters.conf_make_meta.meta.creator_author.empty) ? ""            : ", " ~ doc_matters.conf_make_meta.meta.creator_author, +        doc_matters.conf_make_meta.meta.date_published, +        doc_matters.conf_make_meta.meta.date_created, +        doc_matters.conf_make_meta.meta.date_issued, +        doc_matters.conf_make_meta.meta.date_available, +        doc_matters.conf_make_meta.meta.date_valid, +        doc_matters.conf_make_meta.meta.date_modified, +        doc_matters.src.language, +        doc_matters.conf_make_meta.meta.rights_copyright, +        doc_matters.generator_program.name_and_version, +        doc_matters.generator_program.url_home,          doc_matters.src.language,        );        return o; @@ -624,8 +616,7 @@ template outputXHTMLs() {        }        return bar();      } -    auto heading(M,O)( -                   M    doc_matters, +    auto heading(O)(        const        O    obj,        string            _txt,        string            _xml_type = "html", @@ -688,7 +679,7 @@ template outputXHTMLs() {      ) {        auto tags = _xhtml_anchor_tags(obj);        _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -      string o = heading(doc_matters, obj, _txt); +      string o = heading(obj, _txt);        return o;      }      auto heading_seg(M,O)( @@ -701,15 +692,14 @@ template outputXHTMLs() {        auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);        _txt = t[0];        string[] _endnotes = t[1]; -      string o = heading(doc_matters, obj, _txt, _xml_type); +      string o = heading(obj, _txt, _xml_type);        auto u = tuple(          o,          _endnotes,        );        return u;      } -    auto para(M,O)( -                   M    doc_matters, +    auto para(O)(        const        O    obj,        string            _txt,      ) { @@ -758,7 +748,7 @@ template outputXHTMLs() {      ) {        auto tags = _xhtml_anchor_tags(obj);        _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -      string o = para(doc_matters, obj, _txt); +      string o = para(obj, _txt);        return o;      }      auto para_seg(M,O)( @@ -771,15 +761,14 @@ template outputXHTMLs() {        auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);        _txt = t[0].to!string;        string[] _endnotes = t[1]; -      string o = para(doc_matters, obj, _txt); +      string o = para(obj, _txt);        auto u = tuple(          o,          _endnotes,        );        return u;      } -    auto quote(M,O)( -                   M  doc_matters, +    auto quote(O)(        const        O  obj,        string          _txt,      ) { @@ -818,7 +807,7 @@ template outputXHTMLs() {      ) {        auto tags = _xhtml_anchor_tags(obj);        _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -      string o = quote(doc_matters, obj, _txt); +      string o = quote(obj, _txt);        return o;      }      auto quote_seg(M,O)( @@ -831,15 +820,14 @@ template outputXHTMLs() {        auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);        _txt = t[0].to!string;        string[] _endnotes = t[1]; -      string o = quote(doc_matters, obj, _txt); +      string o = quote(obj, _txt);        auto u = tuple(          o,          _endnotes,        );        return u;      } -    auto group(M,O)( -                   M    doc_matters, +    auto group(O)(        const        O    obj,        string            _txt,      ) { @@ -879,7 +867,7 @@ template outputXHTMLs() {      ) {        auto tags = _xhtml_anchor_tags(obj);        _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -      string o = group(doc_matters, obj, _txt); +      string o = group(obj, _txt);        return o;      }      auto group_seg(M,O)( @@ -892,15 +880,14 @@ template outputXHTMLs() {        auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);        _txt = t[0].to!string;        string[] _endnotes = t[1]; -      string o = group(doc_matters, obj, _txt); +      string o = group(obj, _txt);        auto u = tuple(          o,          _endnotes,        );        return u;      } -    auto block(M,O)( -                   M    doc_matters, +    auto block(O)(        const        O    obj,        string            _txt,      ) { @@ -936,7 +923,7 @@ template outputXHTMLs() {      ) {        auto tags = _xhtml_anchor_tags(obj);        _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -      string o = block(doc_matters, obj, _txt); +      string o = block(obj, _txt);        return o;      }      auto block_seg(M,O)( @@ -949,15 +936,14 @@ template outputXHTMLs() {        auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);        _txt = t[0].to!string;        string[] _endnotes = t[1]; -      string o = block(doc_matters, obj, _txt); +      string o = block(obj, _txt);        auto u = tuple(          o,          _endnotes,        );        return u;      } -    auto verse(M,O)( -                   M    doc_matters, +    auto verse(O)(        const        O    obj,        string            _txt,      ) { @@ -993,7 +979,7 @@ template outputXHTMLs() {      ) {        auto tags = _xhtml_anchor_tags(obj);        _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -      string o = verse(doc_matters, obj, _txt); +      string o = verse(obj, _txt);        return o;      }      auto verse_seg(M,O)( @@ -1006,15 +992,14 @@ template outputXHTMLs() {        auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);        _txt = t[0].to!string;        string[] _endnotes = t[1]; -      string o = verse(doc_matters, obj, _txt); +      string o = verse(obj, _txt);        auto u = tuple(          o,          _endnotes,        );        return u;      } -    auto tablarize(M,O)( -                   M    doc_matters, +    auto tablarize(O)(        const        O    obj,        string            _txt,      ) { @@ -1047,14 +1032,13 @@ template outputXHTMLs() {        );        return t;      } -    auto table(M,O)( -                   M    doc_matters, +    auto table(O)(        const        O    obj,        string            _txt,      ) {        auto tags = _xhtml_anchor_tags(obj);        _txt = font_face(_txt); -      auto t = tablarize(doc_matters, obj, _txt); +      auto t = tablarize(obj, _txt);        _txt = t[0];        string _note = t[1];        string o; @@ -1077,8 +1061,7 @@ template outputXHTMLs() {        );        return o;      } -    auto endnote(M,O)( -                   M    doc_matters, +    auto endnote(O)(        const        O    obj,        string            _txt,      ) { @@ -1093,8 +1076,7 @@ template outputXHTMLs() {        );        return o;      } -    auto code(M,O)( -                   M    doc_matters, +    auto code(O)(        const        O    obj,        string            _txt,      ) { diff --git a/views/version.txt b/views/version.txt index 735996e..d7e1dee 100644 --- a/views/version.txt +++ b/views/version.txt @@ -4,7 +4,7 @@ struct Version {    int minor;    int patch;  } -enum ver = Version(0, 4, 1); +enum _ver = Version(0, 4, 2);  version (Posix) {    version (DigitalMars) {    } else version (LDC) { | 
