/
BasedOnTransform.ts
29 lines (26 loc) · 1.06 KB
/
BasedOnTransform.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
export class BasedOnTransform implements StyleTransformStrategy {
IDMLAttr: string = '@_BasedOn';
transform(jsonObj: object, propName: string): object {
//throw new Error("Method not implemented.");
return {jsonObj, propName}
}
// Extract substring from first slash in given string
// and if substring contains '$ID/', then return substring after '$ID/'
extractSubstring(str: string): string {
const index = str.indexOf('/');
if(str.substring(index + 1).indexOf('$ID') > -1) {
return str.substring(index + 1).substring(str.substring(index + 1).indexOf('$ID/') + 4);
}
return str.substring(index + 1);
}
transformV2(jsonObj: any, propName: string): object {
let style: object = {};
if (propName !== this.IDMLAttr) return {};
console.log("jsonObj[propName]=>", jsonObj[propName])
const basedOnPropsName = this.extractSubstring(jsonObj[propName]);
style = {
[this.IDMLAttr]: unescape(basedOnPropsName),
}
return style
}
}