Index: third_party/pkg/angular/lib/core_dom/compiler.dart |
diff --git a/third_party/pkg/angular/lib/core_dom/compiler.dart b/third_party/pkg/angular/lib/core_dom/compiler.dart |
deleted file mode 100644 |
index 6a52ac8d1ceed75eb0ed728f72f150833bd00042..0000000000000000000000000000000000000000 |
--- a/third_party/pkg/angular/lib/core_dom/compiler.dart |
+++ /dev/null |
@@ -1,234 +0,0 @@ |
-part of angular.core.dom; |
- |
-@NgInjectableService() |
-class Compiler { |
- final Profiler _perf; |
- final Parser _parser; |
- final Expando _expando; |
- |
- Compiler(this._perf, this._parser, this._expando); |
- |
- _compileBlock(NodeCursor domCursor, NodeCursor templateCursor, |
- List<DirectiveRef> useExistingDirectiveRefs, |
- DirectiveMap directives) { |
- if (domCursor.nodeList().length == 0) return null; |
- |
- var directivePositions = null; // don't pre-create to create sparse tree and prevent GC pressure. |
- var cursorAlreadyAdvanced; |
- |
- do { |
- var declaredDirectiveRefs = useExistingDirectiveRefs == null |
- ? directives.selector(domCursor.nodeList()[0]) |
- : useExistingDirectiveRefs; |
- var children = NgAnnotation.COMPILE_CHILDREN; |
- var childDirectivePositions = null; |
- List<DirectiveRef> usableDirectiveRefs = null; |
- |
- cursorAlreadyAdvanced = false; |
- |
- for (var j = 0; j < declaredDirectiveRefs.length; j++) { |
- DirectiveRef directiveRef = declaredDirectiveRefs[j]; |
- NgAnnotation annotation = directiveRef.annotation; |
- var blockFactory = null; |
- |
- if (annotation.children != children && |
- children == NgAnnotation.COMPILE_CHILDREN) { |
- children = annotation.children; |
- } |
- |
- if (children == NgAnnotation.TRANSCLUDE_CHILDREN) { |
- var remainingDirectives = declaredDirectiveRefs.sublist(j + 1); |
- blockFactory = compileTransclusion( |
- domCursor, templateCursor, |
- directiveRef, remainingDirectives, directives); |
- |
- // stop processing further directives since they belong to |
- // transclusion |
- j = declaredDirectiveRefs.length; |
- } |
- if (usableDirectiveRefs == null) usableDirectiveRefs = []; |
- directiveRef.blockFactory = blockFactory; |
- createMappings(directiveRef); |
- usableDirectiveRefs.add(directiveRef); |
- } |
- |
- if (children == NgAnnotation.COMPILE_CHILDREN && domCursor.descend()) { |
- templateCursor.descend(); |
- |
- childDirectivePositions = |
- _compileBlock(domCursor, templateCursor, null, directives); |
- |
- domCursor.ascend(); |
- templateCursor.ascend(); |
- } |
- |
- if (childDirectivePositions != null || usableDirectiveRefs != null) { |
- if (directivePositions == null) directivePositions = []; |
- var directiveOffsetIndex = templateCursor.index; |
- |
- directivePositions |
- ..add(directiveOffsetIndex) |
- ..add(usableDirectiveRefs) |
- ..add(childDirectivePositions); |
- } |
- } while (templateCursor.microNext() && domCursor.microNext()); |
- |
- return directivePositions; |
- } |
- |
- BlockFactory compileTransclusion( |
- NodeCursor domCursor, NodeCursor templateCursor, |
- DirectiveRef directiveRef, |
- List<DirectiveRef> transcludedDirectiveRefs, |
- DirectiveMap directives) { |
- var anchorName = directiveRef.annotation.selector + (directiveRef.value != null ? '=' + directiveRef.value : ''); |
- var blockFactory; |
- var blocks; |
- |
- var transcludeCursor = templateCursor.replaceWithAnchor(anchorName); |
- var domCursorIndex = domCursor.index; |
- var directivePositions = |
- _compileBlock(domCursor, transcludeCursor, transcludedDirectiveRefs, directives); |
- if (directivePositions == null) directivePositions = []; |
- |
- blockFactory = new BlockFactory(transcludeCursor.elements, directivePositions, _perf, _expando); |
- domCursor.index = domCursorIndex; |
- |
- if (domCursor.isInstance()) { |
- domCursor.insertAnchorBefore(anchorName); |
- blocks = [blockFactory(domCursor.nodeList())]; |
- domCursor.macroNext(); |
- templateCursor.macroNext(); |
- while (domCursor.isValid() && domCursor.isInstance()) { |
- blocks.add(blockFactory(domCursor.nodeList())); |
- domCursor.macroNext(); |
- templateCursor.remove(); |
- } |
- } else { |
- domCursor.replaceWithAnchor(anchorName); |
- } |
- |
- return blockFactory; |
- } |
- |
- BlockFactory call(List<dom.Node> elements, DirectiveMap directives) { |
- var timerId; |
- assert((timerId = _perf.startTimer('ng.compile', _html(elements))) != false); |
- List<dom.Node> domElements = elements; |
- List<dom.Node> templateElements = cloneElements(domElements); |
- var directivePositions = _compileBlock( |
- new NodeCursor(domElements), new NodeCursor(templateElements), |
- null, directives); |
- |
- var blockFactory = new BlockFactory(templateElements, |
- directivePositions == null ? [] : directivePositions, _perf, _expando); |
- |
- assert(_perf.stopTimer(timerId) != false); |
- return blockFactory; |
- } |
- |
- static RegExp _MAPPING = new RegExp(r'^(\@|=\>\!|\=\>|\<\=\>|\&)\s*(.*)$'); |
- |
- createMappings(DirectiveRef ref) { |
- NgAnnotation annotation = ref.annotation; |
- if (annotation.map != null) annotation.map.forEach((attrName, mapping) { |
- Match match = _MAPPING.firstMatch(mapping); |
- if (match == null) { |
- throw "Unknown mapping '$mapping' for attribute '$attrName'."; |
- } |
- var mode = match[1]; |
- var dstPath = match[2]; |
- |
- String dstExpression = dstPath.isEmpty ? attrName : dstPath; |
- Expression dstPathFn = _parser(dstExpression); |
- if (!dstPathFn.isAssignable) { |
- throw "Expression '$dstPath' is not assignable in mapping '$mapping' for attribute '$attrName'."; |
- } |
- ApplyMapping mappingFn; |
- switch (mode) { |
- case '@': |
- mappingFn = (NodeAttrs attrs, Scope scope, Object controller, FilterMap filters, notify()) { |
- attrs.observe(attrName, (value) { |
- dstPathFn.assign(controller, value); |
- notify(); |
- }); |
- }; |
- break; |
- case '<=>': |
- mappingFn = (NodeAttrs attrs, Scope scope, Object controller, FilterMap filters, notify()) { |
- if (attrs[attrName] == null) return notify(); |
- String expression = attrs[attrName]; |
- Expression expressionFn = _parser(expression); |
- var blockOutbound = false; |
- var blockInbound = false; |
- scope.watch( |
- expression, |
- (inboundValue, _) { |
- if (!blockInbound) { |
- blockOutbound = true; |
- scope.rootScope.runAsync(() => blockOutbound = false); |
- var value = dstPathFn.assign(controller, inboundValue); |
- notify(); |
- return value; |
- } |
- }, |
- filters: filters |
- ); |
- if (expressionFn.isAssignable) { |
- scope.watch( |
- dstExpression, |
- (outboundValue, _) { |
- if (!blockOutbound) { |
- blockInbound = true; |
- scope.rootScope.runAsync(() => blockInbound = false); |
- expressionFn.assign(scope.context, outboundValue); |
- notify(); |
- } |
- }, |
- context: controller, |
- filters: filters |
- ); |
- } |
- }; |
- break; |
- case '=>': |
- mappingFn = (NodeAttrs attrs, Scope scope, Object controller, FilterMap filters, notify()) { |
- if (attrs[attrName] == null) return notify(); |
- Expression attrExprFn = _parser(attrs[attrName]); |
- var shadowValue = null; |
- scope.watch(attrs[attrName], |
- (v, _) { |
- dstPathFn.assign(controller, shadowValue = v); |
- notify(); |
- }, |
- filters: filters); |
- }; |
- break; |
- case '=>!': |
- mappingFn = (NodeAttrs attrs, Scope scope, Object controller, FilterMap filters, notify()) { |
- if (attrs[attrName] == null) return notify(); |
- Expression attrExprFn = _parser(attrs[attrName]); |
- var watch; |
- watch = scope.watch( |
- attrs[attrName], |
- (value, _) { |
- if (dstPathFn.assign(controller, value) != null) { |
- watch.remove(); |
- } |
- }, |
- filters: filters); |
- notify(); |
- }; |
- break; |
- case '&': |
- mappingFn = (NodeAttrs attrs, Scope scope, Object dst, FilterMap filters, notify()) { |
- dstPathFn.assign(dst, _parser(attrs[attrName]).bind(scope.context, ScopeLocals.wrapper)); |
- notify(); |
- }; |
- break; |
- } |
- ref.mappings.add(mappingFn); |
- }); |
- } |
-} |
- |