aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp/ao/conf_make_meta.d
diff options
context:
space:
mode:
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;
+ }
+}