37 lines
992 B
TypeScript
37 lines
992 B
TypeScript
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||
|
|
//@ts-ignore
|
||
|
|
import widgetPropertyFns from "!!raw-loader!./derived.js";
|
||
|
|
|
||
|
|
// TODO(abhinav):
|
||
|
|
// Add unit test cases
|
||
|
|
// Handle edge cases
|
||
|
|
// Error out on wrong values
|
||
|
|
const derivedProperties: any = {};
|
||
|
|
// const regex = /(\w+):\s?\(props\)\s?=>\s?{([\w\W]*?)},/gim;
|
||
|
|
const regex = /(\w+):\s?\(props, moment, _\)\s?=>\s?{([\w\W\n]*?)},\n?\s+?\/\//gim;
|
||
|
|
|
||
|
|
let m;
|
||
|
|
|
||
|
|
while ((m = regex.exec((widgetPropertyFns as unknown) as string)) !== null) {
|
||
|
|
// This is necessary to avoid infinite loops with zero-width matches
|
||
|
|
if (m.index === regex.lastIndex) {
|
||
|
|
regex.lastIndex++;
|
||
|
|
}
|
||
|
|
|
||
|
|
let key = "";
|
||
|
|
// The result can be accessed through the `m`-variable.
|
||
|
|
m.forEach((match, groupIndex) => {
|
||
|
|
if (groupIndex === 1) {
|
||
|
|
key = match;
|
||
|
|
}
|
||
|
|
if (groupIndex === 2) {
|
||
|
|
derivedProperties[key] = match
|
||
|
|
.trim()
|
||
|
|
.replace(/\n/g, "")
|
||
|
|
.replace(/props\./g, "this.");
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
export default derivedProperties;
|