-*- mode: org -*-
#+TITLE: sisudoc spine (doc_reform) defaults misc
#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
#+FILETAGS: :spine:default:misc:
#+AUTHOR: Ralph Amissah
#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :results no
#+PROPERTY: header-args+ :cache no
#+PROPERTY: header-args+ :padline no
#+PROPERTY: header-args+ :mkdirp yes
#+OPTIONS: H:3 num:nil toc:t \n:t ::t |:t ^:nil -:t f:t *:t
- [[./doc-reform.org][doc-reform.org]] [[./][org/]]
* meta defaults :module:meta:
** _module template_
#+NAME: tangle_defaults
#+HEADER: :tangle "../src/sisudoc/meta/defaults.d"
#+HEADER: :noweb yes
#+BEGIN_SRC d
<<doc_header_including_copyright_and_license>>
/++
default settings
+/
module sisudoc.meta.defaults;
@safe:
<<meta_defaults_template_node>>
<<meta_defaults_template_curate_metadata>>
<<meta_defaults_template_biblio>>
<<defaults_template_markup>>
<<defaults_template_language_codes>>
#+END_SRC
** template: flags regex initialize :regex_flags:
*** node
#+NAME: meta_defaults_template_node
#+BEGIN_SRC d
template spineNode() {
static string[string] node_metadata_heading_str() {
string[string] _node = [
"is" : "",
"ocn" : "",
"marked_up_lev" : "",
"segment_anchor_tag_html" : "",
"segment_anchor_tag_epub" : "",
"attrib" : "",
];
return _node;
}
static int[string] node_metadata_heading_int() {
int[string] _node = [
"ocn" : 0, // decide whether to use or keep?
"ptr_doc_object" : 0,
"ptr_html_segnames" : 0,
"ptr_heading" : 0,
"heading_lev_markup" : 9,
"heading_lev_collapsed" : 9,
"parent_ocn" : 0,
"parent_lev_markup" : 9,
];
return _node;
}
static string[string] node_metadata_para_str() {
string[string] _node = [
"is" : "",
"ocn" : "",
"attrib" : "",
];
return _node;
}
static int[string] node_metadata_para_int() {
int[string] _node = [
"ocn" : 0,
"indent_base" : 0,
"indent_hang" : 0,
"bullet" : 0, // bool (0|1)
];
return _node;
}
}
#+END_SRC
** template: curate
#+NAME: meta_defaults_template_curate_metadata
#+BEGIN_SRC d
template spineCurateMetadata() {
auto spineCurateMetadata() {
struct _Curate {
struct Curate {
string title = "";
string[] author_arr = [];
string author = "";
string author_surname = "";
string author_surname_fn = "";
string language = "";
string language_original = "";
string uid = "";
string date_published = "";
string[] topic_register_arr = [];
string path_html_metadata = "";
string path_html_scroll = "";
string path_html_segtoc = "";
string path_epub = "";
string path_abs_html_segtoc = "";
string path_abs_html_scroll = "";
string path_abs_epub = "";
string url_html_seg = "";
string url_html_scroll = "";
string url_epub = "";
}
Curate curate;
Curate[] curates;
Curate[][string][string][string][string] subject_trees;
}
return _Curate();
}
}
#+END_SRC
** template: bibliography :biblio:
#+NAME: meta_defaults_template_biblio
#+BEGIN_SRC d
template spineBiblio() {
// required: deemed_author (author || editor); year; fulltitle;
struct BibJsnStr {
static auto biblio_entry_tags_jsonstr() {
string x = `{
"is" : "",
"sortby_deemed_author_year_title" : "",
"deemed_author" : "",
"author_raw" : "",
"author" : "",
"author_arr" : [ "" ],
"editor_raw" : "",
"editor" : "",
"editor_arr" : [ "" ],
"title" : "",
"subtitle" : "",
"fulltitle" : "",
"language" : "",
"trans" : "",
"src" : "",
"journal" : "",
"in" : "",
"volume" : "",
"edition" : "",
"year" : "",
"place" : "",
"publisher" : "",
"url" : "",
"pages" : "",
"note" : "",
"short_name" : "",
"id" : ""
}`; // is: book, article, magazine, newspaper, blog, other
return x;
}
}
}
#+END_SRC
* output defaults :module:output:
** _module template_
#+NAME: tangle_defaults
#+HEADER: :tangle "../src/sisudoc/io_out/defaults.d"
#+HEADER: :noweb yes
#+BEGIN_SRC d
<<doc_header_including_copyright_and_license>>
/++
default settings
+/
module sisudoc.io_out.defaults;
@safe:
<<defaults_template_init_flags>>
<<defaults_template_markup>>
<<defaults_template_language_codes>>
#+END_SRC
** imports
#+NAME: defaults_imports
#+BEGIN_SRC d
import
std.algorithm,
std.array,
std.container,
std.exception,
std.file,
std.getopt,
std.json,
std.path,
std.process,
std.range,
std.regex,
std.stdio,
std.string,
std.typecons,
std.uni,
std.utf,
std.conv : to;
#+END_SRC
** defaults shared by meta & output (generic)
*** template: internal markup :markup:
21 special characters used:
#+BEGIN_SRC txt
【】〖〗┥┝┤├¤░┘┙┚┼┿╂┊┏┚┆■☼
#+END_SRC
#+NAME: defaults_template_markup
#+BEGIN_SRC d
template InternalMarkup() {
import std.array;
static struct InlineMarkup {
string en_a_o = "【"; string en_a_c = "】";
string en_b_o = "〖"; string en_b_c = "〗";
string quote_o = "“"; string quote_c = "”";
string ff_i = "⑆"; string ff_o = "┨"; string ff_c = "┣"; // fontface
string lnk_o = "┥"; string lnk_c = "┝";
string url_o = "┤"; string url_c = "├";
string emph = "*";
string bold = "!";
string italic = "/";
string underscore = "_";
string superscript = "^";
string subscript = ",";
string mono = "■";
string cite = "‖";
string mark_internal_site_lnk = "¤";
string nbsp = "░";
string br_line = "┘";
string br_line_inline = "┙";
string br_line_spaced = "┚";
string br_obj = "break_obj";
string br_page_line = "┼";
string br_page = "┿";
string br_page_new = "╂";
string tc_s = "┊";
string tc_o = "┏";
string tc_c = "┚";
string tc_p = "┆";
string img = "☼";
string sep = "␣"; // "~";"␣"; // "~";
string uid_sep = ":";
string on_o = "「"; string on_c = "」";
string mk_bullet = "● ";
static string indent_by_spaces_provided(int indent, string _indent_spaces ="░░") {
_indent_spaces = replicate(_indent_spaces, indent);
return _indent_spaces;
}
static string repeat_character_by_number_provided(C,N)(C _character ="-", N number=10) {
_character = replicate(_character, number);
return _character;
}
}
}
#+END_SRC
*** template: language codes
#+NAME: defaults_template_language_codes
#+BEGIN_SRC d
template spineLanguageCodes() {
/+ language codes +/
struct Lang {
static string[string][string] codes() {
auto _lang_codes = [
"am": [ "c": "am", "n": "Amharic", "t": "Amharic", "xlp": "amharic" ],
"bg": [ "c": "bg", "n": "Bulgarian", "t": "Български (Bəlgarski)", "xlp": "bulgarian" ],
"bn": [ "c": "bn", "n": "Bengali", "t": "Bengali", "xlp": "bengali" ],
"br": [ "c": "br", "n": "Breton", "t": "Breton", "xlp": "breton" ],
"ca": [ "c": "ca", "n": "Catalan", "t": "catalan", "xlp": "catalan" ],
"cs": [ "c": "cs", "n": "Czech", "t": "česky", "xlp": "czech" ],
"cy": [ "c": "cy", "n": "Welsh", "t": "Welsh", "xlp": "welsh" ],
"da": [ "c": "da", "n": "Danish", "t": "dansk", "xlp": "danish" ],
"de": [ "c": "de", "n": "German", "t": "Deutsch", "xlp": "german" ],
"el": [ "c": "el", "n": "Greek", "t": "Ελληνικά (Ellinika)", "xlp": "greek" ],
"en": [ "c": "en", "n": "English", "t": "English", "xlp": "english" ],
"eo": [ "c": "eo", "n": "Esperanto", "t": "Esperanto", "xlp": "esperanto" ],
"es": [ "c": "es", "n": "Spanish", "t": "español", "xlp": "spanish" ],
"et": [ "c": "et", "n": "Estonian", "t": "Estonian", "xlp": "estonian" ],
"eu": [ "c": "eu", "n": "Basque", "t": "basque", "xlp": "basque" ],
"fi": [ "c": "fi", "n": "Finnish", "t": "suomi", "xlp": "finnish" ],
"fr": [ "c": "fr", "n": "French", "t": "français", "xlp": "french" ],
"ga": [ "c": "ga", "n": "Irish", "t": "Irish", "xlp": "irish" ],
"gl": [ "c": "gl", "n": "Galician", "t": "Galician", "xlp": "galician" ],
"he": [ "c": "he", "n": "Hebrew", "t": "Hebrew", "xlp": "hebrew" ],
"hi": [ "c": "hi", "n": "Hindi", "t": "Hindi", "xlp": "hindi" ],
"hr": [ "c": "hr", "n": "Croatian", "t": "Croatian", "xlp": "croatian" ],
"hy": [ "c": "hy", "n": "Armenian", "t": "Armenian", "xlp": "armenian" ],
"ia": [ "c": "ia", "n": "Interlingua", "t": "Interlingua", "xlp": "interlingua" ],
"is": [ "c": "is", "n": "Icelandic", "t": "Icelandic", "xlp": "icelandic" ],
"it": [ "c": "it", "n": "Italian", "t": "Italiano", "xlp": "italian" ],
"ja": [ "c": "ja", "n": "Japanese", "t": "日本語 (Nihongo)", "xlp": "japanese" ],
"ko": [ "c": "ko", "n": "Korean", "t": "Korean", "xlp": "korean" ],
"la": [ "c": "la", "n": "Latin", "t": "Latin", "xlp": "latin" ],
"lo": [ "c": "lo", "n": "Lao", "t": "Lao", "xlp": "lao" ],
"lt": [ "c": "lt", "n": "Lithuanian", "t": "Lithuanian", "xlp": "lithuanian" ],
"lv": [ "c": "lv", "n": "Latvian", "t": "Latvian", "xlp": "latvian" ],
"ml": [ "c": "ml", "n": "Malayalam", "t": "Malayalam", "xlp": "malayalam" ],
"mr": [ "c": "mr", "n": "Marathi", "t": "Marathi", "xlp": "marathi" ],
"nl": [ "c": "nl", "n": "Dutch", "t": "Nederlands", "xlp": "dutch" ],
"no": [ "c": "no", "n": "Norwegian", "t": "norsk", "xlp": "norsk" ],
"nn": [ "c": "nn", "n": "Norwegian Nynorsk", "t": "nynorsk", "xlp": "nynorsk" ],
"oc": [ "c": "oc", "n": "Occitan", "t": "Occitan", "xlp": "occitan" ],
"pl": [ "c": "pl", "n": "Polish", "t": "polski", "xlp": "polish" ],
"pt": [ "c": "pt", "n": "Portuguese", "t": "Português", "xlp": "portuges" ],
"pt_BR": [ "c": "pt_BR", "n": "Portuguese Brazil", "t": "Brazilian Português", "xlp": "brazilian" ],
"ro": [ "c": "ro", "n": "Romanian", "t": "română", "xlp": "romanian" ],
"ru": [ "c": "ru", "n": "Russian", "t": "Русский (Russkij)", "xlp": "russian" ],
"sa": [ "c": "sa", "n": "Sanskrit", "t": "Sanskrit", "xlp": "sanskrit" ],
"se": [ "c": "se", "n": "Sami", "t": "Samin", "xlp": "samin" ],
"sk": [ "c": "sk", "n": "Slovak", "t": "slovensky", "xlp": "slovak" ],
"sl": [ "c": "sl", "n": "Slovenian", "t": "Slovenian", "xlp": "slovenian" ],
"sq": [ "c": "sq", "n": "Albanian", "t": "Albanian", "xlp": "albanian" ],
"sr": [ "c": "sr", "n": "Serbian", "t": "Serbian", "xlp": "serbian" ],
"sv": [ "c": "sv", "n": "Swedish", "t": "svenska", "xlp": "swedish" ],
"ta": [ "c": "ta", "n": "Tamil", "t": "Tamil", "xlp": "tamil" ],
"te": [ "c": "te", "n": "Telugu", "t": "Telugu", "xlp": "telugu" ],
"th": [ "c": "th", "n": "Thai", "t": "Thai", "xlp": "thai" ],
"tk": [ "c": "tk", "n": "Turkmen", "t": "Turkmen", "xlp": "turkmen" ],
"tr": [ "c": "tr", "n": "Turkish", "t": "Türkçe", "xlp": "turkish" ],
"uk": [ "c": "uk", "n": "Ukranian", "t": "українська (ukrajins\"ka)", "xlp": "ukrainian" ],
"ur": [ "c": "ur", "n": "Urdu", "t": "Urdu", "xlp": "urdu" ],
"us": [ "c": "en", "n": "English (American)","t": "English", "xlp": "english" ],
"vi": [ "c": "vi", "n": "Vietnamese", "t": "Vietnamese", "xlp": "vietnamese" ],
"zh": [ "c": "zh", "n": "Chinese", "t": "中文", "xlp": "chinese" ],
"en": [ "c": "en", "n": "English", "t": "English", "xlp": "english" ],
"xx": [ "c": "xx", "n": "Default", "t": "English", "xlp": "english" ],
];
return _lang_codes;
}
static string[] code_arr_ptr() {
string[] _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "us", "vi", "zh", "en", "xx",];
return _lang_codes;
}
static string[] code_arr() {
string[] _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "vi", "zh"];
return _lang_codes;
}
static auto codes_() {
return "(" ~ join(code_arr,"|") ~ ")";
}
static auto codes_regex() {
return regex(codes_);
}
}
}
#+END_SRC
* document header including copyright & license
#+NAME: doc_header_including_copyright_and_license
#+HEADER: :noweb yes
#+BEGIN_SRC emacs-lisp
<<./sisudoc_spine_version_info_and_doc_header_including_copyright_and_license.org:spine_doc_header_including_copyright_and_license()>>
#+END_SRC
* __END__
** +set colors for terminal+ (unused) :colors:terminal:
#+NAME: meta_ansi_colors
#+BEGIN_SRC d
static string[string] scr_txt_color = [
"off" : "\033[0m",
"white" : "\033[37m",
"white_bold" : "\033[1m",
"marker" : "\033[42m",
"bold" : "\033[1m",
"underline" : "\033[4m",
"invert" : "\033[7m",
"darkgrey_hi" : "\033[100m",
"grey_hi" : "\033[47m",
"pink_hi" : "\033[105m",
"fuchsia_hi" : "\033[45m",
"red_hi" : "\033[41m",
"orange_hi" : "\033[101m",
"yellow_hi" : "\033[103m",
"brown_hi" : "\033[43m",
"lightgreen_hi" : "\033[102m",
"green_hi" : "\033[42m",
"cyan_hi" : "\033[106m",
"blue_hi" : "\033[104m",
"navy_hi" : "\033[44m",
"grey" : "\033[90m",
"pink" : "\033[95m",
"fuchsia" : "\033[35m",
"ruby" : "\033[31m",
"red" : "\033[91m",
"orange" : "\033[91m",
"yellow" : "\033[93m",
"brown" : "\033[33m",
"green" : "\033[92m",
"darkgreen" : "\033[32m",
"cyan" : "\033[36m",
"blue" : "\033[94m",
"navy" : "\033[34m",
"black" : "\033[30m"
];
static string[string] scr_txt_marker = [
"white" : "\033[37m*\033[0m ",
"bold" : "\033[1m*\033[0m ",
"invert" : "\033[7m*\033[0m ",
"darkgrey_hi" : "\033[100m*\033[0m ",
"grey_hi" : "\033[47m*\033[0m ",
"pink_hi" : "\033[105m*\033[0m ",
"fuchsia_hi" : "\033[45m*\033[0m ",
"red_hi" : "\033[41m*\033[0m ",
"orange_hi" : "\033[101m*\033[0m ",
"yellow_hi" : "\033[103m*\033[0m ",
"brown_hi" : "\033[43m*\033[0m ",
"lightgreen_hi" : "\033[102m*\033[0m ",
"green_hi" : "\033[42m*\033[0m ",
"cyan_hi" : "\033[106m*\033[0m ",
"blue_hi" : "\033[104m*\033[0m ",
"navy_hi" : "\033[44m*\033[0m ",
"grey" : "\033[90m*\033[0m ",
"pink" : "\033[95m*\033[0m ",
"fuchsia" : "\033[35m*\033[0m ",
"ruby" : "\033[31m*\033[0m ",
"red" : "\033[91m*\033[0m ",
"orange" : "\033[91m*\033[0m ",
"yellow" : "\033[93m*\033[0m ",
"brown" : "\033[33m*\033[0m ",
"green" : "\033[92m*\033[0m ",
"darkgreen" : "\033[32m*\033[0m ",
"cyan" : "\033[36m*\033[0m ",
"blue" : "\033[94m*\033[0m ",
"navy" : "\033[34m*\033[0m ",
"black" : "\033[30m*\033[0m "
];
#+END_SRC