angular-cn/modules/angular2/src/render/dom/compiler/text_interpolation_parser.ts

35 lines
1.1 KiB
TypeScript
Raw Normal View History

import {RegExpWrapper, StringWrapper, isPresent} from 'angular2/src/facade/lang';
import {DOM} from 'angular2/src/dom/dom_adapter';
import {Parser} from 'angular2/change_detection';
import {CompileStep} from './compile_step';
import {CompileElement} from './compile_element';
import {CompileControl} from './compile_control';
/**
* Parses interpolations in direct text child nodes of the current element.
*/
2015-05-18 11:57:20 -07:00
export class TextInterpolationParser implements CompileStep {
2015-06-12 23:11:11 +02:00
constructor(public _parser: Parser) {}
2015-05-18 11:57:20 -07:00
process(parent: CompileElement, current: CompileElement, control: CompileControl) {
if (!current.compileChildren) {
return;
}
var element = current.element;
var childNodes = DOM.childNodes(DOM.templateAwareRoot(element));
2015-05-18 11:57:20 -07:00
for (var i = 0; i < childNodes.length; i++) {
var node = childNodes[i];
if (DOM.isTextNode(node)) {
var text = DOM.nodeValue(node);
var expr = this._parser.parseInterpolation(text, current.elementDescription);
if (isPresent(expr)) {
DOM.setText(node, ' ');
current.bindElement().bindText(i, expr);
}
}
}
}
}