Skip to content
This repository was archived by the owner on Feb 17, 2024. It is now read-only.

Commit 5edd34d

Browse files
committed
fix: scope auto inject only to Component
1 parent f7b614e commit 5edd34d

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

index.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,22 +92,24 @@ function Angular2ConventionsLoader(source, sourcemap) {
9292

9393

9494
source = source.replace(componentRegex, function (match, decorator, metadata, offset, src) {
95-
if (templateUrlRegex.test(metadata)) {
95+
if (decorator === 'Component' && templateUrlRegex.test(metadata)) {
9696
metadata = metadata
9797
.replace(templateUrlRegex, function (match, url) {
9898
// replace: templateUrl: './path/to/template.html'
9999
// with: template: require('./path/to/template.html')
100100
return 'template:' + replaceStringsWithRequires(url);
101101
})
102102
}
103-
if (templateUrlRegex.test(metadata)) {
103+
if (decorator === 'Component' && templateUrlRegex.test(metadata)) {
104104
metadata = metadata
105105
.replace(styleUrlsRegex, function (match, urls) {
106106
// replace: stylesUrl: ['./foo.css', "./baz.css", "./index.component.css"]
107107
// with: styles: [require('./foo.css'), require("./baz.css"), require("./index.component.css")]
108108
return 'styles:' + replaceStringsWithRequires(urls);
109109
});
110110
}
111+
112+
// get relative file name
111113
var fileContext = self.request.split(self.context)
112114
var lastFileName = fileContext[fileContext.length-1];
113115
lastFileName = lastFileName.replace(/\.[^/.]+$/g, "");
@@ -117,7 +119,7 @@ function Angular2ConventionsLoader(source, sourcemap) {
117119

118120
var __selector;
119121
if (!(/selector\s*:\s*('|")(.*)('|"),?/.test(metadata))) {
120-
122+
// grab classname and set selector
121123
// TODO(gdi2290): become a regexp master to fix this
122124
var __args = /@(Component|Directive)\({([\s\S]*?)}\)\s*export\s*class\s*([\s\S]+)\s*(extends|implements|{)$/m.exec(src.slice(offset));
123125
if (__args && __args[3]) {
@@ -128,13 +130,15 @@ function Angular2ConventionsLoader(source, sourcemap) {
128130
__args = null;
129131
}
130132
} else if (/selector\s*:\s*('|")(.*)('|")/) {
133+
// grab selector from metadata
131134
var getSelector = /selector\s*:\s*('|")(.*)('|")/.exec(metadata)
132135
__selector = getSelector[2];
133136
}
134137
var hasSameFileSelector = __selector && lastFileName.toLowerCase().indexOf(__selector.toLowerCase()) !== -1;
135138

136-
if (!(/template\s*:(.*)/g.test(metadata))) {
139+
if (decorator === 'Component' && !(/template\s*:(.*)/g.test(metadata))) {
137140
var _hasHtmlFile;
141+
// if selector and filename are the same
138142
if (hasSameFileSelector) {
139143
try {
140144
_hasHtmlFile = fs.statSync(path.join(self.context, lastFileName + htmlExtension));
@@ -146,11 +150,13 @@ function Angular2ConventionsLoader(source, sourcemap) {
146150
metadata = 'template: "",' + metadata;
147151
}
148152
}
153+
// set file in metadata
149154
if (_hasHtmlFile) {
150155
metadata = 'template: require("' + relativePathStart + lastFileName + htmlExtension + '"),\n' + metadata;
151156
}
152157
}
153-
if (!(/styles\s*:(\s*\[[\s\S]*?\])/g.test(metadata))) {
158+
// do the same for styles
159+
if (decorator === 'Component' && !(/styles\s*:(\s*\[[\s\S]*?\])/g.test(metadata))) {
154160
var _hasCssFile;
155161
if (hasSameFileSelector) {
156162
try {
@@ -169,6 +175,7 @@ function Angular2ConventionsLoader(source, sourcemap) {
169175
// strip moduleId
170176
metadata = metadata.replace(/moduleId: module.id,/, '');
171177

178+
// return updated metadata
172179
return '@' + decorator + '({' + metadata + '})';
173180
});
174181

0 commit comments

Comments
 (0)