aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp/ao/conf_make_meta.d
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2017-05-09 13:01:06 -0400
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:14 -0400
commit60d6073bcfc4fa91253428094813de0dac41a2b4 (patch)
treecef8e223469724d9e42dea81d6ded5ffc75a9be2 /src/sdp/ao/conf_make_meta.d
parentmodules, collective imports (diff)
0.16.0 files/modules re-arrangeddoc-reform_v0.0.16
Diffstat (limited to 'src/sdp/ao/conf_make_meta.d')
-rw-r--r--src/sdp/ao/conf_make_meta.d47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/sdp/ao/conf_make_meta.d b/src/sdp/ao/conf_make_meta.d
new file mode 100644
index 0000000..0f6d27d
--- /dev/null
+++ b/src/sdp/ao/conf_make_meta.d
@@ -0,0 +1,47 @@
+/++
+ extract native/orig header return associative array<BR>
+
+ the header is passed as text (lopped off top of a sisu markup file until the
+ required first heading ^A~), determine whether is a native header or sdlang one
+ with a regex check if whether it contains the "native header" required tag/field
+ @title: then process accordingly as a "native header" or "sdlang header"
+ converting the metadata and make instructions to a common json format used by
+ program internally. Moved to associative array.
++/
+module sdp.ao.conf_make_meta;
+template SiSUheaderExtractHub() {
+ import
+ std.exception,
+ std.regex,
+ std.stdio,
+ std.traits,
+ std.typecons,
+ std.utf,
+ std.conv : to;
+ import sdlang;
+ import
+ sdp.ao.conf_make_meta_native,
+ sdp.ao.conf_make_meta_sdlang,
+ sdp.ao.rgx;
+ mixin SiSUrgxInit;
+ mixin SiSUheaderExtractNative;
+ mixin SiSUheaderExtractSDLang;
+ auto rgx = Rgx();
+ auto SiSUheaderExtractHub(Src, DocMake)(
+ Src header_src,
+ DocMake conf_doc_make_aa
+ ) {
+ debug(asserts){
+ static assert(is(typeof(header_src) == char[]));
+ static assert(is(typeof(conf_doc_make_aa) == string[string][string]));
+ }
+ auto head_native = HeaderDocMetadataAndMakeNativeToAA();
+ auto head_sdlang = HeaderExtractSDL();
+ auto header_make_and_meta_tuple = (header_src.match(rgx.native_header_meta_title))
+ ? (head_native.headerNativeToAA(header_src))
+ : (head_sdlang.headerSDLangToAA(header_src, conf_doc_make_aa));
+ static assert(!isTypeTuple!(header_make_and_meta_tuple));
+ static assert(header_make_and_meta_tuple.length==2);
+ return header_make_and_meta_tuple;
+ }
+}