aboutsummaryrefslogtreecommitdiffhomepage
path: root/org/sdp.org
diff options
context:
space:
mode:
Diffstat (limited to 'org/sdp.org')
-rw-r--r--org/sdp.org233
1 files changed, 174 insertions, 59 deletions
diff --git a/org/sdp.org b/org/sdp.org
index dc56e8e..0b2fc53 100644
--- a/org/sdp.org
+++ b/org/sdp.org
@@ -39,6 +39,34 @@ enum ver = Version(0, 4, 0);
[[./ao_defaults.org][ao_defaults]]
[[./ao_output_debugs.org][ao_output_debugs]]
[[./ao_read_source_files.org][ao_read_source_files]]
+[[./output_hub.org][output hub]]
+
+**** sdp :import:sdp:
+***** TODO src/sdp.d
+
+├── src
+│   ├── sdp.d
+│   └── sdp
+│    ├── ao_abstract_doc_source.d
+│    ├── ...
+│    └── compile_time_info.d
+└── views
+   └── version.txt
+
+#+NAME: sdp_imports_use
+#+BEGIN_SRC 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;
+#+END_SRC
**** std :import:std:
#+NAME: sdp_imports
@@ -52,6 +80,7 @@ private import
std.array,
std.container,
std.exception,
+ std.file,
std.json,
// std.path,
std.range,
@@ -65,32 +94,6 @@ private import
std.conv : to;
#+END_SRC
-**** sdp :import:sdp:
-***** TODO src/sdp.d
-
-├── src
-│   ├── sdp.d
-│   └── sdp
-│    ├── ao_abstract_doc_source.d
-│    ├── ...
-│    └── compile_time_info.d
-└── views
-   └── version.txt
-
-#+NAME: sdp_imports_use
-#+BEGIN_SRC d
-/+ 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;
-#+END_SRC
-
**** version.txt :version:
#+NAME: sdp_version_mixin
@@ -108,9 +111,67 @@ mixin SiSUrgxInitFlags;
mixin SiSUmarkupRaw;
mixin SiSUdocAbstraction;
mixin SiSUoutputDebugs;
+mixin SiSUoutputHub;
mixin ScreenTxtColors;
#+END_SRC
+*** sdp output :output:
+#+NAME: sdp_args
+#+BEGIN_SRC d
+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_;
+ }
+}
+#+END_SRC
+
*** init :init:
#+NAME: sdp_args
@@ -118,6 +179,7 @@ mixin ScreenTxtColors;
auto raw = MarkupRaw();
auto abs = Abstraction();
auto dbg = SDPoutputDebugs();
+auto output = SDPoutput();
/+
struct DocumentParts {
string[string][] contents;
@@ -169,17 +231,52 @@ look into using getopt
#+BEGIN_SRC d
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);
@@ -195,7 +292,7 @@ foreach(arg; args) {
}
#+END_SRC
-** loop each file [+2] :loop:files:
+** each file (loop) [+2] :loop:files:
*** filename provided [+1] :file:process:
**** loop scope :scope:
#+NAME: sdp_each_file_do
@@ -240,8 +337,7 @@ auto sourcefile_content =
#+NAME: sdp_each_file_do
#+BEGIN_SRC d
/+ ↓ 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));
@@ -260,16 +356,32 @@ auto doc_ao_biblio = t[4];
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
);
}
#+END_SRC
+**** TODO process outputs :outputs:
+***** [#A] html :html:
+#+NAME: sdp_each_file_do
+#+BEGIN_SRC d
+/+ ↓ 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
+);
+#+END_SRC
+
**** on exit :scope:exit:
#+NAME: sdp_each_file_do
#+BEGIN_SRC d
@@ -304,31 +416,13 @@ break;
** sdp :sdp.d:
*** TODO src/sdp.d
-├── src
-│   ├── sdp.d
-│   └── sdp
-│    ├── ao_abstract_doc_source.d
-│    ├── ...
-│    └── compile_time_info.d
-├── views
-│   └── version.txt
-
-├── src
-│   ├── sdp
-│   │   ├── ao_abstract_doc_source.d
-│   │   ├── ...
-│   │   └── compile_time_info.d
-│   └── sdp.d
-├── views
-│   └── version.txt
-
#+BEGIN_SRC d :tangle ../src/sdp.d :shebang #!/usr/bin/env rdmd
/+
sdp
sdp.d
+/
-<<sdp_imports>>
<<sdp_imports_use>>
+<<sdp_imports>>
<<sdp_version_mixin>>
mixin CompileTimeInfo;
mixin RgxInit;
@@ -346,8 +440,29 @@ void main(string[] args) {
}
#+END_SRC
+├── src
+│   ├── sdp.d
+│   └── sdp
+│    ├── ao_abstract_doc_source.d
+│    ├── ...
+│    └── compile_time_info.d
+├── views
+│   └── version.txt
+
+├── src
+│   ├── sdp
+│   │   ├── ao_abstract_doc_source.d
+│   │   ├── ...
+│   │   └── compile_time_info.d
+│   └── sdp.d
+├── views
+│   └── version.txt
+
* TODO work on
-- figure out best program dir structure, issue with rdmd
+** program dir structure
+figure out best program dir structure for dub and compilers, issue with rdmd
+
+** sisu file structure
|---------------------+------------------------------------------+------------------------+--------|
| header | sisu /header markup/ | markup | |