aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp/abstraction.d
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2017-01-29 11:57:41 -0500
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:14 -0400
commitc8c141d8abf715c9a697d2e3dd949d4621cfea7b (patch)
tree7124b76ac74734dbe9265151a874822c70eef12f /src/sdp/abstraction.d
parentdefaults org, reorganize (diff)
0.12.1 abstraction template
Diffstat (limited to 'src/sdp/abstraction.d')
-rw-r--r--src/sdp/abstraction.d121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/sdp/abstraction.d b/src/sdp/abstraction.d
new file mode 100644
index 0000000..d91618e
--- /dev/null
+++ b/src/sdp/abstraction.d
@@ -0,0 +1,121 @@
+template SiSUabstraction() {
+ /+ sdp: sisu document parser, see http://sisudoc.org +/
+ import
+ ao_abstract_doc_source,
+ ao_conf_make_meta,
+ ao_conf_make_meta_native,
+ ao_conf_make_meta_sdlang,
+ ao_defaults,
+ ao_output_debugs,
+ ao_read_config_files,
+ ao_read_source_files,
+ ao_rgx,
+ output_hub;
+ /+ sdlang http://sdlang.org +/
+ import sdlang; // sdlang.d
+ /+ std +/
+ private import
+ std.algorithm,
+ std.array,
+ std.container,
+ std.exception,
+ std.getopt,
+ std.json,
+ std.process,
+ std.stdio,
+ std.file,
+ std.path,
+ std.range,
+ std.regex,
+ std.string,
+ std.traits,
+ std.typecons,
+ std.utf,
+ std.conv : to;
+ mixin SiSUrgxInit;
+ mixin SiSUregisters;
+ mixin SiSUheaderExtractSDLang;
+ mixin SiSUnode;
+ mixin SiSUbiblio;
+ mixin SiSUrgxInitFlags;
+ mixin outputHub;
+ // auto sdl_root_configuration = ConfigHub!()("conf.sdl", env);
+ // auto sdl_root_doc_make = ConfigHub!()("sisu_document_make", env);
+ // auto confsdl = HeaderExtractSDL();
+ // auto conf_settings_aa = confsdl.configSettingsSDLangToAAmake(sdl_root_configuration);
+ // auto conf_doc_make_aa = confsdl.documentMakeSDLangToAAmake(sdl_root_doc_make);
+ auto rgx = Rgx();
+ auto SiSUabstraction(Fn,O,E)(Fn fn_src, O opts, E env){
+ auto sdl_root_configuration = ConfigHub!()("conf.sdl", env);
+ auto sdl_root_doc_make = ConfigHub!()("sisu_document_make", env);
+ auto confsdl = HeaderExtractSDL();
+ auto conf_settings_aa = confsdl.configSettingsSDLangToAAmake(sdl_root_configuration);
+ auto conf_doc_make_aa = confsdl.documentMakeSDLangToAAmake(sdl_root_doc_make);
+ /+ ↓ read file (filename with path) +/
+ /+ ↓ file tuple of header and content +/
+ auto _0_header_1_body_content_2_insert_filelist_tuple =
+ SiSUmarkupRaw!()(fn_src);
+ static assert(!isTypeTuple!(_0_header_1_body_content_2_insert_filelist_tuple));
+ static assert(_0_header_1_body_content_2_insert_filelist_tuple.length==3);
+ debug(header_and_body) {
+ writeln(header);
+ writeln(_0_header_1_body_content_2_insert_filelist_tuple.length);
+ writeln(_0_header_1_body_content_2_insert_filelist_tuple.length[1][0]);
+ }
+ /+ ↓ split header into make and meta +/
+ auto _0_make_1_dochead_meta_tuple =
+ SiSUheaderExtractHub!()(_0_header_1_body_content_2_insert_filelist_tuple[0], conf_doc_make_aa);
+ static assert(!isTypeTuple!(_0_make_1_dochead_meta_tuple));
+ static assert(_0_make_1_dochead_meta_tuple.length==2);
+ /+ ↓ document abstraction: process document, return abstraction as tuple +/
+ auto da = SiSUdocAbstraction!()(
+ (_0_header_1_body_content_2_insert_filelist_tuple[1]),
+ (_0_make_1_dochead_meta_tuple[0]),
+ (_0_make_1_dochead_meta_tuple[1]),
+ opts
+ );
+ static assert(!isTypeTuple!(da));
+ static assert(da.length==3);
+ auto doc_abstraction = da[0]; // head ~ toc ~ contents ~ endnotes_seg ~ glossary ~ bibliography ~ bookindex ~blurb;
+ string[][string] _document_section_keys_sequenced = da[1];
+ string[] _doc_html_segnames = da[2];
+ struct DocumentMatters {
+ string[] keys_seq_seg() {
+ string[] _k = _document_section_keys_sequenced["seg"];
+ return _k;
+ }
+ string[] keys_seq_scroll() {
+ string[] _k = _document_section_keys_sequenced["scroll"];
+ return _k;
+ }
+ string[] segnames() {
+ string[] _k = _doc_html_segnames;
+ return _k;
+ }
+ auto dochead_make() {
+ string[string][string] _k = _0_make_1_dochead_meta_tuple[0];
+ return _k;
+ }
+ auto dochead_meta() {
+ string[string][string] _k = _0_make_1_dochead_meta_tuple[1];
+ return _k;
+ }
+ auto source_filename() {
+ string _k = fn_src;
+ return _k;
+ }
+ auto file_insert_list() {
+ string[] _k = _0_header_1_body_content_2_insert_filelist_tuple[2];
+ return _k;
+ }
+ auto opt_action_bool() {
+ bool[string] _k = opts;
+ return _k;
+ }
+ }
+ auto doc_matters = DocumentMatters();
+ auto t = tuple(doc_abstraction, doc_matters);
+ static assert(t.length==2);
+ return t;
+ }
+}