Comparing version 0.2.1 to 0.3.0
@@ -134,3 +134,3 @@ // Generated by LiveScript 1.2.0 | ||
}; | ||
module.exports = function(generateHelp, generateHelpForOption, positional){ | ||
module.exports = function(generateHelp, generateHelpForOption, positional, interpolate){ | ||
var helpStrings, res$, i$, len$, arg, lresult$, that, dashes, optionName, j$, ref$, len1$, o, item, sep, name; | ||
@@ -144,3 +144,4 @@ if (positional.length) { | ||
lresult$.push(generateHelp({ | ||
showHidden: true | ||
showHidden: true, | ||
interpolate: interpolate | ||
})); | ||
@@ -191,3 +192,5 @@ } else if (that = /^(--?)(\S+)/.exec(arg)) { | ||
} else { | ||
return generateHelp(); | ||
return generateHelp({ | ||
interpolate: interpolate | ||
}); | ||
} | ||
@@ -194,0 +197,0 @@ }; |
@@ -1,4 +0,4 @@ | ||
// Generated by LiveScript 1.2.0 | ||
// Generated by LiveScript 1.3.1 | ||
(function(){ | ||
var path, acorn, squery, equery, async, ref$, min, sortWith, lines, chars, split, join, map, Obj, format, formatResult, formatName, formatCount, replace, getOptions, help, _console, VERSION, run, getQueryEngine, slice$ = [].slice, toString$ = {}.toString; | ||
var path, acorn, squery, equery, async, ref$, min, sortWith, lines, chars, split, join, map, Obj, format, formatResult, formatName, formatCount, replace, parseOptions, generateHelp, generateHelpForOption, help, _console, version, run, getQueryEngine, slice$ = [].slice, toString$ = {}.toString; | ||
path = require('path'); | ||
@@ -12,8 +12,8 @@ acorn = require('acorn'); | ||
replace = require('./replace').replace; | ||
getOptions = require('./options').getOptions; | ||
ref$ = require('./options'), parseOptions = ref$.parse, generateHelp = ref$.generateHelp, generateHelpForOption = ref$.generateHelpForOption; | ||
help = require('./help'); | ||
_console = console; | ||
VERSION = '0.2.1'; | ||
version = '0.3.0'; | ||
run = function(arg$){ | ||
var ref$, args, error, ref1$, callback, exit, data, stdin, fs, textFormat, input, console, options, positional, generateHelp, generateHelpForOption, e, debug, versionString, getHelp, helpString, queryEngine, parser, parserOptions, that, selector, targets, targetsLen, replacement, isDir, color, bold, textFormatFuncs, resultsData, resultsFormat, callCallback, out, parsedSelector, resultsSortFunc, search, processResults, getToMap, end, exts, testExt, targetPaths, searchTarget, cwd; | ||
var ref$, args, error, ref1$, callback, exit, data, stdin, fs, textFormat, input, console, options, positional, debug, e, versionString, getHelp, helpString, queryEngine, parser, parserOptions, that, selector, targets, targetsLen, replacement, isDir, color, bold, textFormatFuncs, resultsData, resultsFormat, callCallback, out, parsedSelector, resultsSortFunc, search, processResults, getToMap, end, exts, testExt, targetPaths, searchTarget, cwd; | ||
ref$ = arg$ != null | ||
@@ -40,3 +40,3 @@ ? arg$ | ||
try { | ||
ref$ = getOptions(args, VERSION), options = ref$.options, positional = ref$.positional, generateHelp = ref$.generateHelp, generateHelpForOption = ref$.generateHelpForOption; | ||
options = parseOptions(args), positional = options._, debug = options.debug; | ||
} catch (e$) { | ||
@@ -48,3 +48,2 @@ e = e$; | ||
} | ||
debug = options.debug; | ||
if (debug) { | ||
@@ -56,3 +55,3 @@ console.time('everything'); | ||
if (options.version) { | ||
versionString = "grasp v" + VERSION; | ||
versionString = "grasp v" + version; | ||
callback(versionString); | ||
@@ -64,3 +63,5 @@ exit(0, versionString); | ||
positional == null && (positional = []); | ||
return help(generateHelp, generateHelpForOption, positional); | ||
return help(generateHelp, generateHelpForOption, positional, { | ||
version: version | ||
}); | ||
}; | ||
@@ -73,3 +74,3 @@ if (options.help) { | ||
} | ||
queryEngine = options.engine | ||
queryEngine = options.engine != null | ||
? require(options.engine) | ||
@@ -90,3 +91,3 @@ : options.squery | ||
options.afterContext == null && (options.afterContext = options.context); | ||
if (that = options.file) { | ||
if ((that = options.file) != null) { | ||
try { | ||
@@ -111,4 +112,7 @@ selector = fs.readFileSync(that, 'utf8'); | ||
targetsLen = targets.length; | ||
if (that = options.replace) { | ||
if ((that = options.replace) != null) { | ||
replacement = that; | ||
} | ||
if (that = options.replaceFunc) { | ||
replacement = that; | ||
} else if (that = options.replaceFile) { | ||
@@ -414,3 +418,3 @@ try { | ||
}; | ||
run.VERSION = VERSION; | ||
run.VERSION = version; | ||
run.search = curry$(function(engine, selector, input){ | ||
@@ -430,11 +434,17 @@ return run({ | ||
run.replace = curry$(function(engine, selector, replacement, input){ | ||
var args; | ||
args = { | ||
_: [selector], | ||
engine: getQueryEngine(engine) | ||
}; | ||
if (toString$.call(replacement).slice(8, -1) === 'Function') { | ||
args.replaceFunc = replacement; | ||
} else { | ||
args.replace = replacement; | ||
} | ||
return run({ | ||
args: { | ||
_: [selector], | ||
engine: getQueryEngine(engine), | ||
replace: replacement | ||
}, | ||
args: args, | ||
input: input, | ||
exit: function(arg$, results){ | ||
return results; | ||
return results[0]; | ||
} | ||
@@ -441,0 +451,0 @@ }); |
// Generated by LiveScript 1.2.0 | ||
(function(){ | ||
var optionator, options, getOptions; | ||
var optionator, options, ref$; | ||
optionator = require('optionator'); | ||
@@ -65,2 +65,7 @@ options = [ | ||
}, { | ||
option: 'replace-func', | ||
type: 'Function', | ||
description: 'use function instead of string pattern when using as library', | ||
hidden: true | ||
}, { | ||
option: 'to', | ||
@@ -192,22 +197,8 @@ alias: 't', | ||
]; | ||
getOptions = function(input, VERSION){ | ||
var ref$, parse, generateHelp, generateHelpForOption, result; | ||
ref$ = optionator({ | ||
prepend: 'Usage: grasp [option]... [selector] [file]...\n\nSearch (or --replace) for selector in file(s) or standard input.\nFor more help \'--help more\', \'--help --option-name\', \'--help syntax\'\nExample: grasp --context 2 \'if.test bi[op="<"]\' file.js file2.js', | ||
append: "Version " + VERSION + "\n<http://graspjs.com/>", | ||
mutuallyExclusive: [['replace', 'replace-file']], | ||
options: options | ||
}), parse = ref$.parse, generateHelp = ref$.generateHelp, generateHelpForOption = ref$.generateHelpForOption; | ||
result = parse(input); | ||
return { | ||
options: result, | ||
positional: result._, | ||
generateHelp: generateHelp, | ||
generateHelpForOption: generateHelpForOption | ||
}; | ||
}; | ||
module.exports = { | ||
options: options, | ||
getOptions: getOptions | ||
}; | ||
module.exports = (ref$ = optionator({ | ||
prepend: 'Usage: grasp [option]... [selector] [file]...\n\nSearch (or --replace) for selector in file(s) or standard input.\nFor more help \'--help more\', \'--help --option-name\', \'--help syntax\'\nExample: grasp --context 2 \'if.test bi[op="<"]\' file.js file2.js', | ||
append: "Version {{version}}\n<http://graspjs.com/>", | ||
mutuallyExclusive: [['replace', 'replace-file', 'replace-func']], | ||
options: options | ||
}), ref$.options = options, ref$); | ||
}).call(this); |
// Generated by LiveScript 1.2.0 | ||
(function(){ | ||
var ref$, lines, unlines, filter, getRaw, argsRegex, filterRegex, replacer, processReplacement, replace, slice$ = [].slice; | ||
ref$ = require('prelude-ls'), lines = ref$.lines, unlines = ref$.unlines, filter = ref$.filter; | ||
var ref$, lines, unlines, filter, fold, capitalize, camelize, dasherize, levn, getRaw, filterRegex, replacer, getReplacementFunc, replace, slice$ = [].slice, toString$ = {}.toString; | ||
ref$ = require('prelude-ls'), lines = ref$.lines, unlines = ref$.unlines, filter = ref$.filter, fold = ref$.fold, capitalize = ref$.capitalize, camelize = ref$.camelize, dasherize = ref$.dasherize; | ||
levn = require('levn'); | ||
getRaw = function(input, node){ | ||
@@ -15,17 +16,21 @@ var raw, that; | ||
}; | ||
argsRegex = /'((?:\\'|[^'])*)'|"((?:\\"|[^"])*)"|(\\.)|(\S+)/g; | ||
filterRegex = /\s+\|\s+([-a-zA-Z]+)((?:\s+(?:'(?:\\'|[^'])*'|"(?:\\"|[^"])*"|[^\|\s]+))*)/; | ||
replacer = function(input, node, queryEngine){ | ||
return function(arg$, replacementArg){ | ||
var ref$, selector, filters, that, origResults, e, results, rawPrepend, rawAppend, join, filterName, argsStr, args, pre, post, i$, len$, arg, result, n, len, rawResults, res$; | ||
ref$ = replacementArg.trim().split(filterRegex), selector = ref$[0], filters = slice$.call(ref$, 1); | ||
if (that = (ref$ = node._named) != null ? ref$[selector] : void 8) { | ||
origResults = [].concat(that); | ||
var origResults, ref$, filters, selector, that, e, results, rawPrepend, rawAppend, join, textOperations, filterName, argsStr, args, pre, post, i$, len$, arg, result, n, len, rawResults, res$, outputString; | ||
if (/^\s*\|\s+/.test(replacementArg)) { | ||
origResults = [node]; | ||
ref$ = (" " + replacementArg.trim()).split(filterRegex), filters = slice$.call(ref$, 1); | ||
} else { | ||
try { | ||
origResults = queryEngine.query(selector, node); | ||
} catch (e$) { | ||
e = e$; | ||
origResults = queryEngine.query(replacementArg, node); | ||
filters = []; | ||
ref$ = replacementArg.trim().split(filterRegex), selector = ref$[0], filters = slice$.call(ref$, 1); | ||
if (that = (ref$ = node._named) != null ? ref$[selector] : void 8) { | ||
origResults = [].concat(that); | ||
} else { | ||
try { | ||
origResults = queryEngine.query(selector, node); | ||
} catch (e$) { | ||
e = e$; | ||
origResults = queryEngine.query(replacementArg, node); | ||
filters = []; | ||
} | ||
} | ||
@@ -38,2 +43,3 @@ } | ||
join = null; | ||
textOperations = []; | ||
while (filters.length) { | ||
@@ -43,15 +49,11 @@ filterName = filters.shift(); | ||
argsStr += filters.shift(); | ||
args = []; | ||
if (argsStr) { | ||
while (that = argsRegex.exec(argsStr)) { | ||
args.push(filter(fn$, that)[1].replace(/\\(.)/g, '$1')); | ||
} | ||
argsRegex.lastIndex = 0; | ||
} | ||
if ((filterName === 'prepend' || filterName === 'before' || filterName === 'after' || filterName === 'prepend' || filterName === 'append' || filterName === 'wrap' || filterName === 'nth' || filterName === 'nth-last' || filterName === 'slice' || filterName === 'each') && !args.length) { | ||
args = levn.parse('Array', argsStr); | ||
if (!args.length && (filterName === 'prepend' || filterName === 'before' || filterName === 'after' || filterName === 'prepend' || filterName === 'append' || filterName === 'wrap' || filterName === 'nth' || filterName === 'nth-last' || filterName === 'slice' || filterName === 'each' || filterName === 'replace' || filterName === 'substring' || filterName === 'substr' || filterName === 'str-slice')) { | ||
throw new Error("No arguments supplied for '" + filterName + "' filter"); | ||
} else if (in$(filterName, ['replace']) && args.length < 2) { | ||
throw new Error("Must supply at least two arguments for '" + filterName + "' filter"); | ||
} | ||
switch (filterName) { | ||
case 'join': | ||
join = args.length ? args[0] : ''; | ||
join = args.length ? args[0] + "" : ''; | ||
break; | ||
@@ -62,3 +64,3 @@ case 'before': | ||
case 'after': | ||
rawAppend += args[0]; | ||
rawAppend += args[0] + ""; | ||
break; | ||
@@ -68,3 +70,3 @@ case 'wrap': | ||
rawPrepend = pre + "" + rawPrepend; | ||
rawAppend += post; | ||
rawAppend += post + ""; | ||
break; | ||
@@ -76,3 +78,3 @@ case 'prepend': | ||
type: 'Raw', | ||
raw: arg | ||
raw: arg + "" | ||
}); | ||
@@ -86,3 +88,3 @@ } | ||
type: 'Raw', | ||
raw: arg | ||
raw: arg + "" | ||
}); | ||
@@ -99,3 +101,3 @@ } | ||
result = results[i$]; | ||
result.rawPrepend = args[1] + "" + (result.rawPrepend || ''); | ||
result.rawPrepend = args[1] + "" + ((ref$ = result.rawPrepend) != null ? ref$ : ''); | ||
} | ||
@@ -106,3 +108,3 @@ break; | ||
result = results[i$]; | ||
result.rawAppend = (result.rawAppend || '') + "" + args[1]; | ||
result.rawAppend = ((ref$ = result.rawAppend) != null ? ref$ : '') + "" + args[1]; | ||
} | ||
@@ -116,4 +118,4 @@ break; | ||
result = results[i$]; | ||
result.rawPrepend = pre + "" + (result.rawPrepend || ''); | ||
result.rawAppend = (result.rawAppend || '') + "" + post; | ||
result.rawPrepend = pre + "" + ((ref$ = result.rawPrepend) != null ? ref$ : ''); | ||
result.rawAppend = ((ref$ = result.rawAppend) != null ? ref$ : '') + "" + post; | ||
} | ||
@@ -153,2 +155,35 @@ break; | ||
break; | ||
case 'replace': | ||
(fn$.call(this, args)); | ||
break; | ||
case 'lowercase': | ||
textOperations.push(fn1$); | ||
break; | ||
case 'uppercase': | ||
textOperations.push(fn2$); | ||
break; | ||
case 'capitalize': | ||
textOperations.push(capitalize); | ||
break; | ||
case 'uncapitalize': | ||
textOperations.push(fn3$); | ||
break; | ||
case 'camelize': | ||
textOperations.push(camelize); | ||
break; | ||
case 'dasherize': | ||
textOperations.push(dasherize); | ||
break; | ||
case 'trim': | ||
textOperations.push(fn4$); | ||
break; | ||
case 'substring': | ||
(fn5$.call(this, args)); | ||
break; | ||
case 'substr': | ||
(fn6$.call(this, args)); | ||
break; | ||
case 'str-slice': | ||
(fn7$.call(this, args)); | ||
break; | ||
default: | ||
@@ -164,20 +199,70 @@ throw new Error("Invalid filter: " + filterName + (argsStr ? " " + argsStr : '')); | ||
rawResults = res$; | ||
return rawPrepend + "" + (join != null | ||
outputString = rawPrepend + "" + (join != null | ||
? rawResults.join(join) | ||
: rawResults[0]) + rawAppend; | ||
if (textOperations.length) { | ||
return fold(curry$(function(x$, y$){ | ||
return y$(x$); | ||
}), outputString, textOperations); | ||
} else { | ||
return outputString; | ||
} | ||
} else { | ||
return ''; | ||
} | ||
function fn$(it){ | ||
return it != null; | ||
function fn$(args){ | ||
textOperations.push(function(it){ | ||
return it.replace(args[0], args[1]); | ||
}); | ||
} | ||
function fn1$(it){ | ||
return it.toLowerCase(); | ||
} | ||
function fn2$(it){ | ||
return it.toUpperCase(); | ||
} | ||
function fn3$(it){ | ||
return it.charAt(0).toLowerCase() + it.slice(1); | ||
} | ||
function fn4$(it){ | ||
return it.trim(); | ||
} | ||
function fn5$(args){ | ||
textOperations.push(function(it){ | ||
return it.substring(args[0], args[1]); | ||
}); | ||
} | ||
function fn6$(args){ | ||
textOperations.push(function(it){ | ||
return it.substr(args[0], args[1]); | ||
}); | ||
} | ||
function fn7$(args){ | ||
textOperations.push(function(it){ | ||
return it.slice(args[0], args[1]); | ||
}); | ||
} | ||
}; | ||
}; | ||
processReplacement = function(replacement, input, node, queryEngine){ | ||
return replacement.replace(/\\n/g, '\n').replace(/{{}}/g, function(){ | ||
return getRaw(input, node); | ||
}).replace(/{{((?:[^}]|}[^}])+)}}/g, replacer(input, node, queryEngine)); | ||
getReplacementFunc = function(replacement, input, queryEngine){ | ||
var replacementPrime; | ||
if (toString$.call(replacement).slice(8, -1) === 'Function') { | ||
return function(node){ | ||
return replacement(function(it){ | ||
return getRaw(input, it); | ||
}, node, function(it){ | ||
return queryEngine.query(it, node); | ||
}, node._named); | ||
}; | ||
} else { | ||
replacementPrime = replacement.replace(/\\n/g, '\n'); | ||
return function(node){ | ||
return replacementPrime.replace(/{{}}/g, function(){ | ||
return getRaw(input, node); | ||
}).replace(/{{((?:[^}]|}[^}])+)}}/g, replacer(input, node, queryEngine)); | ||
}; | ||
} | ||
}; | ||
replace = function(replacement, input, nodes, queryEngine){ | ||
var inputLines, colOffset, lineOffset, lastLine, prevNode, i$, len$, node, ref$, start, end, startLineNum, endLineNum, numberOfLines, startCol, endCol, replaceLines, startLine, endLine, startContext, endContext, replaceLast, endLen; | ||
var inputLines, colOffset, lineOffset, lastLine, prevNode, replaceNode, i$, len$, node, ref$, start, end, startLineNum, endLineNum, numberOfLines, startCol, endCol, replaceLines, startLine, endLine, startContext, endContext, replaceLast, endLen; | ||
inputLines = lines(input); | ||
@@ -190,2 +275,3 @@ colOffset = 0; | ||
}; | ||
replaceNode = getReplacementFunc(replacement, input, queryEngine); | ||
for (i$ = 0, len$ = nodes.length; i$ < len$; ++i$) { | ||
@@ -203,3 +289,3 @@ node = nodes[i$]; | ||
endCol = end.column + (startLineNum === endLineNum ? colOffset : 0); | ||
replaceLines = lines(processReplacement(replacement, input, node, queryEngine)); | ||
replaceLines = lines(replaceNode(node)); | ||
startLine = inputLines[startLineNum]; | ||
@@ -209,3 +295,3 @@ endLine = inputLines[endLineNum]; | ||
endContext = endLine.slice(endCol); | ||
replaceLines[0] = startContext + "" + replaceLines[0]; | ||
replaceLines[0] = startContext + "" + ((ref$ = replaceLines[0]) != null ? ref$ : ''); | ||
replaceLast = replaceLines[replaceLines.length - 1]; | ||
@@ -225,2 +311,20 @@ endLen = replaceLast.length; | ||
}; | ||
function in$(x, xs){ | ||
var i = -1, l = xs.length >>> 0; | ||
while (++i < l) if (x === xs[i]) return true; | ||
return false; | ||
} | ||
function curry$(f, bound){ | ||
var context, | ||
_curry = function(args) { | ||
return f.length > 1 ? function(){ | ||
var params = args ? args.concat() : []; | ||
context = bound ? context || this : this; | ||
return params.push.apply(params, arguments) < | ||
f.length && arguments.length ? | ||
_curry.call(context, params) : f.apply(context, params); | ||
} : f; | ||
}; | ||
return _curry(); | ||
} | ||
}).call(this); |
{ | ||
"name": "grasp", | ||
"author": "George Zahariev", | ||
"version": "0.2.1", | ||
"version": "0.3.0", | ||
"homepage": "http://graspjs.com", | ||
@@ -44,17 +44,18 @@ "description": "JavaScript structural search, replace, and refactor", | ||
"dependencies": { | ||
"acorn": "~0.4.2", | ||
"prelude-ls": "~1.0.3", | ||
"cli-color": "~0.2.2", | ||
"async": "~0.2.9", | ||
"optionator": "~0.1.1", | ||
"grasp-squery": "~0.2.1", | ||
"grasp-equery": "~0.2.0", | ||
"grasp-syntax-javascript": "~0.1.0" | ||
"acorn": "~0.6.0", | ||
"prelude-ls": "~1.1.1", | ||
"cli-color": "~0.3.2", | ||
"async": "~0.9.0", | ||
"optionator": "~0.5.0", | ||
"grasp-squery": "~0.2.2", | ||
"grasp-equery": "~0.2.2", | ||
"grasp-syntax-javascript": "~0.1.0", | ||
"levn": "~0.2.4" | ||
}, | ||
"devDependencies": { | ||
"LiveScript": "~1.2.0", | ||
"mocha": "~1.8.2", | ||
"istanbul": "~0.1.43" | ||
"LiveScript": "~1.3.1", | ||
"mocha": "~2.1.0", | ||
"istanbul": "~0.3.5" | ||
}, | ||
"preferGlobal": true | ||
} |
51794
1278
9
+ Addedlevn@~0.2.4
+ Addedasync@0.9.2(transitive)
+ Addedcli-color@0.3.3(transitive)
+ Addedd@0.1.11.0.2(transitive)
+ Addedes5-ext@0.10.64(transitive)
+ Addedes6-iterator@0.1.32.0.3(transitive)
+ Addedes6-symbol@2.0.13.1.4(transitive)
+ Addedes6-weak-map@0.1.4(transitive)
+ Addedesniff@2.0.1(transitive)
+ Addedevent-emitter@0.3.5(transitive)
+ Addedext@1.7.0(transitive)
+ Addedfast-levenshtein@1.0.7(transitive)
+ Addedlru-queue@0.1.0(transitive)
+ Addedmemoizee@0.3.10(transitive)
+ Addednext-tick@0.2.21.1.0(transitive)
+ Addedoptionator@0.5.0(transitive)
+ Addedtimers-ext@0.1.8(transitive)
+ Addedtype@2.7.3(transitive)
- Removedacorn@0.4.2(transitive)
- Removedasync@0.2.10(transitive)
- Removedcli-color@0.2.3(transitive)
- Removedes5-ext@0.9.2(transitive)
- Removedevent-emitter@0.2.2(transitive)
- Removedlevenshtein-damerau@0.1.0(transitive)
- Removedmemoizee@0.2.6(transitive)
- Removednext-tick@0.1.0(transitive)
- Removedoptionator@0.1.1(transitive)
Updatedacorn@~0.6.0
Updatedasync@~0.9.0
Updatedcli-color@~0.3.2
Updatedgrasp-equery@~0.2.2
Updatedgrasp-squery@~0.2.2
Updatedoptionator@~0.5.0
Updatedprelude-ls@~1.1.1