diff options
Diffstat (limited to 'org/sdp.org')
-rw-r--r-- | org/sdp.org | 99 |
1 files changed, 59 insertions, 40 deletions
diff --git a/org/sdp.org b/org/sdp.org index 47cecf8..ebf427e 100644 --- a/org/sdp.org +++ b/org/sdp.org @@ -24,7 +24,7 @@ struct Version { int minor; int patch; } -enum ver = Version(0, 7, 0); +enum ver = Version(0, 7, 1); #+END_SRC * sdp.d sisu document parser :sdp.d: @@ -131,13 +131,21 @@ std.path, std.stdio, std.variant, -**** version.txt :version: +**** mixins +***** version.txt :version: #+NAME: sdp_version_mixin #+BEGIN_SRC d mixin(import("version.txt")); #+END_SRC +***** std mixins +#+NAME: std_mixins +#+BEGIN_SRC d +mixin CompileTimeInfo; +mixin RgxInit; +#+END_SRC + *** mixin :mixin: #+NAME: sdp_mixin @@ -289,7 +297,7 @@ auto conf_doc_make_aa = confsdl.documentMakeSDLangToAAmake(sdl_root_doc_make); *** filename provided [+1] :file:process: **** scope (loop) :scope: -#+NAME: sdp_each_file_do +#+NAME: sdp_each_file_do_scope #+BEGIN_SRC d scope(success) { debug(checkdoc) { @@ -314,39 +322,47 @@ enforce( ); #+END_SRC -**** [#A] read file :file:read: +**** [#A] read in raw file (using filename with path) :file:read: [[./ao_markup_source_raw.org][ao_markup_source_raw]] -#+NAME: sdp_each_file_do +#+NAME: sdp_each_file_do_read_sisu_markup_file #+BEGIN_SRC d /+ ↓ read file +/ -auto header_and_content_tuple = raw.sourceContent(fn_src); -static assert(!isTypeTuple!(header_and_content_tuple)); -auto header = header_and_content_tuple[0]; -auto sourcefile_content = header_and_content_tuple[1]; -debug(header_and_content) { +auto read_in_file_string = raw.sourceContent(fn_src); +#+END_SRC + +**** [#A] split raw content file into: doc header & doc content :file:read: + +#+NAME: sdp_each_file_do_split_sisu_markup_file_content_into_header_and_body +#+BEGIN_SRC d +/+ ↓ file tuple of header and content +/ +auto header_and_body_tuple = raw.sourceContentSplitIntoHeaderAndBody(read_in_file_string, fn_src); +auto header = header_and_body_tuple[0]; +auto content_body = header_and_body_tuple[1]; +debug(header_and_body) { writeln(header); - writeln(header_and_content_tuple.length); - writeln(sourcefile_content[0]); + writeln(header_and_body_tuple.length); + writeln(content_body[0]); } #+END_SRC -**** [#A] read doc header: metadata & make :doc:header:metadata:make: +**** [#A] split doc header into: metadata & make :doc:header:metadata:make: -#+NAME: sdp_each_file_do +#+NAME: sdp_each_file_do_split_sisu_markup_file_header_into_make_and_meta #+BEGIN_SRC d +/+ ↓ split header into make and meta +/ auto header_make_and_meta_tuple = head.headerContentAA(header, conf_doc_make_aa); static assert(!isTypeTuple!(header_make_and_meta_tuple)); -string[string][string] dochead_make_aa = header_make_and_meta_tuple[0]; -string[string][string] dochead_meta_aa = header_make_and_meta_tuple[1]; +string[string][string] dochead_make = header_make_and_meta_tuple[0]; +string[string][string] dochead_meta = header_make_and_meta_tuple[1]; #+END_SRC **** [#A] processing: document abstraction, tuple :processing: -#+NAME: sdp_each_file_do +#+NAME: sdp_each_file_do_document_abstraction #+BEGIN_SRC d -/+ ↓ process document, return abstraction as tuple +/ -auto t = abs.abstract_doc_source(sourcefile_content, dochead_make_aa, dochead_meta_aa); +/+ ↓ document abstraction: process document, return abstraction as tuple +/ +auto t = abs.abstract_doc_source(content_body, dochead_make, dochead_meta); static assert(!isTypeTuple!(t)); auto doc_ao_contents = t[0]; // contents ~ endnotes ~ bookindex; // static assert(!isIterable!(doc_ao_contents)); @@ -355,19 +371,18 @@ auto doc_ao_biblio = t[2]; // destroy(t); #+END_SRC -**** TODO debug :debug: -***** [#A] debug document parts (checkdoc) :checkdoc: +**** TODO debug (document parts, checkdoc) :debug:checkdoc: -#+NAME: sdp_each_file_do +#+NAME: sdp_each_file_do_debugs_checkdoc #+BEGIN_SRC d -/+ ↓ document parts +/ +/+ ↓ debugs +/ debug(checkdoc) { // checkbook & dumpdoc dbg.abstract_doc_source_debugs( doc_ao_contents, doc_ao_bookindex_unordered_hashes, doc_ao_biblio, - dochead_make_aa, - dochead_meta_aa, + dochead_make, + dochead_meta, fn_src, opt_action_bool ); @@ -376,15 +391,15 @@ debug(checkdoc) { // checkbook & dumpdoc **** TODO process outputs :outputs: -#+NAME: sdp_each_file_do +#+NAME: sdp_each_file_do_selected_output #+BEGIN_SRC d /+ ↓ output hub +/ output.hub( doc_ao_contents, doc_ao_bookindex_unordered_hashes, doc_ao_biblio, - dochead_make_aa, - dochead_meta_aa, + dochead_make, + dochead_meta, fn_src, opt_action_bool ); @@ -392,7 +407,7 @@ output.hub( **** scope (on loop exit) :scope:exit: -#+NAME: sdp_each_file_do +#+NAME: sdp_each_file_do_scope_exit #+BEGIN_SRC d scope(exit) { debug(checkdoc) { @@ -401,7 +416,7 @@ scope(exit) { fn_src ); } - destroy(sourcefile_content); + destroy(content_body); destroy(t); destroy(doc_ao_contents); // destroy(doc_ao_make_aa); @@ -422,21 +437,18 @@ break; #+END_SRC * tangles (code structure) :tangle: -** sdp :sdp.d: -*** TODO src/sdp.d +** TODO sdp src/sdp.d :sdp.d: #+BEGIN_SRC d :tangle ../src/sdp.d :shebang #!/usr/bin/env rdmd /+ sdp - sdp.d +/ <<imports_sdp>> <<imports_sdlang>> <<imports_std>> <<sdp_output_selection>> <<sdp_version_mixin>> -mixin CompileTimeInfo; -mixin RgxInit; +<<std_mixins>> /++ A SiSU document parser writen in D. +/ void main(string[] args) { <<sdp_mixin>> @@ -444,7 +456,14 @@ void main(string[] args) { <<sdp_conf_files>> foreach(fn_src; fns_src) { if (!empty(fn_src)) { - <<sdp_each_file_do>> + <<sdp_each_file_do_scope>> + <<sdp_each_file_do_read_sisu_markup_file>> + <<sdp_each_file_do_split_sisu_markup_file_content_into_header_and_body>> + <<sdp_each_file_do_split_sisu_markup_file_header_into_make_and_meta>> + <<sdp_each_file_do_document_abstraction>> + <<sdp_each_file_do_debugs_checkdoc>> + <<sdp_each_file_do_selected_output>> + <<sdp_each_file_do_scope_exit>> } else { <<sdp_no_filename_provided>> } @@ -640,12 +659,12 @@ democratizing_innovation.eric_von_hippel.sst #+END_SRC ** read markup files -**** regular .sst +*** regular .sst relatively straight forward -**** master .ssm +*** master .ssm master files have been able to read in inser files .ssi and regular files .sst -***** reading in .ssi files is straightforward -***** reading in .sst files is more problematic +**** reading in .ssi files is straightforward +**** reading in .sst files is more problematic .sst files have their own root (structure) either - the root needs to be disabled - not used |