diff options
Diffstat (limited to 'src/doc_reform/io_out/hub.d')
-rw-r--r-- | src/doc_reform/io_out/hub.d | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/src/doc_reform/io_out/hub.d b/src/doc_reform/io_out/hub.d new file mode 100644 index 0000000..8de07d8 --- /dev/null +++ b/src/doc_reform/io_out/hub.d @@ -0,0 +1,135 @@ +/++ + output hub<BR> + check & generate output types requested ++/ +module doc_reform.io_out.hub; +template outputHub() { + import doc_reform.io_out, + doc_reform.io_out.xmls, + doc_reform.io_out.odt, + doc_reform.io_out.create_zip_file, + doc_reform.io_out.paths_output; + import std.parallelism; + void outputHub(D,I)(const D doc_abstraction, I doc_matters) { + mixin spineOutputRgxInit; + mixin Msg; + auto msg = Msg!()(doc_matters); + static auto rgx = Rgx(); + enum outTask { source_or_pod, sqlite, sqlite_multi, latex, odt, epub, html_scroll, html_seg, html_stuff } + void Scheduled(D,I)(int sched, D doc_abstraction, I doc_matters) { + auto msg = Msg!()(doc_matters); + if (sched == outTask.source_or_pod) { + if (doc_matters.opt.action.source) { + msg.v("spine (doc reform) source processing... "); + } + if (doc_matters.opt.action.pod) { + msg.v("spine (doc reform) source pod processing... "); + } + import doc_reform.io_out.source_pod; + spinePod!()(doc_matters); + if (doc_matters.opt.action.source) { + msg.vv("spine (doc reform) source done"); + } + if (doc_matters.opt.action.pod) { + msg.vv("spine (doc reform) source pod done"); + } + } + if (sched == outTask.epub) { + msg.v("epub3 processing... "); + import doc_reform.io_out.epub3; + doc_abstraction.outputEPub3!()(doc_matters); + msg.vv("epub3 done"); + } + if (sched == outTask.html_scroll) { + msg.v("html scroll processing... "); + import doc_reform.io_out.html; + outputHTML!().scroll(doc_abstraction, doc_matters); + msg.vv("html scroll done"); + } + if (sched == outTask.html_seg) { + msg.v("html seg processing... "); + import doc_reform.io_out.html; + outputHTML!().seg(doc_abstraction, doc_matters); + msg.vv("html seg done"); + } + if (sched == outTask.html_stuff) { + import doc_reform.io_out.html; + outputHTML!().css(doc_matters); + outputHTML!().images_cp(doc_matters); + msg.vv("html css & images done"); + } + if (sched == outTask.latex) { + msg.v("latex processing... (available for downstream processing & pdf output"); + import doc_reform.io_out.latex; + outputLaTeX!()(doc_abstraction, doc_matters); + msg.vv("latex done"); + } + if (sched == outTask.odt) { + msg.v("odf:odt processing... "); + import doc_reform.io_out.odt; + outputODT!()(doc_abstraction, doc_matters); + msg.vv("odf:odt done"); + } + if (sched == outTask.sqlite) { + msg.v("sqlite processing... "); + import doc_reform.io_out.sqlite; + doc_abstraction.SQLiteHubDiscreteBuildTablesAndPopulate!()(doc_matters); + msg.vv("sqlite done"); + } + } + if (!(doc_matters.opt.action.quiet)) { + writeln(" ", doc_matters.src.filename_base); + } + if (!(doc_matters.opt.action.parallelise_subprocesses)) { + foreach(schedule; doc_matters.opt.action.output_task_scheduler) { + Scheduled!()(schedule, doc_abstraction, doc_matters); + } + } else { + foreach(schedule; parallel(doc_matters.opt.action.output_task_scheduler)) { + Scheduled!()(schedule, doc_abstraction, doc_matters); + } + } + if (doc_matters.opt.action.sqlite_update) { + msg.v("sqlite update processing..."); + import doc_reform.io_out.sqlite; + doc_abstraction.SQLiteHubBuildTablesAndPopulate!()(doc_matters); + msg.vv("sqlite update done"); + } else if (doc_matters.opt.action.sqlite_delete) { + msg.v("sqlite delete processing..."); + import doc_reform.io_out.sqlite; + doc_abstraction.SQLiteHubBuildTablesAndPopulate!()(doc_matters); + msg.vv("sqlite delete done"); + } + } +} +template outputHubOp() { + import doc_reform.io_out, + doc_reform.io_out.xmls, + doc_reform.io_out.odt, + doc_reform.io_out.create_zip_file, + doc_reform.io_out.paths_output; + void outputHubOp(E,O)(E env, O opt_action) { + mixin spineOutputRgxInit; + static auto rgx = Rgx(); + if ((opt_action.sqlite_db_drop)) { + if ((opt_action.verbose)) { + writeln("sqlite drop db..."); + } + import doc_reform.io_out.sqlite; + SQLiteDbDrop!()(opt_action); + if ((opt_action.very_verbose)) { + writeln("sqlite drop db done"); + } + } + if ((opt_action.sqlite_db_create)) { + if ((opt_action.verbose)) { + writeln("sqlite create table..."); + } + import doc_reform.io_out.sqlite; + SQLiteTablesCreate!()(env, opt_action); + if ((opt_action.very_verbose)) { + writeln("sqlite create table done"); + } + } + } +} |