Last active
August 15, 2020 13:05
-
-
Save jackarmley/2d02b0f5e3de6cf09d1fa473fc59c1a5 to your computer and use it in GitHub Desktop.
Recursive classname function: JS Bin// source https://jsbin.com/yivacan
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width"> | |
<title>JS Bin</title> | |
</head> | |
<body> | |
<script id="jsbin-javascript"> | |
"use strict"; | |
var string = "hello"; | |
var bool = true; | |
var array = ["what", "who"]; | |
var obj = { | |
small: { | |
top: "six", | |
left: "theee", | |
what: { | |
left: "two", | |
bottom: "ten" | |
} | |
}, | |
large: { | |
top: "ten" | |
}, | |
top: "twelve" | |
}; | |
var obj2 = { | |
left: "one", | |
top: "three" | |
}; | |
var arrobj = { | |
left: ["one", "two"], | |
top: ["three", "four"], | |
}; | |
var arr = ["one", "two"]; | |
function eachRecursive(obj, prefix, nonen) { | |
var arr = []; | |
var objIsArray = Array.isArray(obj); | |
Object.getOwnPropertyNames(obj).forEach(function (val) { | |
if (typeof obj[val] == "object" && obj[val] !== null) { | |
arr.push(eachRecursive(obj[val], prefix, val)); | |
} | |
else { | |
var classArr = [ | |
prefix | |
].concat((nonen ? [nonen] : []), (objIsArray ? [] : [val]), [ | |
obj[val] | |
]); | |
// Don't push if the array contains the array index | |
typeof obj[val] !== 'number' && arr.push(classArr.join('-')); | |
} | |
}); | |
return arr.join(' '); | |
} | |
; | |
var makeClass = function (obj, prefix) { | |
var objType = typeof obj; | |
var classStr; | |
if (objType == "string") { | |
return prefix + "-" + obj; | |
} | |
else if (objType == "boolean") { | |
return "" + prefix; | |
} | |
else { | |
return eachRecursive(obj, prefix); | |
} | |
}; | |
console.log(makeClass(bool, 'prefix')); | |
console.log(makeClass(string, 'prefix')); | |
console.log(makeClass(obj, 'prefix')); | |
console.log(makeClass(obj2, 'prefix')); | |
console.log(makeClass(arrobj, 'prefix')); | |
console.log(makeClass(arr, 'prefix')); | |
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNiaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsSUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixJQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixJQUFNLEdBQUcsR0FBRztJQUNYLEtBQUssRUFBRTtRQUNOLEdBQUcsRUFBRSxLQUFLO1FBQ1IsSUFBSSxFQUFFLE9BQU87UUFDYixJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsS0FBSztZQUNYLE1BQU0sRUFBRSxLQUFLO1NBQ2Q7S0FDSDtJQUNELEtBQUssRUFBRTtRQUNMLEdBQUcsRUFBRSxLQUFLO0tBQ1g7SUFDRCxHQUFHLEVBQUUsUUFBUTtDQUNiLENBQUM7QUFFRixJQUFNLElBQUksR0FBRztJQUNYLElBQUksRUFBRSxLQUFLO0lBQ1gsR0FBRyxFQUFFLE9BQU87Q0FDYixDQUFBO0FBRUQsSUFBTSxNQUFNLEdBQUc7SUFDYixJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQ3BCLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7Q0FDdkIsQ0FBQTtBQUVELElBQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRzNCLHVCQUF1QixHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUs7SUFDckMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2IsSUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUNyQyxVQUFVLEdBQUc7UUFDWCxFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDckQsR0FBRyxDQUFDLElBQUksQ0FBRSxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBRSxDQUFDO1FBQ25ELENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLElBQUksUUFBUSxHQUFHO2dCQUNiLE1BQU07cUJBQ0gsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFDdEIsQ0FBQyxVQUFVLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzVCLEdBQUcsQ0FBQyxHQUFHLENBQUM7Y0FDVCxDQUFDO1lBRUYsbURBQW1EO1lBQ25ELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQyxDQUNGLENBQUM7SUFHRixNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVyQixDQUFDO0FBQUEsQ0FBQztBQUVGLElBQU0sU0FBUyxHQUFHLFVBQUMsR0FBRyxFQUFFLE1BQU07SUFDNUIsSUFBTSxPQUFPLEdBQUcsT0FBTyxHQUFHLENBQUM7SUFDM0IsSUFBSSxRQUFRLENBQUM7SUFFYixFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN4QixNQUFNLENBQUksTUFBTSxTQUFJLEdBQUssQ0FBQztJQUM1QixDQUFDO0lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxLQUFHLE1BQVEsQ0FBQztJQUNyQixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBSUQsT0FBTyxDQUFDLEdBQUcsQ0FBRSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFFLENBQUM7QUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBRSxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFFLENBQUM7QUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBRSxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFFLENBQUM7QUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBRSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFFLENBQUM7QUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBRSxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFFLENBQUM7QUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBRSxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzdHJpbmcgPSBcImhlbGxvXCI7XG5jb25zdCBib29sID0gdHJ1ZTtcbmNvbnN0IGFycmF5ID0gW1wid2hhdFwiLCBcIndob1wiXTtcbmNvbnN0IG9iaiA9IHtcbiBzbWFsbDoge1xuIFx0dG9wOiBcInNpeFwiLFxuICAgIGxlZnQ6IFwidGhlZWVcIixcbiAgICB3aGF0OiB7XG4gICAgICBsZWZ0OiBcInR3b1wiLFxuICAgICAgYm90dG9tOiBcInRlblwiXG4gICAgfVxuIH0sXG4gbGFyZ2U6IHtcbiAgIHRvcDogXCJ0ZW5cIlxuIH0sXG4gdG9wOiBcInR3ZWx2ZVwiXG59O1xuXG5jb25zdCBvYmoyID0ge1xuICBsZWZ0OiBcIm9uZVwiLFxuICB0b3A6IFwidGhyZWVcIlxufVxuXG5jb25zdCBhcnJvYmogPSB7XG4gIGxlZnQ6IFtcIm9uZVwiLCBcInR3b1wiXSxcbiAgdG9wOiBbXCJ0aHJlZVwiLCBcImZvdXJcIl0sXG59XG5cbmNvbnN0IGFyciA9IFtcIm9uZVwiLCBcInR3b1wiXTtcblxuXG5mdW5jdGlvbiBlYWNoUmVjdXJzaXZlKG9iaiwgcHJlZml4LCBub25lbikge1xuICAgIGxldCBhcnIgPSBbXTsgIFxuICAgIGNvbnN0IG9iaklzQXJyYXkgPSBBcnJheS5pc0FycmF5KG9iaik7XG4gIFxuT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5mb3JFYWNoKFxuICBmdW5jdGlvbiAodmFsKSB7XG4gICAgaWYgKHR5cGVvZiBvYmpbdmFsXSA9PSBcIm9iamVjdFwiICYmIG9ialt2YWxdICE9PSBudWxsKSB7XG4gICAgICBhcnIucHVzaCggZWFjaFJlY3Vyc2l2ZShvYmpbdmFsXSwgcHJlZml4LCB2YWwpICk7IFxuICAgIH0gZWxzZSB7ICAgICAgXG4gICAgICBsZXQgY2xhc3NBcnIgPSBbXG4gICAgICAgIHByZWZpeCwgXG4gICAgICAgIC4uLihub25lbiA/IFtub25lbl0gOiBbXSksXG4gICAgICAgIC4uLihvYmpJc0FycmF5ID8gW10gOiBbdmFsXSksXG4gICAgICAgIG9ialt2YWxdXG4gICAgICBdO1xuICAgICAgICAgICAgXG4gICAgICAvLyBEb24ndCBwdXNoIGlmIHRoZSBhcnJheSBjb250YWlucyB0aGUgYXJyYXkgaW5kZXhcbiAgICAgIHR5cGVvZiBvYmpbdmFsXSAhPT0gJ251bWJlcicgJiYgYXJyLnB1c2goY2xhc3NBcnIuam9pbignLScpKTsgICAgICBcbiAgICB9XG4gIH1cbik7XG4gIFxuXG5yZXR1cm4gYXJyLmpvaW4oJyAnKTtcblxufTtcblxuY29uc3QgbWFrZUNsYXNzID0gKG9iaiwgcHJlZml4KSA9PiB7XG4gIGNvbnN0IG9ialR5cGUgPSB0eXBlb2Ygb2JqO1xuICBsZXQgY2xhc3NTdHI7XG4gIFxuICBpZiAob2JqVHlwZSA9PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0tJHtvYmp9YDtcbiAgfSBlbHNlIGlmIChvYmpUeXBlID09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH1gO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBlYWNoUmVjdXJzaXZlKG9iaiwgcHJlZml4KTtcbiAgfVxufVxuICBcbiAgXG4gXG5jb25zb2xlLmxvZyggbWFrZUNsYXNzKGJvb2wsICdwcmVmaXgnKSApOyBcbmNvbnNvbGUubG9nKCBtYWtlQ2xhc3Moc3RyaW5nLCAncHJlZml4JykgKTtcbmNvbnNvbGUubG9nKCBtYWtlQ2xhc3Mob2JqLCAncHJlZml4JykgKTtcbmNvbnNvbGUubG9nKCBtYWtlQ2xhc3Mob2JqMiwgJ3ByZWZpeCcpICk7XG5jb25zb2xlLmxvZyggbWFrZUNsYXNzKGFycm9iaiwgJ3ByZWZpeCcpICk7XG5jb25zb2xlLmxvZyggbWFrZUNsYXNzKGFyciwgJ3ByZWZpeCcpICk7Il19 | |
</script> | |
<script id="jsbin-source-javascript" type="text/javascript">const string = "hello"; | |
const bool = true; | |
const array = ["what", "who"]; | |
const obj = { | |
small: { | |
top: "six", | |
left: "theee", | |
what: { | |
left: "two", | |
bottom: "ten" | |
} | |
}, | |
large: { | |
top: "ten" | |
}, | |
top: "twelve" | |
}; | |
const obj2 = { | |
left: "one", | |
top: "three" | |
} | |
const arrobj = { | |
left: ["one", "two"], | |
top: ["three", "four"], | |
} | |
const arr = ["one", "two"]; | |
function eachRecursive(obj, prefix, nonen) { | |
let arr = []; | |
const objIsArray = Array.isArray(obj); | |
Object.getOwnPropertyNames(obj).forEach( | |
function (val) { | |
if (typeof obj[val] == "object" && obj[val] !== null) { | |
arr.push( eachRecursive(obj[val], prefix, val) ); | |
} else { | |
let classArr = [ | |
prefix, | |
...(nonen ? [nonen] : []), | |
...(objIsArray ? [] : [val]), | |
obj[val] | |
]; | |
// Don't push if the array contains the array index | |
typeof obj[val] !== 'number' && arr.push(classArr.join('-')); | |
} | |
} | |
); | |
return arr.join(' '); | |
}; | |
const makeClass = (obj, prefix) => { | |
const objType = typeof obj; | |
let classStr; | |
if (objType == "string") { | |
return `${prefix}-${obj}`; | |
} else if (objType == "boolean") { | |
return `${prefix}`; | |
} else { | |
return eachRecursive(obj, prefix); | |
} | |
} | |
console.log( makeClass(bool, 'prefix') ); | |
console.log( makeClass(string, 'prefix') ); | |
console.log( makeClass(obj, 'prefix') ); | |
console.log( makeClass(obj2, 'prefix') ); | |
console.log( makeClass(arrobj, 'prefix') ); | |
console.log( makeClass(arr, 'prefix') ); | |
</script></body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"use strict"; | |
var string = "hello"; | |
var bool = true; | |
var array = ["what", "who"]; | |
var obj = { | |
small: { | |
top: "six", | |
left: "theee", | |
what: { | |
left: "two", | |
bottom: "ten" | |
} | |
}, | |
large: { | |
top: "ten" | |
}, | |
top: "twelve" | |
}; | |
var obj2 = { | |
left: "one", | |
top: "three" | |
}; | |
var arrobj = { | |
left: ["one", "two"], | |
top: ["three", "four"], | |
}; | |
var arr = ["one", "two"]; | |
function eachRecursive(obj, prefix, nonen) { | |
var arr = []; | |
var objIsArray = Array.isArray(obj); | |
Object.getOwnPropertyNames(obj).forEach(function (val) { | |
if (typeof obj[val] == "object" && obj[val] !== null) { | |
arr.push(eachRecursive(obj[val], prefix, val)); | |
} | |
else { | |
var classArr = [ | |
prefix | |
].concat((nonen ? [nonen] : []), (objIsArray ? [] : [val]), [ | |
obj[val] | |
]); | |
// Don't push if the array contains the array index | |
typeof obj[val] !== 'number' && arr.push(classArr.join('-')); | |
} | |
}); | |
return arr.join(' '); | |
} | |
; | |
var makeClass = function (obj, prefix) { | |
var objType = typeof obj; | |
var classStr; | |
if (objType == "string") { | |
return prefix + "-" + obj; | |
} | |
else if (objType == "boolean") { | |
return "" + prefix; | |
} | |
else { | |
return eachRecursive(obj, prefix); | |
} | |
}; | |
console.log(makeClass(bool, 'prefix')); | |
console.log(makeClass(string, 'prefix')); | |
console.log(makeClass(obj, 'prefix')); | |
console.log(makeClass(obj2, 'prefix')); | |
console.log(makeClass(arrobj, 'prefix')); | |
console.log(makeClass(arr, 'prefix')); | |
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNiaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsSUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixJQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixJQUFNLEdBQUcsR0FBRztJQUNYLEtBQUssRUFBRTtRQUNOLEdBQUcsRUFBRSxLQUFLO1FBQ1IsSUFBSSxFQUFFLE9BQU87UUFDYixJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsS0FBSztZQUNYLE1BQU0sRUFBRSxLQUFLO1NBQ2Q7S0FDSDtJQUNELEtBQUssRUFBRTtRQUNMLEdBQUcsRUFBRSxLQUFLO0tBQ1g7SUFDRCxHQUFHLEVBQUUsUUFBUTtDQUNiLENBQUM7QUFFRixJQUFNLElBQUksR0FBRztJQUNYLElBQUksRUFBRSxLQUFLO0lBQ1gsR0FBRyxFQUFFLE9BQU87Q0FDYixDQUFBO0FBRUQsSUFBTSxNQUFNLEdBQUc7SUFDYixJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQ3BCLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7Q0FDdkIsQ0FBQTtBQUVELElBQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRzNCLHVCQUF1QixHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUs7SUFDckMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2IsSUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUNyQyxVQUFVLEdBQUc7UUFDWCxFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDckQsR0FBRyxDQUFDLElBQUksQ0FBRSxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBRSxDQUFDO1FBQ25ELENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLElBQUksUUFBUSxHQUFHO2dCQUNiLE1BQU07cUJBQ0gsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFDdEIsQ0FBQyxVQUFVLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzVCLEdBQUcsQ0FBQyxHQUFHLENBQUM7Y0FDVCxDQUFDO1lBRUYsbURBQW1EO1lBQ25ELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQyxDQUNGLENBQUM7SUFHRixNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVyQixDQUFDO0FBQUEsQ0FBQztBQUVGLElBQU0sU0FBUyxHQUFHLFVBQUMsR0FBRyxFQUFFLE1BQU07SUFDNUIsSUFBTSxPQUFPLEdBQUcsT0FBTyxHQUFHLENBQUM7SUFDM0IsSUFBSSxRQUFRLENBQUM7SUFFYixFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN4QixNQUFNLENBQUksTUFBTSxTQUFJLEdBQUssQ0FBQztJQUM1QixDQUFDO0lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxLQUFHLE1BQVEsQ0FBQztJQUNyQixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBSUQsT0FBTyxDQUFDLEdBQUcsQ0FBRSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFFLENBQUM7QUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBRSxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFFLENBQUM7QUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBRSxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFFLENBQUM7QUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBRSxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFFLENBQUM7QUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBRSxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFFLENBQUM7QUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBRSxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzdHJpbmcgPSBcImhlbGxvXCI7XG5jb25zdCBib29sID0gdHJ1ZTtcbmNvbnN0IGFycmF5ID0gW1wid2hhdFwiLCBcIndob1wiXTtcbmNvbnN0IG9iaiA9IHtcbiBzbWFsbDoge1xuIFx0dG9wOiBcInNpeFwiLFxuICAgIGxlZnQ6IFwidGhlZWVcIixcbiAgICB3aGF0OiB7XG4gICAgICBsZWZ0OiBcInR3b1wiLFxuICAgICAgYm90dG9tOiBcInRlblwiXG4gICAgfVxuIH0sXG4gbGFyZ2U6IHtcbiAgIHRvcDogXCJ0ZW5cIlxuIH0sXG4gdG9wOiBcInR3ZWx2ZVwiXG59O1xuXG5jb25zdCBvYmoyID0ge1xuICBsZWZ0OiBcIm9uZVwiLFxuICB0b3A6IFwidGhyZWVcIlxufVxuXG5jb25zdCBhcnJvYmogPSB7XG4gIGxlZnQ6IFtcIm9uZVwiLCBcInR3b1wiXSxcbiAgdG9wOiBbXCJ0aHJlZVwiLCBcImZvdXJcIl0sXG59XG5cbmNvbnN0IGFyciA9IFtcIm9uZVwiLCBcInR3b1wiXTtcblxuXG5mdW5jdGlvbiBlYWNoUmVjdXJzaXZlKG9iaiwgcHJlZml4LCBub25lbikge1xuICAgIGxldCBhcnIgPSBbXTsgIFxuICAgIGNvbnN0IG9iaklzQXJyYXkgPSBBcnJheS5pc0FycmF5KG9iaik7XG4gIFxuT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5mb3JFYWNoKFxuICBmdW5jdGlvbiAodmFsKSB7XG4gICAgaWYgKHR5cGVvZiBvYmpbdmFsXSA9PSBcIm9iamVjdFwiICYmIG9ialt2YWxdICE9PSBudWxsKSB7XG4gICAgICBhcnIucHVzaCggZWFjaFJlY3Vyc2l2ZShvYmpbdmFsXSwgcHJlZml4LCB2YWwpICk7IFxuICAgIH0gZWxzZSB7ICAgICAgXG4gICAgICBsZXQgY2xhc3NBcnIgPSBbXG4gICAgICAgIHByZWZpeCwgXG4gICAgICAgIC4uLihub25lbiA/IFtub25lbl0gOiBbXSksXG4gICAgICAgIC4uLihvYmpJc0FycmF5ID8gW10gOiBbdmFsXSksXG4gICAgICAgIG9ialt2YWxdXG4gICAgICBdO1xuICAgICAgICAgICAgXG4gICAgICAvLyBEb24ndCBwdXNoIGlmIHRoZSBhcnJheSBjb250YWlucyB0aGUgYXJyYXkgaW5kZXhcbiAgICAgIHR5cGVvZiBvYmpbdmFsXSAhPT0gJ251bWJlcicgJiYgYXJyLnB1c2goY2xhc3NBcnIuam9pbignLScpKTsgICAgICBcbiAgICB9XG4gIH1cbik7XG4gIFxuXG5yZXR1cm4gYXJyLmpvaW4oJyAnKTtcblxufTtcblxuY29uc3QgbWFrZUNsYXNzID0gKG9iaiwgcHJlZml4KSA9PiB7XG4gIGNvbnN0IG9ialR5cGUgPSB0eXBlb2Ygb2JqO1xuICBsZXQgY2xhc3NTdHI7XG4gIFxuICBpZiAob2JqVHlwZSA9PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0tJHtvYmp9YDtcbiAgfSBlbHNlIGlmIChvYmpUeXBlID09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH1gO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBlYWNoUmVjdXJzaXZlKG9iaiwgcHJlZml4KTtcbiAgfVxufVxuICBcbiAgXG4gXG5jb25zb2xlLmxvZyggbWFrZUNsYXNzKGJvb2wsICdwcmVmaXgnKSApOyBcbmNvbnNvbGUubG9nKCBtYWtlQ2xhc3Moc3RyaW5nLCAncHJlZml4JykgKTtcbmNvbnNvbGUubG9nKCBtYWtlQ2xhc3Mob2JqLCAncHJlZml4JykgKTtcbmNvbnNvbGUubG9nKCBtYWtlQ2xhc3Mob2JqMiwgJ3ByZWZpeCcpICk7XG5jb25zb2xlLmxvZyggbWFrZUNsYXNzKGFycm9iaiwgJ3ByZWZpeCcpICk7XG5jb25zb2xlLmxvZyggbWFrZUNsYXNzKGFyciwgJ3ByZWZpeCcpICk7Il19 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment