diff options
Diffstat (limited to 'src/sdp/meta/composite_make.d')
-rw-r--r-- | src/sdp/meta/composite_make.d | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/src/sdp/meta/composite_make.d b/src/sdp/meta/composite_make.d new file mode 100644 index 0000000..dc28206 --- /dev/null +++ b/src/sdp/meta/composite_make.d @@ -0,0 +1,109 @@ +/++ + output hub<BR> + check & generate output types requested ++/ +module sdp.meta.composite_make; +template compositeMkCnf() { + import sdp.meta; + import std.array; + mixin SiSUrgxInit; + string[] _substitutions; + string[string][] _sub; + string _bold; + string _italics; + string _emphasis; + auto compositeMkCnf(Mks...)(Mks makes) { + foreach (make; makes) { + auto rgx = Rgx(); + if (auto z = "make" in make) { + if (auto x = "substitute" in *z) { + foreach (m; (*x).matchAll(rgx.make_simple_substitutions_d)) { + _sub ~= ["match": (m["match"]), "replace": (m["replace"])]; + _substitutions ~= format("`%s`,\"%s\"", + m["match"], + m["replace"], + ); + } + foreach (m; (*x).matchAll(rgx.make_simple_substitutions_rb)) { + _sub ~= ["match": (m["match"]), "replace": (m["replace"])]; + _substitutions ~= format("`%s`,\"%s\"", + m["match"], + m["replace"], + ); + } + } + if (auto x = "bold" in *z) { + _bold = (*x).to!string; + } + if (auto x = "italics" in *z) { + _italics = (*x).to!string; + } + if (auto x = "emphasis" in *z) { + _emphasis = (*x).to!string; + } + } + } + struct _composite_make { + auto substitutions() { + auto _k = _sub; + return _k; + } + auto substitute() { + auto _k = _substitutions; + return _k; + } + auto italics() { + auto _k = _italics; + return _k; + } + auto bold() { + auto _k = _bold; + return _k; + } + auto emphasis() { + auto _k = _emphasis; + return _k; + } + } + return _composite_make(); + } +} +/++ + output hub<BR> + check & generate output types requested ++/ +template compositeMkCnfAA() { + import sdp.meta; + import std.array; + mixin SiSUrgxInit; + string[] _substitutions; + string[string][] _sub; + auto rgx = Rgx(); + auto compositeMkCnfAA(Mks...)(Mks makes) { + /+ + - skip.first_make which is the "composite make output" + - pass config files as associative arrays, + - skip.last_make which is getopt, treat separately + +/ + auto _composite_make = makes[0]; + auto _opts = makes[$-1]; + foreach (make; makes[1..$-1]) { + if (auto z = "make" in make) { // document head: make (part of individual document) + if (auto x = "substitute" in *z) { + _composite_make["make"]["substitute"] = *x; + } + if (auto x = "italics" in *z) { + _composite_make["make"]["italics"] = *x; + } + if (auto x = "bold" in *z) { + _composite_make["make"]["bold"] = *x; + } + if (auto x = "emphasis" in *z) { + _composite_make["make"]["emphasis"] = *x; + } + } + } + /+ logic for adding _opts make instructions to _composite make +/ + return _composite_make; + } +} |