feat(change_detection): make INTERPOLATE_REGEXP customizable (#7417)

BREAKING CHANGES:

`Parser` constructor required new parameter `config: CompilerConfig` as second argument.
This commit is contained in:
Suguru Inatomi
2016-05-27 05:08:39 +09:00
committed by Miško Hevery
parent 9036f78b74
commit c3fafa0651
10 changed files with 43 additions and 18 deletions

View File

@ -2,11 +2,12 @@ import {ddescribe, describe, it, xit, iit, expect, beforeEach} from '@angular/co
import {isBlank, isPresent} from '../../src/facade/lang';
import {Parser} from '@angular/compiler/src/expression_parser/parser';
import {Unparser} from './unparser';
import {CompilerConfig} from '@angular/compiler';
import {Lexer} from '@angular/compiler/src/expression_parser/lexer';
import {BindingPipe, LiteralPrimitive, AST} from '@angular/compiler/src/expression_parser/ast';
export function main() {
function createParser() { return new Parser(new Lexer()); }
function createParser() { return new Parser(new Lexer(), new CompilerConfig(true, true, true)); }
function parseAction(text, location = null): any {
return createParser().parseAction(text, location);
@ -453,6 +454,14 @@ export function main() {
checkInterpolation(`{{ 'foo' +\n 'bar' +\r 'baz' }}`, `{{ "foo" + "bar" + "baz" }}`);
});
it('should support custom interpolation regexp', () => {
var customParser = new Parser(new Lexer(), new CompilerConfig(true, true, true, null, /<<([\s\S]*?)>>/g));
var ast = (customParser.parseInterpolation('<< a >>', null) as any).ast;
expect(ast.strings).toEqual(['', '']);
expect(ast.expressions.length).toEqual(1);
expect(ast.expressions[0].name).toEqual('a');
});
describe("comments", () => {
it('should ignore comments in interpolation expressions',
() => { checkInterpolation('{{a //comment}}', '{{ a }}'); });