ag-requirejs-angular-minify-fix
Advanced tools
Comparing version 1.0.1 to 1.1.0
128
index.js
module.exports = function (moduleName, path, contents) { | ||
var regex = /function\s+\$ng\s*\(([^()]*)\)/; | ||
var match = null; | ||
var newContents = ''; | ||
var regex = /^function\s+\$ng\s*\(([^()]*)\)/; | ||
var lastCopied = 0; | ||
@@ -9,57 +10,102 @@ function addQuotes(x) { | ||
while (match = regex.exec(contents)) { | ||
var end = match.index + match[0].length; | ||
var i = end; | ||
var indent = 1; | ||
function istag(index) { | ||
return (index + 10) < contents.length | ||
&& contents[index] === 'f' | ||
&& contents[index + 1] === 'u' | ||
&& contents[index + 2] === 'n' | ||
&& regex.exec(contents.substr(index)); | ||
} | ||
function skipStringsAndComments(i) { | ||
if (contents[i] === '/' && i < contents.length - 1) { | ||
if (contents[i + 1] === '/') { | ||
while (i < contents.length && contents[i] !== '\n') | ||
i++; | ||
} else if (contents[i + 1] === '*') { | ||
i += 2; | ||
while (i < contents.length - 1 && contents[i] !== '*' && contents[i + 1] !== '/') | ||
i++; | ||
} | ||
} else if (contents[i] === '"' || contents[i] === "'") { | ||
var quot = contents[i]; | ||
i++; | ||
while (i < contents.length && contents[i] !== quot) { | ||
if (contents[i] === '\\') | ||
i++; | ||
i++; | ||
} | ||
} | ||
return i; | ||
} | ||
function skipToOpenBrace(i) { | ||
while (i < contents.length && contents[i] !== '{') | ||
i++; | ||
return i; | ||
} | ||
i++; | ||
function tryParseTag(i) { | ||
var match = istag(i); | ||
while (i < contents.length && indent > 0) { | ||
if (contents[i] === '{') | ||
indent++; | ||
else if (contents[i] === '}') | ||
indent--; | ||
else if (contents[i] === '/' && i < contents.length - 1) { | ||
if (contents[i + 1] === '/') { | ||
while (i < contents.length && contents[i] !== '\n') | ||
i++; | ||
} else if (contents[i + 1] === '*') { | ||
i += 2; | ||
if (match) { | ||
newContents += contents.substr(lastCopied, i - lastCopied); | ||
while (i < contents.length - 1 && contents[i] !== '*' && contents[i + 1] !== '/') | ||
i++; | ||
} | ||
} else if (contents[i] === '"' || contents[i] === "'") { | ||
var quot = contents[i]; | ||
i++; | ||
i += match[0].length; | ||
while (contents[i] !== quot) { | ||
if (contents[i] === '\\') | ||
i++; | ||
i++; | ||
} | ||
lastCopied = i; | ||
var args = match[1].trim().replace(/\\\*.+?\*\\/, ''); | ||
if (args) { | ||
var argsString = args ? args.split(/,/g).map(addQuotes).join('') : ''; | ||
newContents += '[' + argsString + 'function (' + match[1] + ')'; | ||
} else { | ||
newContents += 'function (' + match[1] + ')'; | ||
} | ||
i++; | ||
i = skipToOpenBrace(i) + 1; | ||
i = skipToFunctionEnd(i); | ||
if (lastCopied < (i - 1)) | ||
newContents += contents.substr(lastCopied, i - lastCopied); | ||
lastCopied = i; | ||
if (args) | ||
newContents += ']'; | ||
} | ||
var args = match[1].trim().replace(/\\\*.+?\*\\/, ''); | ||
return i; | ||
} | ||
if (args) { | ||
args = args ? args.split(/,/g).map(addQuotes).join('') : ''; | ||
function skipToFunctionEnd(i) { | ||
var indent = 1; | ||
contents = contents.substr(0, match.index) | ||
+ "[" + args + "function (" + match[1] + ')' | ||
+ contents.substr(end, i - end) + "]" + contents.substr(i); | ||
} else { | ||
contents = contents.substr(0, match.index) | ||
+ args + "function (" + match[1] + ')' | ||
+ contents.substr(end, i - end) + contents.substr(i); | ||
for (; i < contents.length && indent > 0; i++) { | ||
i = skipStringsAndComments(i); | ||
if (contents[i] === '{') | ||
indent++; | ||
else if (contents[i] === '}') | ||
indent--; | ||
i = tryParseTag(i); | ||
} | ||
return i; | ||
} | ||
return contents; | ||
for (var i = 0; i < contents.length; i++) { | ||
i = skipStringsAndComments(i); | ||
i = tryParseTag(i); | ||
} | ||
if (lastCopied < (contents.length - 1)) | ||
newContents += contents.substr(lastCopied); | ||
return newContents; | ||
}; |
{ | ||
"name": "ag-requirejs-angular-minify-fix", | ||
"version": "1.0.1", | ||
"version": "1.1.0", | ||
"description": "Automatic fixing of angular methods for minification", | ||
"main": "index.js", | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
"test": "mocha" | ||
}, | ||
@@ -18,3 +18,7 @@ "repository": { | ||
}, | ||
"homepage": "https://github.com/Agamnentzar/ag-requirejs-angular-minify-fix" | ||
"homepage": "https://github.com/Agamnentzar/ag-requirejs-angular-minify-fix", | ||
"devDependencies": { | ||
"chai": "^1.9.2", | ||
"mocha": "^1.21.5" | ||
} | ||
} |
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
6694
5
133
1
2