Skip to content

Commit 4ba7828

Browse files
author
Eric MORAND
authored
Merge pull request #29 from ericmorand/issue_24
Implement issue #24
2 parents 2f29af7 + e7ec457 commit 4ba7828

File tree

8 files changed

+433
-29
lines changed

8 files changed

+433
-29
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"prepublish": "npm run build",
2424
"test": "TS_NODE_CACHE=0 npm run fastest",
2525
"fastest": "tape -r ts-node/register/type-check 'test/tests/**/*.ts' | tap-mocha-reporter spec",
26-
"fastest2": "tape -r ts-node/register/type-check 'test/tests/unit/node/**/*.ts' | tap-mocha-reporter spec",
26+
"fastest2": "tape -r ts-node/register/type-check 'test/tests/unit/expression-parser.ts' | tap-mocha-reporter spec",
2727
"build": "tsc && node tasks/build.js",
2828
"cover": "nyc npm t",
2929
"coverage": "nyc report --reporter=text-lcov | coveralls"

src/expression-parser.ts

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -713,16 +713,17 @@ class TwingExpressionParser {
713713
if (function_.isDeprecated()) {
714714
let message = `Twing Function "${function_.getName()}" is deprecated`;
715715

716-
// if (!is_bool(filter.getDeprecatedVersion())) {
717-
// message .= sprintf(' since version %s', filter.getDeprecatedVersion());
718-
// }
719-
// if (filter.getAlternative()) {
720-
// message .= sprintf('. Use "%s" instead', filter.getAlternative());
721-
// }
722-
// src = this.parser.getStream().getSourceContext();
723-
// message .= sprintf(' in %s at line %d.', src.getPath() ?: src.getTemplateName(), line);
724-
//
725-
// @trigger_error(message, E_USER_DEPRECATED);
716+
if (typeof function_.getDeprecatedVersion() !== 'boolean') {
717+
message += ` since version ${function_.getDeprecatedVersion()}`;
718+
}
719+
720+
if (function_.getAlternative()) {
721+
message += `. Use "${function_.getAlternative()}" instead`;
722+
}
723+
724+
let src = this.parser.getStream().getSourceContext();
725+
726+
message += ` in ${src.getPath() ? '' : src.getName()} at line ${line}.`;
726727

727728
console.warn(message);
728729
}
@@ -744,16 +745,17 @@ class TwingExpressionParser {
744745
if (filter.isDeprecated()) {
745746
let message = `Twig Filter "${filter.getName()}" is deprecated`;
746747

747-
// if (!is_bool(filter.getDeprecatedVersion())) {
748-
// message .= sprintf(' since version %s', filter.getDeprecatedVersion());
749-
// }
750-
// if (filter.getAlternative()) {
751-
// message .= sprintf('. Use "%s" instead', filter.getAlternative());
752-
// }
753-
// src = this.parser.getStream().getSourceContext();
754-
// message .= sprintf(' in %s at line %d.', src.getPath() ?: src.getTemplateName(), line);
755-
//
756-
// @trigger_error(message, E_USER_DEPRECATED);
748+
if (typeof filter.getDeprecatedVersion() !== 'boolean') {
749+
message += ` since version ${filter.getDeprecatedVersion()}`;
750+
}
751+
752+
if (filter.getAlternative()) {
753+
message += `. Use "${filter.getAlternative()}" instead`;
754+
}
755+
756+
let src = this.parser.getStream().getSourceContext();
757+
758+
message += ` in ${src.getPath() ? '' : src.getName()} at line ${line}.`;
757759

758760
console.warn(message);
759761
}

src/node-type.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ enum TwingNodeType {
22
NONE = 'NONE',
33
CAPTURE = 'CAPTURE',
44
OUTPUT = 'OUTPUT',
5-
PRINT = 'PRINT'
5+
6+
ARRAY = 'array',
7+
CONSTANT = 'constant',
8+
PRINT = 'print',
69
}
710

811
export default TwingNodeType;

src/node.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,18 +177,16 @@ class TwingNode implements TwingNodeInterface {
177177
}
178178

179179
setTemplateName(name: string) {
180-
let self = this;
181-
182180
this.name = name;
183181

184-
this.nodes.forEach(function (node) {
182+
for (let [k, node] of this.nodes) {
185183
try {
186184
node.setTemplateName(name);
187185
}
188186
catch (e) {
189187
throw e;
190188
}
191-
});
189+
};
192190
}
193191

194192
getTemplateName() {

src/node/expression/array.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import TwingNodeExpression from "../expression";
22
import TwingNodeExpressionConstant from "./constant";
33
import TwingMap from "../../map";
44
import TwingCompiler from "../../compiler";
5+
import TwingNodeType from "../../node-type";
56

67
let array_chunk = require('locutus/php/array/array_chunk');
78
let ctype_digit = require('locutus/php/ctype/ctype_digit');
@@ -12,15 +13,17 @@ class TwingNodeExpressionArray extends TwingNodeExpression {
1213
constructor(elements: TwingMap<string, TwingNodeExpression>, lineno: number) {
1314
super(elements, new TwingMap(), lineno);
1415

16+
this.type = TwingNodeType.ARRAY;
17+
1518
this.index = -1;
1619

17-
this.getKeyValuePairs().forEach(function (pair) {
20+
for (let pair of this.getKeyValuePairs()) {
1821
let expression = pair.key;
1922

2023
if ((expression instanceof TwingNodeExpressionConstant) && (ctype_digit('' + expression.getAttribute('value'))) && (expression.getAttribute('value') > this.index)) {
2124
this.index = expression.getAttribute('value');
2225
}
23-
});
26+
}
2427
}
2528

2629
getKeyValuePairs(): Array<{key: TwingNodeExpression, value: TwingNodeExpression}> {

src/node/expression/constant.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@ import TwingNodeExpression from "../expression";
22
import TwingMap from "../../map";
33
import TwingNode from "../../node";
44
import TwingCompiler from "../../compiler";
5+
import TwingNodeType from "../../node-type";
56

67
class TwingNodeExpressionConstant extends TwingNodeExpression {
78
constructor(value: TwingNode | string | number | boolean, lineno: number) {
89
super(new TwingMap(), new TwingMap([['value', value]]), lineno);
10+
11+
this.type = TwingNodeType.CONSTANT;
912
}
1013

1114
compile(compiler: TwingCompiler) {

src/token-stream.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class TwingTokenStream {
6363
let line = token.getLine();
6464

6565
throw new TwingSyntaxError(
66-
`${message ? message : ''}Unexpected token "${TwingToken.typeToEnglish(token.getType())}" of value "${token.getValue()}" ("${TwingToken.typeToEnglish(type)}" expected${value ? ` with value "${value}"` : ''}).`,
66+
`${message ? message + '. ' : ''}Unexpected token "${TwingToken.typeToEnglish(token.getType())}" of value "${token.getValue()}" ("${TwingToken.typeToEnglish(type)}" expected${value ? ` with value "${value}"` : ''}).`,
6767
line,
6868
this.source
6969
);

0 commit comments

Comments
 (0)