diff options
Diffstat (limited to 'src/sdp/ao/conf_make_meta.d')
-rw-r--r-- | src/sdp/ao/conf_make_meta.d | 47 |
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; + } +} |