diff options
author | isaacs <i@izs.me> | 2011-03-25 02:06:26 +0300 |
---|---|---|
committer | isaacs <i@izs.me> | 2011-03-25 02:06:26 +0300 |
commit | 5630986a1a5c414f8a6185fda08096432da86d6b (patch) | |
tree | 0a43fee03e9e57cd4dbd9cecfa985b663a3bbf61 | |
parent | 9e15a43b5a97279acaf310ecd281fdfbd414cd4b (diff) |
Move abbrev to a submodule/dependency
-rw-r--r-- | .gitmodules | 3 | ||||
-rw-r--r-- | lib/utils/abbrev.js | 106 | ||||
-rw-r--r-- | lib/utils/parse-args.js | 2 | ||||
m--------- | node_modules/abbrev | 0 | ||||
-rw-r--r-- | npm.js | 2 | ||||
-rw-r--r-- | package.json | 4 |
6 files changed, 7 insertions, 110 deletions
diff --git a/.gitmodules b/.gitmodules index 67f8c059e..24407ab9a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "node_modules/semver"] path = node_modules/semver url = git://github.com/isaacs/node-semver.git +[submodule "node_modules/abbrev"] + path = node_modules/abbrev + url = git://github.com/isaacs/abbrev-js.git diff --git a/lib/utils/abbrev.js b/lib/utils/abbrev.js deleted file mode 100644 index 3d03fac38..000000000 --- a/lib/utils/abbrev.js +++ /dev/null @@ -1,106 +0,0 @@ - -module.exports = exports = abbrev.abbrev = abbrev - -abbrev.monkeyPatch = monkeyPatch - -function monkeyPatch () { - Array.prototype.abbrev = function () { return abbrev(this) } - Object.prototype.abbrev = function () { return abbrev(Object.keys(this)) } -} - -function abbrev (list) { - if (arguments.length !== 1 || !Array.isArray(list)) { - list = Array.prototype.slice.call(arguments, 0) - } - for (var i = 0, l = list.length, args = [] ; i < l ; i ++) { - args[i] = typeof list[i] === "string" ? list[i] : String(list[i]) - } - - // sort them lexicographically, so that they're next to their nearest kin - args = args.sort(lexSort) - - // walk through each, seeing how much it has in common with the next and previous - var abbrevs = {} - , prev = "" - for (var i = 0, l = args.length ; i < l ; i ++) { - var current = args[i] - , next = args[i + 1] || "" - , nextMatches = true - , prevMatches = true - if (current === next) continue - for (var j = 0, cl = current.length ; j < cl ; j ++) { - var curChar = current.charAt(j) - nextMatches = nextMatches && curChar === next.charAt(j) - prevMatches = prevMatches && curChar === prev.charAt(j) - if (nextMatches || prevMatches) continue - else { - j ++ - break - } - } - prev = current - if (j === cl) { - abbrevs[current] = current - continue - } - for (var a = current.substr(0, j) ; j <= cl ; j ++) { - abbrevs[a] = current - a += current.charAt(j) - } - } - return abbrevs -} - -function lexSort (a, b) { - return a === b ? 0 : a > b ? 1 : -1 -} - - -// tests -if (module === require.main) { - -var assert = require("assert") - , sys -sys = require(process.binding("native").util ? "util" : "sys") - -console.log("running tests") -function test (list, expect) { - var actual = abbrev(list) - assert.deepEqual(actual, expect, - "abbrev("+sys.inspect(list)+") === " + sys.inspect(expect) + "\n"+ - "actual: "+sys.inspect(actual)) - actual = abbrev.apply(exports, list) - assert.deepEqual(abbrev.apply(exports, list), expect, - "abbrev("+list.map(JSON.stringify).join(",")+") === " + sys.inspect(expect) + "\n"+ - "actual: "+sys.inspect(actual)) -} - -test([ "ruby", "ruby", "rules", "rules", "rules" ], -{ rub: 'ruby' -, ruby: 'ruby' -, rul: 'rules' -, rule: 'rules' -, rules: 'rules' -}) -test(["fool", "foom", "pool", "pope"], -{ fool: 'fool' -, foom: 'foom' -, poo: 'pool' -, pool: 'pool' -, pop: 'pope' -, pope: 'pope' -}) -test(["a", "ab", "abc", "abcd", "abcde", "acde"], -{ a: 'a' -, ab: 'ab' -, abc: 'abc' -, abcd: 'abcd' -, abcde: 'abcde' -, ac: 'acde' -, acd: 'acde' -, acde: 'acde' -}) - -console.log("pass") - -}
\ No newline at end of file diff --git a/lib/utils/parse-args.js b/lib/utils/parse-args.js index 52dd1aefb..6dfe2a6ee 100644 --- a/lib/utils/parse-args.js +++ b/lib/utils/parse-args.js @@ -3,7 +3,7 @@ var url = require("url") , path = require("path") , Stream = require("stream").Stream - , abbrev = require("./abbrev") + , abbrev = require("abbrev") , log = require("./log") module.exports = exports = parseArgs diff --git a/node_modules/abbrev b/node_modules/abbrev new file mode 160000 +Subproject 3d509ef6a503703e357f2ffa1df05e4f09a43bb @@ -18,7 +18,7 @@ var EventEmitter = require("events").EventEmitter , log = require("./lib/utils/log") , fs = require("./lib/utils/graceful-fs") , path = require("path") - , abbrev = require("./lib/utils/abbrev") + , abbrev = require("abbrev") , which = require("./lib/utils/which") , semver = require("semver") , findPrefix = require("./lib/utils/find-prefix") diff --git a/package.json b/package.json index de4355b9c..10971eb78 100644 --- a/package.json +++ b/package.json @@ -49,8 +49,8 @@ } , "main" : "npm" , "bin" : "./bin/npm.js" -, "dependencies" : { "semver" : "1" } -, "bundleDependencies" : [ "semver" ] +, "dependencies" : { "semver" : "1", "abbrev" : "1" } +, "bundleDependencies" : [ "semver", "abbrev" ] , "devDependencies" : { "ronn" : "" } , "engines" : { "node" : "0.4 || 0.5", "npm" : "1" } , "scripts" : { "test" : "make test" |