/++ output hub
check & generate output types requested +/ module sdp.ao.composite_make; template compositeMkCnf() { import sdp.ao; 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
check & generate output types requested +/ template compositeMkCnfAA() { import sdp.ao; 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; } }