Skip to content

Commit d91abe6

Browse files
author
Robert Messerle
committed
9d10c09 Revert "feat(i18n): add support for custom placeholder names"
1 parent a081a53 commit d91abe6

271 files changed

Lines changed: 22923 additions & 16066 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

BUILD_INFO

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
Wed Apr 13 22:00:30 UTC 2016
2-
2b34c88b69af8b0031fdb7006327bb8260e23dda
1+
Thu Apr 14 22:22:59 UTC 2016
2+
9d10c09b79d67ec6ba31078fe9365612c0475baa

_analyzer.dart

Lines changed: 445 additions & 433 deletions
Large diffs are not rendered by default.

lib/angular2.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,4 @@ export 'package:angular2/src/core/application_tokens.dart'
1515
export 'package:angular2/src/platform/dom/dom_tokens.dart';
1616
export 'package:angular2/src/platform/dom/dom_adapter.dart';
1717
export 'package:angular2/src/platform/dom/events/event_manager.dart';
18-
export 'package:angular2/src/compiler/compiler.dart'
19-
show UrlResolver, DirectiveResolver, ViewResolver;
18+
export 'package:angular2/src/compiler/url_resolver.dart';

lib/compiler.dart

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,6 @@
55
*/
66
library angular2.compiler;
77

8-
export "package:angular2/src/compiler/compiler.dart"
9-
show
10-
PLATFORM_DIRECTIVES,
11-
PLATFORM_PIPES,
12-
COMPILER_PROVIDERS,
13-
TEMPLATE_TRANSFORMS,
14-
CompilerConfig,
15-
RenderTypes,
16-
UrlResolver,
17-
DEFAULT_PACKAGE_URL_PROVIDER,
18-
createOfflineCompileUrlResolver,
19-
XHR,
20-
ViewResolver,
21-
DirectiveResolver,
22-
PipeResolver,
23-
SourceModule,
24-
NormalizedComponentWithViewDirectives,
25-
OfflineCompiler,
26-
CompileMetadataWithIdentifier,
27-
CompileMetadataWithType,
28-
CompileIdentifierMetadata,
29-
CompileDiDependencyMetadata,
30-
CompileProviderMetadata,
31-
CompileFactoryMetadata,
32-
CompileTokenMetadata,
33-
CompileTypeMetadata,
34-
CompileQueryMetadata,
35-
CompileTemplateMetadata,
36-
CompileDirectiveMetadata,
37-
CompilePipeMetadata;
38-
export "package:angular2/src/compiler/template_ast.dart";
8+
export "src/compiler/url_resolver.dart";
9+
export "src/compiler/xhr.dart";
10+
export "src/compiler/compiler.dart";

lib/extract_messages.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import 'package:build/build.dart';
22
import 'package:analyzer/src/generated/element.dart';
33
import 'src/transform/common/url_resolver.dart';
4-
54
import 'dart:async';
65
import 'package:angular2/i18n.dart';
7-
import 'package:angular2/src/compiler/expression_parser/parser.dart';
8-
import 'package:angular2/src/compiler/expression_parser/lexer.dart';
6+
import 'package:angular2/src/core/change_detection/parser/parser.dart';
7+
import 'package:angular2/src/core/change_detection/parser/lexer.dart';
8+
import 'package:angular2/src/core/reflection/reflector.dart';
9+
import 'package:angular2/src/core/reflection/reflection_capabilities.dart';
910
import 'package:angular2/src/compiler/html_parser.dart';
1011

1112
/**
@@ -50,11 +51,11 @@ class I18nMessageExtractorBuilder implements Builder {
5051
}
5152

5253
class I18nMessageExtractor {
53-
final urlResovler = createOfflineCompileUrlResolver();
54+
final TransformerUrlResolver urlResovler = new TransformerUrlResolver();
5455
final List<Message> messages = [];
5556
final List errors = [];
5657
final HtmlParser htmlParser = new HtmlParser();
57-
final Parser parser = new Parser(new Lexer());
58+
final Parser parser = new Parser(new Lexer(), new Reflector(new ReflectionCapabilities()));
5859

5960
final Function readInput;
6061

lib/platform/testing/browser_static.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ library angular2.platform.testing.browser_static;
33
import "package:angular2/core.dart"
44
show
55
APP_ID,
6+
DirectiveResolver,
67
NgZone,
78
Provider,
9+
ViewResolver,
810
PLATFORM_COMMON_PROVIDERS,
911
PLATFORM_INITIALIZER;
10-
import "package:angular2/compiler.dart" show DirectiveResolver, ViewResolver;
1112
import "package:angular2/src/platform/browser_common.dart"
1213
show BROWSER_APP_COMMON_PROVIDERS;
1314
import "package:angular2/src/platform/browser/browser_adapter.dart"

lib/src/common/directives/ng_for.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,7 @@ class NgFor implements DoCheck {
158158
var tuple = tuples[i];
159159
// separate moved views from removed views.
160160
if (isPresent(tuple.record.currentIndex)) {
161-
tuple.view = (this._viewContainer.detach(tuple.record.previousIndex)
162-
as EmbeddedViewRef);
161+
tuple.view = this._viewContainer.detach(tuple.record.previousIndex);
163162
movedTuples.add(tuple);
164163
} else {
165164
this._viewContainer.remove(tuple.record.previousIndex);
Lines changed: 264 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,264 @@
1+
library angular2.src.compiler.change_definition_factory;
2+
3+
import "package:angular2/src/facade/collection.dart"
4+
show ListWrapper, StringMapWrapper;
5+
import "package:angular2/src/facade/lang.dart" show isPresent, isBlank;
6+
import "package:angular2/src/core/reflection/reflection.dart" show reflector;
7+
import "package:angular2/src/core/change_detection/change_detection.dart"
8+
show
9+
DirectiveIndex,
10+
BindingRecord,
11+
DirectiveRecord,
12+
ChangeDetectionStrategy,
13+
ChangeDetectorDefinition,
14+
ChangeDetectorGenConfig,
15+
ASTWithSource;
16+
import "directive_metadata.dart"
17+
show CompileDirectiveMetadata, CompileTypeMetadata;
18+
import "template_ast.dart"
19+
show
20+
TemplateAst,
21+
ElementAst,
22+
BoundTextAst,
23+
PropertyBindingType,
24+
DirectiveAst,
25+
TemplateAstVisitor,
26+
templateVisitAll,
27+
NgContentAst,
28+
EmbeddedTemplateAst,
29+
VariableAst,
30+
BoundElementPropertyAst,
31+
BoundEventAst,
32+
BoundDirectivePropertyAst,
33+
AttrAst,
34+
TextAst;
35+
import "package:angular2/src/core/linker/interfaces.dart" show LifecycleHooks;
36+
37+
List<ChangeDetectorDefinition> createChangeDetectorDefinitions(
38+
CompileTypeMetadata componentType,
39+
ChangeDetectionStrategy componentStrategy,
40+
ChangeDetectorGenConfig genConfig,
41+
List<TemplateAst> parsedTemplate) {
42+
var pvVisitors = [];
43+
var visitor = new ProtoViewVisitor(null, pvVisitors, componentStrategy);
44+
templateVisitAll(visitor, parsedTemplate);
45+
return createChangeDefinitions(pvVisitors, componentType, genConfig);
46+
}
47+
48+
class ProtoViewVisitor implements TemplateAstVisitor {
49+
ProtoViewVisitor parent;
50+
List<ProtoViewVisitor> allVisitors;
51+
ChangeDetectionStrategy strategy;
52+
num viewIndex;
53+
num nodeCount = 0;
54+
num boundElementCount = 0;
55+
List<String> variableNames = [];
56+
List<BindingRecord> bindingRecords = [];
57+
List<BindingRecord> eventRecords = [];
58+
List<DirectiveRecord> directiveRecords = [];
59+
ProtoViewVisitor(this.parent, this.allVisitors, this.strategy) {
60+
this.viewIndex = allVisitors.length;
61+
allVisitors.add(this);
62+
}
63+
dynamic visitEmbeddedTemplate(EmbeddedTemplateAst ast, dynamic context) {
64+
this.nodeCount++;
65+
this.boundElementCount++;
66+
templateVisitAll(this, ast.outputs);
67+
for (var i = 0; i < ast.directives.length; i++) {
68+
ast.directives[i].visit(this, i);
69+
}
70+
var childVisitor = new ProtoViewVisitor(
71+
this, this.allVisitors, ChangeDetectionStrategy.Default);
72+
// Attention: variables present on an embedded template count towards
73+
74+
// the embedded template and not the template anchor!
75+
templateVisitAll(childVisitor, ast.vars);
76+
templateVisitAll(childVisitor, ast.children);
77+
return null;
78+
}
79+
80+
dynamic visitElement(ElementAst ast, dynamic context) {
81+
this.nodeCount++;
82+
if (ast.isBound()) {
83+
this.boundElementCount++;
84+
}
85+
templateVisitAll(this, ast.inputs, null);
86+
templateVisitAll(this, ast.outputs);
87+
templateVisitAll(this, ast.exportAsVars);
88+
for (var i = 0; i < ast.directives.length; i++) {
89+
ast.directives[i].visit(this, i);
90+
}
91+
templateVisitAll(this, ast.children);
92+
return null;
93+
}
94+
95+
dynamic visitNgContent(NgContentAst ast, dynamic context) {
96+
return null;
97+
}
98+
99+
dynamic visitVariable(VariableAst ast, dynamic context) {
100+
this.variableNames.add(ast.name);
101+
return null;
102+
}
103+
104+
dynamic visitEvent(BoundEventAst ast, DirectiveRecord directiveRecord) {
105+
var bindingRecord = isPresent(directiveRecord)
106+
? BindingRecord.createForHostEvent(
107+
ast.handler, ast.fullName, directiveRecord)
108+
: BindingRecord.createForEvent(
109+
ast.handler, ast.fullName, this.boundElementCount - 1);
110+
this.eventRecords.add(bindingRecord);
111+
return null;
112+
}
113+
114+
dynamic visitElementProperty(
115+
BoundElementPropertyAst ast, DirectiveRecord directiveRecord) {
116+
var boundElementIndex = this.boundElementCount - 1;
117+
var dirIndex =
118+
isPresent(directiveRecord) ? directiveRecord.directiveIndex : null;
119+
var bindingRecord;
120+
if (identical(ast.type, PropertyBindingType.Property)) {
121+
bindingRecord = isPresent(dirIndex)
122+
? BindingRecord.createForHostProperty(dirIndex, ast.value, ast.name)
123+
: BindingRecord.createForElementProperty(
124+
ast.value, boundElementIndex, ast.name);
125+
} else if (identical(ast.type, PropertyBindingType.Attribute)) {
126+
bindingRecord = isPresent(dirIndex)
127+
? BindingRecord.createForHostAttribute(dirIndex, ast.value, ast.name)
128+
: BindingRecord.createForElementAttribute(
129+
ast.value, boundElementIndex, ast.name);
130+
} else if (identical(ast.type, PropertyBindingType.Class)) {
131+
bindingRecord = isPresent(dirIndex)
132+
? BindingRecord.createForHostClass(dirIndex, ast.value, ast.name)
133+
: BindingRecord.createForElementClass(
134+
ast.value, boundElementIndex, ast.name);
135+
} else if (identical(ast.type, PropertyBindingType.Style)) {
136+
bindingRecord = isPresent(dirIndex)
137+
? BindingRecord.createForHostStyle(
138+
dirIndex, ast.value, ast.name, ast.unit)
139+
: BindingRecord.createForElementStyle(
140+
ast.value, boundElementIndex, ast.name, ast.unit);
141+
}
142+
this.bindingRecords.add(bindingRecord);
143+
return null;
144+
}
145+
146+
dynamic visitAttr(AttrAst ast, dynamic context) {
147+
return null;
148+
}
149+
150+
dynamic visitBoundText(BoundTextAst ast, dynamic context) {
151+
var nodeIndex = this.nodeCount++;
152+
this
153+
.bindingRecords
154+
.add(BindingRecord.createForTextNode(ast.value, nodeIndex));
155+
return null;
156+
}
157+
158+
dynamic visitText(TextAst ast, dynamic context) {
159+
this.nodeCount++;
160+
return null;
161+
}
162+
163+
dynamic visitDirective(DirectiveAst ast, num directiveIndexAsNumber) {
164+
var directiveIndex =
165+
new DirectiveIndex(this.boundElementCount - 1, directiveIndexAsNumber);
166+
var directiveMetadata = ast.directive;
167+
var outputsArray = [];
168+
StringMapWrapper.forEach(
169+
ast.directive.outputs,
170+
(String eventName, String dirProperty) =>
171+
outputsArray.add([dirProperty, eventName]));
172+
var directiveRecord = new DirectiveRecord(
173+
directiveIndex: directiveIndex,
174+
callAfterContentInit: !identical(
175+
directiveMetadata.lifecycleHooks
176+
.indexOf(LifecycleHooks.AfterContentInit),
177+
-1),
178+
callAfterContentChecked: !identical(
179+
directiveMetadata.lifecycleHooks
180+
.indexOf(LifecycleHooks.AfterContentChecked),
181+
-1),
182+
callAfterViewInit: !identical(
183+
directiveMetadata.lifecycleHooks
184+
.indexOf(LifecycleHooks.AfterViewInit),
185+
-1),
186+
callAfterViewChecked: !identical(
187+
directiveMetadata.lifecycleHooks
188+
.indexOf(LifecycleHooks.AfterViewChecked),
189+
-1),
190+
callOnChanges: !identical(
191+
directiveMetadata.lifecycleHooks.indexOf(LifecycleHooks.OnChanges),
192+
-1),
193+
callDoCheck: !identical(
194+
directiveMetadata.lifecycleHooks.indexOf(LifecycleHooks.DoCheck),
195+
-1),
196+
callOnInit: !identical(
197+
directiveMetadata.lifecycleHooks.indexOf(LifecycleHooks.OnInit),
198+
-1),
199+
callOnDestroy: !identical(
200+
directiveMetadata.lifecycleHooks.indexOf(LifecycleHooks.OnDestroy),
201+
-1),
202+
changeDetection: directiveMetadata.changeDetection,
203+
outputs: outputsArray);
204+
this.directiveRecords.add(directiveRecord);
205+
templateVisitAll(this, ast.inputs, directiveRecord);
206+
var bindingRecords = this.bindingRecords;
207+
if (directiveRecord.callOnChanges) {
208+
bindingRecords
209+
.add(BindingRecord.createDirectiveOnChanges(directiveRecord));
210+
}
211+
if (directiveRecord.callOnInit) {
212+
bindingRecords.add(BindingRecord.createDirectiveOnInit(directiveRecord));
213+
}
214+
if (directiveRecord.callDoCheck) {
215+
bindingRecords.add(BindingRecord.createDirectiveDoCheck(directiveRecord));
216+
}
217+
templateVisitAll(this, ast.hostProperties, directiveRecord);
218+
templateVisitAll(this, ast.hostEvents, directiveRecord);
219+
templateVisitAll(this, ast.exportAsVars);
220+
return null;
221+
}
222+
223+
dynamic visitDirectiveProperty(
224+
BoundDirectivePropertyAst ast, DirectiveRecord directiveRecord) {
225+
// TODO: these setters should eventually be created by change detection, to make
226+
227+
// it monomorphic!
228+
var setter = reflector.setter(ast.directiveName);
229+
this.bindingRecords.add(BindingRecord.createForDirective(
230+
ast.value, ast.directiveName, setter, directiveRecord));
231+
return null;
232+
}
233+
}
234+
235+
List<ChangeDetectorDefinition> createChangeDefinitions(
236+
List<ProtoViewVisitor> pvVisitors,
237+
CompileTypeMetadata componentType,
238+
ChangeDetectorGenConfig genConfig) {
239+
var pvVariableNames = _collectNestedProtoViewsVariableNames(pvVisitors);
240+
return pvVisitors.map((pvVisitor) {
241+
var id = '''${ componentType . name}_${ pvVisitor . viewIndex}''';
242+
return new ChangeDetectorDefinition(
243+
id,
244+
pvVisitor.strategy,
245+
pvVariableNames[pvVisitor.viewIndex],
246+
pvVisitor.bindingRecords,
247+
pvVisitor.eventRecords,
248+
pvVisitor.directiveRecords,
249+
genConfig);
250+
}).toList();
251+
}
252+
253+
List<List<String>> _collectNestedProtoViewsVariableNames(
254+
List<ProtoViewVisitor> pvVisitors) {
255+
List<List<String>> nestedPvVariableNames =
256+
ListWrapper.createFixedSize(pvVisitors.length);
257+
pvVisitors.forEach((pv) {
258+
List<String> parentVariableNames =
259+
isPresent(pv.parent) ? nestedPvVariableNames[pv.parent.viewIndex] : [];
260+
nestedPvVariableNames[pv.viewIndex] =
261+
(new List.from(parentVariableNames)..addAll(pv.variableNames));
262+
});
263+
return nestedPvVariableNames;
264+
}

0 commit comments

Comments
 (0)