Skip to content

Commit 0f4eb1b

Browse files
committed
refactor(compiler): simplify metadata
1 parent 3468f7c commit 0f4eb1b

3 files changed

Lines changed: 16 additions & 15 deletions

File tree

modules/angular2/src/compiler/api.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {isPresent} from 'angular2/src/core/facade/lang';
12
import {HtmlAst} from './html_ast';
23

34
export class TypeMeta {
@@ -54,18 +55,18 @@ export enum ViewEncapsulation {
5455

5556
export class DirectiveMetadata {
5657
type: TypeMeta;
58+
isComponent: boolean;
5759
selector: string;
58-
constructor({type, selector}: {type?: TypeMeta, selector?: string} = {}) {
60+
template: TemplateMeta;
61+
constructor({type, isComponent, selector, template}: {
62+
type?: TypeMeta,
63+
isComponent?: boolean,
64+
selector?: string,
65+
template?: TemplateMeta
66+
} = {}) {
5967
this.type = type;
68+
this.isComponent = isPresent(isComponent) ? isComponent : false;
6069
this.selector = selector;
61-
}
62-
}
63-
64-
export class ComponentMetadata extends DirectiveMetadata {
65-
template: TemplateMeta;
66-
constructor({type, selector, template}:
67-
{type?: TypeMeta, selector?: string, template?: TemplateMeta}) {
68-
super({type: type, selector: selector});
6970
this.template = template;
7071
}
7172
}

modules/angular2/src/compiler/template_parser.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212

1313
import {Parser, AST, ASTWithSource} from 'angular2/src/core/change_detection/change_detection';
1414

15-
import {DirectiveMetadata, ComponentMetadata} from './api';
15+
import {DirectiveMetadata} from './api';
1616
import {
1717
ElementAst,
1818
BoundPropertyAst,
@@ -279,8 +279,8 @@ class TemplateParseVisitor implements HtmlAstVisitor {
279279
// as selectorMatcher uses Maps inside.
280280
// Also need to make components the first directive in the array
281281
ListWrapper.sort(directives, (dir1: DirectiveMetadata, dir2: DirectiveMetadata) => {
282-
var dir1Comp = dir1 instanceof ComponentMetadata;
283-
var dir2Comp = dir2 instanceof ComponentMetadata;
282+
var dir1Comp = dir1.isComponent;
283+
var dir2Comp = dir2.isComponent;
284284
if (dir1Comp && !dir2Comp) {
285285
return -1;
286286
} else if (!dir1Comp && dir2Comp) {

modules/angular2/test/compiler/template_parser_spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {ddescribe, describe, it, iit, xit, expect, beforeEach, afterEach} from '
33
import {Parser, Lexer} from 'angular2/src/core/change_detection/change_detection';
44
import {TemplateParser, splitClasses} from 'angular2/src/compiler/template_parser';
55
import {HtmlParser} from 'angular2/src/compiler/html_parser';
6-
import {DirectiveMetadata, ComponentMetadata, TypeMeta} from 'angular2/src/compiler/api';
6+
import {DirectiveMetadata, TypeMeta} from 'angular2/src/compiler/api';
77
import {
88
templateVisitAll,
99
TemplateAstVisitor,
@@ -192,8 +192,8 @@ export function main() {
192192
new DirectiveMetadata({selector: '[a=b]', type: new TypeMeta({typeName: 'DirA'})});
193193
var dirB =
194194
new DirectiveMetadata({selector: '[a]', type: new TypeMeta({typeName: 'DirB'})});
195-
var comp =
196-
new ComponentMetadata({selector: 'div', type: new TypeMeta({typeName: 'ZComp'})});
195+
var comp = new DirectiveMetadata(
196+
{selector: 'div', isComponent: true, type: new TypeMeta({typeName: 'ZComp'})});
197197
expect(humanizeTemplateAsts(parse('<div a="b">', [dirB, dirA, comp])))
198198
.toEqual([
199199
[ElementAst, [comp, dirA, dirB], 'TestComp > div:nth-child(0)'],

0 commit comments

Comments
 (0)