@fluffjs/cli 0.1.11 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DomPreProcessor.d.ts +1 -0
- package/DomPreProcessor.js +23 -32
- package/TemplateParser.d.ts +1 -0
- package/TemplateParser.js +21 -15
- package/interfaces/BindingInfo.d.ts +4 -0
- package/package.json +1 -1
package/DomPreProcessor.d.ts
CHANGED
package/DomPreProcessor.js
CHANGED
|
@@ -103,54 +103,30 @@ export class DomPreProcessor {
|
|
|
103
103
|
transformAttribute(name, value, subscribeMap) {
|
|
104
104
|
if (name.startsWith('[(') && name.endsWith(')]')) {
|
|
105
105
|
const propName = name.slice(2, -2);
|
|
106
|
-
const bindingObj =
|
|
107
|
-
name: propName, binding: 'two-way', expression: value
|
|
108
|
-
};
|
|
109
|
-
const subscribeTo = subscribeMap.get(propName);
|
|
110
|
-
if (subscribeTo)
|
|
111
|
-
bindingObj.subscribe = subscribeTo;
|
|
112
|
-
const json = JSON.stringify(bindingObj);
|
|
106
|
+
const bindingObj = this.buildBindingObject(propName, 'two-way', value, subscribeMap.get(propName));
|
|
113
107
|
return {
|
|
114
|
-
name: `x-fluff-attrib-${propName.toLowerCase()}`, value:
|
|
108
|
+
name: `x-fluff-attrib-${propName.toLowerCase()}`, value: JSON.stringify(bindingObj)
|
|
115
109
|
};
|
|
116
110
|
}
|
|
117
111
|
if (name.startsWith('[') && name.endsWith(']')) {
|
|
118
112
|
const propName = name.slice(1, -1);
|
|
119
113
|
if (propName.startsWith('class.')) {
|
|
120
114
|
const className = propName.slice(6);
|
|
121
|
-
const bindingObj =
|
|
122
|
-
name: className, binding: 'class', expression: value
|
|
123
|
-
};
|
|
124
|
-
const subscribeTo = subscribeMap.get(propName);
|
|
125
|
-
if (subscribeTo)
|
|
126
|
-
bindingObj.subscribe = subscribeTo;
|
|
127
|
-
const json = JSON.stringify(bindingObj);
|
|
115
|
+
const bindingObj = this.buildBindingObject(className, 'class', value, subscribeMap.get(propName));
|
|
128
116
|
return {
|
|
129
|
-
name: `x-fluff-attrib-class-${className.toLowerCase()}`, value:
|
|
117
|
+
name: `x-fluff-attrib-class-${className.toLowerCase()}`, value: JSON.stringify(bindingObj)
|
|
130
118
|
};
|
|
131
119
|
}
|
|
132
120
|
if (propName.startsWith('style.')) {
|
|
133
121
|
const styleName = propName.slice(6);
|
|
134
|
-
const bindingObj =
|
|
135
|
-
name: styleName, binding: 'style', expression: value
|
|
136
|
-
};
|
|
137
|
-
const subscribeTo = subscribeMap.get(propName);
|
|
138
|
-
if (subscribeTo)
|
|
139
|
-
bindingObj.subscribe = subscribeTo;
|
|
140
|
-
const json = JSON.stringify(bindingObj);
|
|
122
|
+
const bindingObj = this.buildBindingObject(styleName, 'style', value, subscribeMap.get(propName));
|
|
141
123
|
return {
|
|
142
|
-
name: `x-fluff-attrib-style-${styleName.toLowerCase()}`, value:
|
|
124
|
+
name: `x-fluff-attrib-style-${styleName.toLowerCase()}`, value: JSON.stringify(bindingObj)
|
|
143
125
|
};
|
|
144
126
|
}
|
|
145
|
-
const bindingObj =
|
|
146
|
-
name: propName, binding: 'property', expression: value
|
|
147
|
-
};
|
|
148
|
-
const subscribeTo = subscribeMap.get(propName);
|
|
149
|
-
if (subscribeTo)
|
|
150
|
-
bindingObj.subscribe = subscribeTo;
|
|
151
|
-
const json = JSON.stringify(bindingObj);
|
|
127
|
+
const bindingObj = this.buildBindingObject(propName, 'property', value, subscribeMap.get(propName));
|
|
152
128
|
return {
|
|
153
|
-
name: `x-fluff-attrib-${propName.toLowerCase()}`, value:
|
|
129
|
+
name: `x-fluff-attrib-${propName.toLowerCase()}`, value: JSON.stringify(bindingObj)
|
|
154
130
|
};
|
|
155
131
|
}
|
|
156
132
|
if (name.startsWith('(') && name.endsWith(')')) {
|
|
@@ -182,6 +158,21 @@ export class DomPreProcessor {
|
|
|
182
158
|
}
|
|
183
159
|
return null;
|
|
184
160
|
}
|
|
161
|
+
buildBindingObject(name, binding, value, subscribeTo) {
|
|
162
|
+
const parsed = ExpressionTransformer.parsePrimaryExpression(value);
|
|
163
|
+
const bindingObj = {
|
|
164
|
+
name,
|
|
165
|
+
binding,
|
|
166
|
+
expression: parsed.expression
|
|
167
|
+
};
|
|
168
|
+
if (parsed.pipes.length > 0) {
|
|
169
|
+
bindingObj.pipes = parsed.pipes;
|
|
170
|
+
}
|
|
171
|
+
if (subscribeTo) {
|
|
172
|
+
bindingObj.subscribe = subscribeTo;
|
|
173
|
+
}
|
|
174
|
+
return bindingObj;
|
|
175
|
+
}
|
|
185
176
|
convertInterpolationToExpression(value) {
|
|
186
177
|
const parts = [];
|
|
187
178
|
let pos = 0;
|
package/TemplateParser.d.ts
CHANGED
package/TemplateParser.js
CHANGED
|
@@ -294,21 +294,7 @@ export class TemplateParser {
|
|
|
294
294
|
try {
|
|
295
295
|
const parsed = JSON.parse(pipesAttr);
|
|
296
296
|
if (Array.isArray(parsed)) {
|
|
297
|
-
result.pipes =
|
|
298
|
-
if (!Typeguards.isRecord(pipe)) {
|
|
299
|
-
return null;
|
|
300
|
-
}
|
|
301
|
-
if (typeof pipe.name !== 'string' || !Array.isArray(pipe.args)) {
|
|
302
|
-
return null;
|
|
303
|
-
}
|
|
304
|
-
const args = pipe.args.filter((arg) => typeof arg === 'string')
|
|
305
|
-
.map(arg => this.transformWithLocals(arg));
|
|
306
|
-
return {
|
|
307
|
-
name: pipe.name,
|
|
308
|
-
args
|
|
309
|
-
};
|
|
310
|
-
})
|
|
311
|
-
.filter((pipe) => pipe !== null);
|
|
297
|
+
result.pipes = this.transformPipes(parsed);
|
|
312
298
|
}
|
|
313
299
|
}
|
|
314
300
|
catch {
|
|
@@ -377,6 +363,9 @@ export class TemplateParser {
|
|
|
377
363
|
if (typeof parsed.subscribe === 'string') {
|
|
378
364
|
result.subscribe = parsed.subscribe;
|
|
379
365
|
}
|
|
366
|
+
if (Array.isArray(parsed.pipes)) {
|
|
367
|
+
result.pipes = this.transformPipes(parsed.pipes);
|
|
368
|
+
}
|
|
380
369
|
return result;
|
|
381
370
|
}
|
|
382
371
|
catch {
|
|
@@ -397,6 +386,23 @@ export class TemplateParser {
|
|
|
397
386
|
templateRefs: options?.templateRefs
|
|
398
387
|
});
|
|
399
388
|
}
|
|
389
|
+
transformPipes(pipes) {
|
|
390
|
+
return pipes.map(pipe => {
|
|
391
|
+
if (!Typeguards.isRecord(pipe)) {
|
|
392
|
+
return null;
|
|
393
|
+
}
|
|
394
|
+
if (typeof pipe.name !== 'string' || !Array.isArray(pipe.args)) {
|
|
395
|
+
return null;
|
|
396
|
+
}
|
|
397
|
+
const args = pipe.args.filter((arg) => typeof arg === 'string')
|
|
398
|
+
.map(arg => this.transformWithLocals(arg));
|
|
399
|
+
return {
|
|
400
|
+
name: pipe.name,
|
|
401
|
+
args
|
|
402
|
+
};
|
|
403
|
+
})
|
|
404
|
+
.filter((pipe) => pipe !== null);
|
|
405
|
+
}
|
|
400
406
|
pushScope(variables) {
|
|
401
407
|
const parent = this.scopeStack[this.scopeStack.length - 1];
|
|
402
408
|
this.scopeStack.push({
|