Fix incorrect style selector override.

This commit is contained in:
Belleve Invis 2020-01-13 22:52:06 -08:00
parent 799c5027e7
commit aac909ffe9
2 changed files with 71 additions and 72 deletions

View file

@ -42,7 +42,7 @@ function getParameters(argv) {
const para = parameters.build(parametersData, argv._); const para = parameters.build(parametersData, argv._);
const variantsData = formVariantData(variantData, para); const variantsData = formVariantData(variantData, para);
para.variants = variantsData; para.variants = variantsData;
para.variantSelector = parameters.build(variantsData, argv._); para.variantSelector = parameters.build(variantsData, ["default", ...argv._]);
para.defaultVariant = variantsData.default; para.defaultVariant = variantsData.default;
para.naming = { para.naming = {

View file

@ -1,71 +1,70 @@
const objectAssign = require("object-assign"); const objectAssign = require("object-assign");
function mergeVSHive(_target, source) { function mergeVSHive(_target, source) {
if (!source) return _target; if (!source) return _target;
let __cvmap = objectAssign({}, _target.__cvmap, source.__cvmap); let __cvmap = objectAssign({}, _target.__cvmap, source.__cvmap);
let target = objectAssign(_target, source); let target = objectAssign(_target, source);
target.__cvmap = __cvmap; target.__cvmap = __cvmap;
return target; return target;
} }
function produceComposite(vs, para, dflt, g) { function produceComposite(vs, para, g) {
let sel = objectAssign({}, dflt); let sel = {};
if (g.design) if (g.design)
for (let h of g.design) { for (let h of g.design) {
sel = mergeVSHive(sel, vs[h]); sel = mergeVSHive(sel, vs[h]);
} }
if (!para.isItalic && g.upright) { if (!para.isItalic && g.upright) {
for (let h of g.upright) { for (let h of g.upright) {
sel = mergeVSHive(sel, vs[h]); sel = mergeVSHive(sel, vs[h]);
} }
} }
if (para.isItalic && g.italic) { if (para.isItalic && g.italic) {
for (let h of g.italic) { for (let h of g.italic) {
sel = mergeVSHive(sel, vs[h]); sel = mergeVSHive(sel, vs[h]);
} }
} }
sel.__isComposite = true; sel.__isComposite = true;
return sel; return sel;
} }
module.exports = function formVariantData(data, para) { module.exports = function formVariantData(data, para) {
const vs = {}; const vs = {};
// simple selector // simple selector
for (let k in data.simple) { for (let k in data.simple) {
const hive = objectAssign({}, data.simple[k]); const hive = objectAssign({}, data.simple[k]);
vs[k] = hive; vs[k] = hive;
const tag = hive.tag; const tag = hive.tag;
delete hive.tag; delete hive.tag;
const tagUpright = hive.tagUpright; const tagUpright = hive.tagUpright;
delete hive.tagUpright; delete hive.tagUpright;
const tagItalic = hive.tagItalic; const tagItalic = hive.tagItalic;
delete hive.tagItalic; delete hive.tagItalic;
if (tag) { if (tag) {
let __cvmap = {}; let __cvmap = {};
for (let k in hive) __cvmap[k] = tag; for (let k in hive) __cvmap[k] = tag;
hive.__cvmap = __cvmap; hive.__cvmap = __cvmap;
vs[tag] = hive; vs[tag] = hive;
} else { } else {
if (tagItalic && para.isItalic) { if (tagItalic && para.isItalic) {
let __cvmap = {}; let __cvmap = {};
for (let k in hive) __cvmap[k] = tagItalic; for (let k in hive) __cvmap[k] = tagItalic;
hive.__cvmap = __cvmap; hive.__cvmap = __cvmap;
vs[tagItalic] = hive; vs[tagItalic] = hive;
} }
if (tagUpright && !para.isItalic) { if (tagUpright && !para.isItalic) {
let __cvmap = {}; let __cvmap = {};
for (let k in hive) __cvmap[k] = tagUpright; for (let k in hive) __cvmap[k] = tagUpright;
hive.__cvmap = __cvmap; hive.__cvmap = __cvmap;
vs[tagUpright] = hive; vs[tagUpright] = hive;
} }
} }
} }
// default selector // default selector
vs.default = produceComposite(vs, para, {}, data.default); vs.default = produceComposite(vs, para, data.default);
// ss## selector // ss## selector
for (let k in data.composite) { for (let k in data.composite) vs[k] = produceComposite(vs, para, data.composite[k]);
vs[k] = produceComposite(vs, para, vs.default, data.composite[k]);
} return vs;
return vs; };
};