-*- mode: org -*-
#+TITLE: spine (doc_manifest) metadata (document curate)
#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
#+FILETAGS: :spine:output:metadata:
#+AUTHOR: Ralph Amissah
#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
#+COPYRIGHT: Copyright (C) 2015 - 2022 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
#+PROPERTY: header-args+ :results no
#+PROPERTY: header-args+ :cache no
#+PROPERTY: header-args+ :padline no
#+PROPERTY: header-args+ :mkdirp yes
- [[./doc-reform.org][doc-reform.org]] [[./][org/]]
* document curate _summary_ :module:spine:metadoc_show_summary:
** _module template_ metadoc document metadata
#+HEADER: :tangle "../src/doc_reform/io_out/metadata.d"
#+BEGIN_SRC d
< Title: " ~ doc_matters.conf_make_meta.meta.title_full ~ " Author: "
~ doc_matters.conf_make_meta.meta.creator_author ~ " Author: "
~ doc_matters.conf_make_meta.meta.creator_author ~ " Published: " ~ doc_matters.conf_make_meta.meta.date_published ~ " Copyright: " ~ doc_matters.conf_make_meta.meta.rights_copyright ~ " License: " ~ doc_matters.conf_make_meta.meta.rights_license ~ " Summary: " ~ doc_matters.conf_make_meta.meta.notes_summary ~ " source: " ~ doc_matters.src.filename_base ~ " ● markup source: ["
~ " zipped pod ] "
~ "["
~ " pod tree ] ● outputs: ["
~ " ▣ html scroll ] "
~ "["
~ " ▤ html seg ]"
~ "["
~ " ◆ epub ]";
if (doc_matters.opt.action.html_pdf_link) {
metadata_ ~= "["
~ " □ a4 pdf ]
";
if (!(doc_matters.conf_make_meta.meta.title_full.empty)) {
metadata_ ~= "
Topics:
"; string[] _top = ["", "", "", "", ""]; foreach (topic; doc_matters.conf_make_meta.meta.classify_topic_register_arr.sort!("toUpper(a) < toUpper(b)", SwapStrategy.unstable)) { string[] subject_tree = topic.split(mkup.sep); if (subject_tree.length > 0) { if (subject_tree[0] != _top[0]) { _top[0] = subject_tree[0]; if (doc_matters.opt.action.html_curate_link) { metadata_ ~= ""; } else { metadata_ ~= "" ~ subject_tree[0] ~ "
"; } } if (subject_tree.length > 1) { if (subject_tree[1] != _top[1]) { _top[1] = subject_tree[1]; _top[2] = ""; _top[3] = ""; _top[4] = ""; if (doc_matters.opt.action.html_curate_link) { metadata_ ~= ""; } else { metadata_ ~= "" ~ subject_tree[1] ~ "
"; } } if (subject_tree.length > 2) { if (subject_tree[2] != _top[2]) { _top[2] = subject_tree[2]; _top[3] = ""; _top[4] = ""; if (doc_matters.opt.action.html_curate_link) { metadata_ ~= ""; } else { metadata_ ~= "" ~ subject_tree[2] ~ "
"; } } if (subject_tree.length > 3) { if (subject_tree[3] != _top[3]) { _top[3] = subject_tree[3]; _top[4] = ""; if (doc_matters.opt.action.html_curate_link) { metadata_ ~= ""; } else { metadata_ ~= "" ~ subject_tree[3] ~ "
"; } } if (subject_tree.length > 4) { if (subject_tree[4] != _top[4]) { _top[4] = subject_tree[4]; if (doc_matters.opt.action.html_curate_link) { metadata_ ~= ""; } else { metadata_ ~= "" ~ subject_tree[4] ~ "
"; } } } } } } } } } else if (doc_matters.opt.action.debug_do) { writeln("WARNING no topic_register classification of text provided in document header ", doc_matters.src.filename_base); } metadata_write_output(doc_matters, metadata_); #+END_SRC ** metadata write output #+NAME: output_metadata_write #+BEGIN_SRC d @safe void metadata_write_output(M)(M doc_matters, string[] metadata_) { auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language); try { if (!exists(pth_html.base)) { pth_html.base.mkdirRecurse; } auto f = File(pth_html.fn_scroll("metadata." ~ doc_matters.src.filename), "w"); foreach (o; metadata_) { f.writeln(o); } } catch (ErrnoException ex) { // Handle error } if (doc_matters.opt.action.vox_gt0) { writeln(" ", pth_html.fn_scroll("metadata." ~ doc_matters.src.filename)); } } #+END_SRC *** themes **** head #+NAME: curated_html_themes_0 #+BEGIN_SRC css string theme_dark_0 = format(q"┃ body { color : #CCCCCC; background : #000000; background-color : #000000; } a:link { color : #FFFFFF; text-decoration : none; } a:visited { color : #999999; text-decoration : none; } a:hover { color : #000000; background-color : #555555; } a:hover img { background-color : #000000; } a:active { color : #888888; text-decoration : underline; } input { color : #FFFFFF; background-color : #777777; } ┃"); string theme_light_0 = format(q"┃ body { color : #000000; 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:hover img { background-color : #FFFFFF; } a:active { color : #003399; text-decoration : underline; } input { color : #000000; background-color : #FFFFFF; } ┃"); #+END_SRC **** levels #+NAME: curated_html_themes_1 #+BEGIN_SRC css string theme_dark_1 = format(q"┃ h1 { color : #FFFFFF; background : #000000; } p.letter { color : #FFFFFF; background : #333333; } ┃"); string theme_light_1 = format(q"┃ h1 { color : #FFFFFF; background : #1A3A7A; } p.letter { color : #FFFFFF; background : #1A3A7A; } ┃"); #+END_SRC *** curated topics html head #+NAME: curated_topics_html_head_1 #+BEGIN_SRC d metadata_ ~= format(q"┃