diff options
Diffstat (limited to 'src/sdp.d')
-rwxr-xr-x | src/sdp.d | 144 |
1 files changed, 122 insertions, 22 deletions
@@ -3,6 +3,17 @@ sdp sdp.d +/ +/+ sdp sisu document parser http://sisudoc.org +/ +import + compile_time_info, // sdp/compile_time_info.d + ao_abstract_doc_source, // sdp/ao_abstract_doc_source.d + ao_defaults, // sdp/ao_defaults.d + ao_read_source_files, // sdp/ao_read_source_files.d + ao_output_debugs, // sdp/ao_output_debugs.d + output_hub, // output_hub.d + ao_rgx, // sdp/ao_rgx.d + ao_ansi_colors; // sdp/ao_ansi_colors.d + // std.conv; /+ sdp sisu document parser +/ private import std.getopt, @@ -12,6 +23,7 @@ private import std.array, std.container, std.exception, + std.file, std.json, // std.path, std.range, @@ -23,16 +35,6 @@ private import std.utf, // std.variant, std.conv : to; -/+ sdp sisu document parser +/ -import - compile_time_info, // sdp/compile_time_info.d - ao_abstract_doc_source, // sdp/ao_abstract_doc_source.d - ao_defaults, // sdp/ao_defaults.d - ao_read_source_files, // sdp/ao_read_source_files.d - ao_output_debugs, // sdp/ao_output_debugs.d - ao_rgx, // sdp/ao_rgx.d - ao_ansi_colors; // sdp/ao_ansi_colors.d - // std.conv; mixin(import("version.txt")); mixin CompileTimeInfo; mixin RgxInit; @@ -44,10 +46,64 @@ void main(string[] args) { mixin SiSUmarkupRaw; mixin SiSUdocAbstraction; mixin SiSUoutputDebugs; + mixin SiSUoutputHub; mixin ScreenTxtColors; + struct SDPoutput { + auto hub(S)( + auto ref const S contents, + string[][string][string] bookindex_unordered_hashes, + JSONValue[] biblio, + JSONValue[string] dochead_make, + JSONValue[string] dochead_meta, + string fn_src, + bool[string] opt_action_bool + ) { + mixin ScreenTxtColors; + mixin RgxInit; + mixin SiSUoutputHub; + // mixin SiSUoutput; + auto rgx = Rgx(); + uint return_ = 0; + if (opt_action_bool["source"]) { + writeln("sisupod source"); + } + if (opt_action_bool["sisupod"]) { + writeln("sisupod source"); + } + if (opt_action_bool["text"]) { + writeln("text processing"); + // auto text=SDPoutput_text(); + // text.scroll(contents, bookindex_unordered_hashes, biblio, fn_src, opt_action_bool); + // // text.scroll(contents, bookindex_unordered_hashes, biblio, dochead_make, dochead_meta, fn_src, opt_action_bool); + } + if (opt_action_bool["html"]) { + auto html=SDPoutputHTML(); + html.css_write; + // html.scroll(contents, bookindex_unordered_hashes, biblio, fn_src, opt_action_bool); + html.scroll(contents, bookindex_unordered_hashes, biblio, 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"); + } + return return_; + } + } auto raw = MarkupRaw(); auto abs = Abstraction(); auto dbg = SDPoutputDebugs(); + auto output = SDPoutput(); /+ struct DocumentParts { string[string][] contents; @@ -83,17 +139,52 @@ void main(string[] args) { } bool[string] opt_action_bool = [ - "assertions" : false, - "html" : false, - "no_obj_cite_number" : false, - "verbose" : false, + "assertions" : false, + "concordance" : false, + "digest" : false, + "docbook" : false, + "epub" : false, + "html" : false, + "manifest" : false, + "no_ocn" : false, + "odt" : false, + "pdf" : false, + "postgresql" : false, + "qrcode" : false, + "sisupod" : false, + "source" : false, + "sqlite" : false, + "text" : false, + "verbose" : false, + "xhtml" : false, + "xml_dom" : false, + "xml_sax" : false, ]; auto helpInfo = getopt(args, std.getopt.config.passThrough, - "assert", "--assert set optional assertions on", &opt_action_bool["assertions"], - "html", "--html process html output", &opt_action_bool["html"], - "no-ocn", "--no-ocn suppress object cite number output", &opt_action_bool["no_obj_cite_number"], - "verbose|v", "--verbose output to terminal", &opt_action_bool["verbose"], + "assert", "--assert set optional assertions on", &opt_action_bool["assertions"], + "concordance", "--concordance file for document", &opt_action_bool["concordance"], + "digest", "--digest hash digest for each object", &opt_action_bool["digest"], + "docbook", "--docbook process docbook output", &opt_action_bool["docbook"], + "epub", "--epub process epub output", &opt_action_bool["epub"], + "html", "--html process html output", &opt_action_bool["html"], + "manifest", "--manifest process manifest output", &opt_action_bool["manifest"], + "no-ocn", "--no-ocn suppress object cite numbers", &opt_action_bool["no_ocn"], + "odf", "--odf process odf:odt output", &opt_action_bool["odt"], + "odt", "--odt process odf:odt output", &opt_action_bool["odt"], + "pdf", "--pdf process pdf output", &opt_action_bool["pdf"], + "pg", "--pg process postgresql output", &opt_action_bool["postgresql"], + "postgresql", "--postgresql process postgresql output", &opt_action_bool["postgresql"], + "qrcode", "--qrcode with document metadata", &opt_action_bool["qrcode"], + "sisupod", "--sisupod sisupod source content bundled", &opt_action_bool["sisupod"], + "source", "--source markup source text content", &opt_action_bool["source"], + "sqlite", "--sqlite process sqlite output", &opt_action_bool["sqlite"], + "text", "--text process text output", &opt_action_bool["text"], + "txt", "--txt process text output", &opt_action_bool["text"], + "verbose|v", "--verbose output to terminal", &opt_action_bool["verbose"], + "xhtml", "--xhtml process xhtml output", &opt_action_bool["xhtml"], + "xml-dom", "--xml-dom process xml dom output", &opt_action_bool["xml_dom"], + "xml-sax", "--xml-sax process xml sax output", &opt_action_bool["xml_sax"], ); if (helpInfo.helpWanted) { defaultGetoptPrinter("Some information about the program.", helpInfo.options); @@ -138,8 +229,7 @@ void main(string[] args) { auto sourcefile_content = raw.sourceContent(fn_src); /+ ↓ porcess document, return abstraction as tuple +/ - auto t = - abs.abstract_doc_source(sourcefile_content); + auto t = abs.abstract_doc_source(sourcefile_content); static assert(!isTypeTuple!(t)); auto doc_ao_contents = t[0]; // contents ~ endnotes ~ bookindex; // static assert(!isIterable!(doc_ao_contents)); @@ -152,14 +242,24 @@ void main(string[] args) { debug(checkdoc) { // checkbook & dumpdoc dbg.abstract_doc_source_debugs( doc_ao_contents, - doc_ao_make_json, - doc_ao_metadata_json, doc_ao_bookindex_unordered_hashes, doc_ao_biblio, + doc_ao_make_json, + doc_ao_metadata_json, fn_src, opt_action_bool ); } + /+ ↓ output hub +/ + output.hub( + doc_ao_contents, + doc_ao_bookindex_unordered_hashes, + doc_ao_biblio, + doc_ao_make_json, + doc_ao_metadata_json, + fn_src, + opt_action_bool + ); scope(exit) { debug(checkdoc) { writefln( |