/++ default settings +/ template SiSUregisters() { string[string][string] conf_aa() { auto conf_ = [ "webserv": [ "url_root" : "", "path" : "~/sdp_www" , "images" : "" , "cgi" : "/usr/local/lib/sdp-cgi" ], "webserv_cgi": [ "host" : "localhost", "base_path" : "", "port" : "8081", "user" : "", "file_links" : "www.sisudoc.org" ], "processing": [ "path" : "~", "dir" : "_sisu_processing", "concord_max" : "400000" ], "flag": [ "act0" : "--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --sqlite --manifest --verbose", "act1" : "--digest --text --html --manifest", "act2" : "--digest --text --html --epub --pdf --manifest", "act3" : "--digest --qrcode --text --html --epub --concordance --pdf --manifest", "act4" : "--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --manifest", "act5" : "--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --sqlite --manifest", "act6" : "--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --sqlite --manifest", "act7" : "--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --sqlite --source --sisupod --manifest", "act8" : "--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --pg --update --manifest", "act9" : "--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --pg --update --source --sisupod --manifest" ], "default": [ "papersize" : "a4,letter", "text_wrap" : "78", "emphasis" : "bold", "language" : "en", "digest" : "sha256" ], "permission": [ "share_source" : "" ], "program_select": [ "editor" : "vim", "epub_viewer" : "ebook-viewer", "html_viewer" : "xombrero", "odf_viewer" : "lowriter", "pdf_viewer" : "evince", "xml_viewer" : "xml-viewer" ], "search": [ "flag" : "", "action" : "", "db" : "", "title" : "" ] ]; return conf_; } string[string][string] make_aa() { auto make_ = [ "make": [ "bold" : "", "breaks" : "", "cover_image" : "", "css" : "", "emphasis" : "", "footer" : "", "headings" : "", "home_button_image" : "", "home_button_text" : "", "italics" : "", "num_top" : "", "num_depth" : "", "substitute" : "", "texpdf_font" : "" ] ]; return make_; } string[string][string] meta_aa() { auto meta_ = [ "classify": [ "dewey" : "", "keywords" : "", "loc" : "", "subject" : "", "topic_register" : "" ], "creator": [ "author" : "", "author_email" : "", "illustrator" : "", "translator" : "" ], "date": [ "added_to_site" : "", "available" : "", "created" : "", "issued" : "", "modified" : "", "published" : "", "valid" : "" ], "identifier": [ "isbn" : "", "oclc" : "", "pg" : "" ], "links": [ "link" : "" ], "notes": [ "abstract" : "", "description" : "" ], "original": [ "language" : "", "source" : "", "title" : "" ], "publisher": [ "name" : "" ], "rights": [ "copyright" : "", "cover" : "", "illustrations" : "", "license" : "" ], "title": [ "edition" : "", "full" : "", "language" : "", "main" : "", "note" : "", "sub" : "", "subtitle" : "" ] ]; return meta_; } auto ptr_head_main = [ "classify", "creator", "date", "identifier", "links", "make", /+ make +/ "original", "notes", "rights", "title" ]; auto ptr_head_sub_classify = [ "dewey", "keywords", "loc", "subject", "topic_register" ]; auto ptr_head_sub_creator = [ "author", "author_email", "cover", "illustrator", "translator" ]; auto ptr_head_sub_date = [ "added_to_site", "available", "created", "issued", "modified", "published", "valid" ]; auto ptr_head_sub_identifier = [ "isbn", "oclc", "pg" ]; /+ make +/ auto ptr_head_sub_make = [ "cover_image", "home_button_image", "home_button_text", "footer", "headings", "num_top", "num_depth", "breaks", "substitute", "bold", "italics", "emphasis", "texpdf_font", "css" ]; auto ptr_head_sub_notes = [ "abstract", "description" ]; auto ptr_head_sub_original = [ "language", "source", "title" ]; auto ptr_head_sub_publisher = [ "name" ]; auto ptr_head_sub_rights = [ "copyright", "cover", "illustrations", "license" ]; auto ptr_head_sub_title = [ "edition", "full", "language", "main", "note", "sub" ]; auto config_jsonstr = `{ }`; } /+ /+ unify internal representation of header info for native & sdlang document headers represent either using struct, hashes or possibly json sdp internal representation should be identical for native & sdlang variants +/ header. ├── make // make instructions │ ├── bold │ ├── breaks │ ├── cover_image │ ├── css │ ├── emphasis │ ├── footer │ ├── headings │ ├── home_button_image │ ├── home_button_text │ ├── italics │ ├── num_top │ ├── substitute │ └── texpdf_font └── meta // metadata ├── author // move author to creator:author ├── classify │ ├── dewey │ ├── keyword │ ├── loc │ ├── subject │ └── topic_register ├── creator │ ├── author │ │ ├── [ [first_name: x0, last_name: y0], [first_name: x1, last_name: y1] ] │ │ └── [ full_name0, full_name1 ] │ ├── author_email │ ├── illustrator │ └── translator ├── date │ ├── added_to_site │ ├── available │ ├── created │ ├── issued │ ├── modified │ ├── published │ └── valid ├── identifier │ ├── isbn │ ├── oclc │ └── pg ├── links ├── notes │ ├── abstract │ └── description ├── original │ ├── language │ ├── source │ └── title ├── publisher │ └── name ├── rights │ ├── copyright │ ├── cover │ ├── illustrations │ └── license └── title // move title: to title:main ├── edition ├── [ full (main + sub) ] ├── language ├── main ├── note ├── sub └── subtitle // move title:subtitle to title:sub 61 leaves +/ template SiSUlanguageCodes() { /+ language codes +/ struct Lang { 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; } string[] code_arr_ptr() { auto _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; } string[] code_arr() { auto _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; } auto codes_() { // return join(code_arr,"|"); return "(" ~ join(code_arr,"|") ~ ")"; } auto codes_regex() { return regex(codes_); } } } /+ regex flags +/ template SiSUrgxInitFlags() { int[string] flags_type_init() { int[string] flags_type_init = [ "make_headings" : 0, "header_make" : 0, "header_meta" : 0, "heading" : 0, "biblio_section" : 0, "glossary_section" : 0, "blurb_section" : 0, "para" : 0, "blocks" : 0, // 0..2 generic "code" : 0, // 0..2 "poem" : 0, // 0..2 "table" : 0, // 0..2 "group" : 0, // 0..2 "block" : 0, // 0..2 "quote" : 0, // 0..2 "verse_new" : 0, "curly_code" : 0, "curly_poem" : 0, "curly_table" : 0, "curly_group" : 0, "curly_block" : 0, "curly_quote" : 0, "tic_code" : 0, "tic_poem" : 0, "tic_table" : 0, "tic_group" : 0, "tic_block" : 0, "tic_quote" : 0, "ocn_status" : 0, // 0 obj_cite_number; 1 no obj_cite_number; 2 no obj_cite_number & dummy headings "ocn_status_multi_obj" : 0, // 0 obj_cite_number; 1 no obj_cite_number; 2 no obj_cite_number & dummy headings "book_index" : 0, ]; return flags_type_init; } } template SiSUnode() { string[string] node_metadata_heading_str() { auto _node = [ "is" : "", "ocn" : "", "marked_up_lev" : "", "segment_anchor_tag" : "", "attrib" : "", ]; return _node; } int[string] node_metadata_heading_int() { auto _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; } string[string] node_metadata_para_str() { auto _node = [ "is" : "", "ocn" : "", "attrib" : "", // "segment_anchor_tag" : "", ]; return _node; } int[string] node_metadata_para_int() { auto _node = [ "ocn" : 0, "indent_base" : 0, "indent_hang" : 0, "bullet" : 0, // bool (0|1) ]; return _node; } } template SiSUbiblio() { // required: deemed_author (author || editor); year; fulltitle; auto biblio_entry_tags_jsonstr = `{ "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 } template SiSUpaths() { string _base_filename(string fn_src) { string _fn_base = ""; if (extension(fn_src) == ".sst") { _fn_base = baseName(fn_src, ".sst"); } else if (extension(fn_src) == ".ssm") { _fn_base = baseName(fn_src, ".ssm"); } return _fn_base; } struct DirPaths { string base_filename(string fn_src) { return _base_filename(fn_src); } } struct SiSUpodPaths { string base_filename(string fn_src) { return _base_filename(fn_src); } string base(string fn_src) { return chainPath("sisupod", _base_filename(fn_src)).array; } string doc(string fn_src) { return chainPath(base(fn_src), "doc").array; } string doc_lng(string fn_src, string lng) { return chainPath(doc(fn_src), lng).array; } string image(string fn_src) { return chainPath(base(fn_src), "image").array; } string conf(string fn_src) { return chainPath(base(fn_src), "conf").array; } string css(string fn_src) { return chainPath(base(fn_src), "css").array; } string fn_doc(string fn_src, string lng) { return chainPath((doc_lng(fn_src, lng)), baseName(fn_src)).array; } } struct HtmlPaths { string base_filename(string fn_src) { return _base_filename(fn_src); } string base() { return chainPath("en", "html").array; } string seg(string fn_src) { return chainPath(base, _base_filename(fn_src)).array; } string fn_scroll(string fn_src) { return chainPath(base, _base_filename(fn_src) ~ ".html").array; } string fn_seg(string fn_src, string seg_filename) { return chainPath(seg(fn_src), seg_filename ~ ".html").array; } // string fn_css(string fn_src) { // // // return chainPath(seg(fn_src), "html.css").array; // } } struct EpubPaths { string base_filename(string fn_src) { return _base_filename(fn_src); } string base() { return chainPath("en", "epub").array; } string doc(string fn_src) { return chainPath(base, _base_filename(fn_src)).array; // return chainPath(base, base_fn).array; } string doc_meta_inf(string fn_src) { return chainPath(doc(fn_src), "META-INF").array; } string doc_oebps(string fn_src) { return chainPath(doc(fn_src), "OEBPS").array; } string doc_oebps_css(string fn_src) { return chainPath(doc_oebps(fn_src), "css").array; } string doc_oebps_image(string fn_src) { return chainPath(doc_oebps(fn_src), "image").array; } string fn_mimetypes(string fn_src) { return chainPath(doc(fn_src), "mimetypes").array; } string fn_dmi_container_xml(string fn_src) { return chainPath(doc_meta_inf(fn_src), "container.xml").array; } string fn_oebps_toc_ncx(string fn_src) { return chainPath(doc_oebps(fn_src), "toc.ncx").array; } string fn_oebps_content_opf(string fn_src) { return chainPath(doc_oebps(fn_src), "content.opf").array; } string fn_oebps_content_xhtml(string fn_src, string seg_filename) { return chainPath(doc_oebps(fn_src), seg_filename ~ ".xhtml").array; } } } template InternalMarkup() { struct InlineMarkup { auto en_a_o = "【"; auto en_a_c = "】"; // endnote en_a_o: '~{'; en_a_c: '}~'; auto en_b_o = "〖"; auto en_b_c = "〗"; // endnote en_b_o: '~['; en_b_c: ']~'; auto lnk_o = "┥"; auto lnk_c = "┝"; auto url_o = "┤"; auto url_c = "├"; auto nbsp = "░"; auto br_line = "┘"; auto br_nl = "┙"; auto br_paragraph = "┚"; auto br_obj = "break_obj"; auto br_page_line = "┼"; auto br_page = "┿"; auto br_page_new = "╂"; string indent_by_spaces_provided(int indent) { auto _indent_spaces ="░░"; // auto nbsp = "░"; _indent_spaces = replicate(_indent_spaces, indent); return _indent_spaces; } } }