140-opts 中文文档教程
140-opts
命令行参数解析器。 这个作用不大。 但它在一条推文中立足。
Installation
$ npm install 140-opts
或者,只需将文件复制到您的存储库中并避免额外的 package.json
依赖项:
$ curl https://cdn.rawgit.com/mklabs/140-opts/master/opts.js > 140-opts.js
# or maybe
$ git clone https://github.com/mklabs/140-opts.git lib/140-opts
Code
module.exports = function(a){return a.map(function(c,d){return{n:c.match(/^--?(.+)/),v:a[d+1]||!0}}).reduce(function(a,b){b.n&&(a[b.n[1]]=b.v);return a},{})}
以一种稍微更易读的方式
// 242-opts
module.exports = function (a) {
return a
.map(function (c, d) {
return {
n: c.match(/^--?(.+)/),
v: a[d+1]||!0
};
})
.reduce(function (a, b) {
b.n&&(a[b.n[1]]=b.v);
return a;
}, {})
};
Usage
var opts = require('140-opts')(process.argv.slice(2));
console.log(opts);
采用单个参数,一个要解析的字符串数组,通常是 process。 argv.slice(2)。
var opts = require('140-opts');
var argv = opts(['--foo', 'foo', '--bar', 'bar', '-b', 'baz', '-o', 'woot', '--blah']);
assert.deepEqual(argv, {
foo: 'foo',
bar: 'bar',
b: 'baz',
o: 'woot',
blah: true
});
Tests
$ node test
Success!
$ --foo foo --bar bar -b baz -o woot --blah
{ foo: 'foo', bar: 'bar', b: 'baz', o: 'woot', blah: true }
\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/ \o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/ \o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/ We did it! \o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/ \o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/ \o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/
教育和实验,做 140bytes 节点代码片段 有点傻……但是很有趣! 这是一个学习一些东西的好机会 超级有趣的字节节省技术
140-opts
Command line arguments parser. This one doesn't do much. But it feets in a tweet.
Installation
$ npm install 140-opts
Alternately, to just copy the file into your repo and avoid an additional package.json
dependency:
$ curl https://cdn.rawgit.com/mklabs/140-opts/master/opts.js > 140-opts.js
# or maybe
$ git clone https://github.com/mklabs/140-opts.git lib/140-opts
Code
module.exports = function(a){return a.map(function(c,d){return{n:c.match(/^--?(.+)/),v:a[d+1]||!0}}).reduce(function(a,b){b.n&&(a[b.n[1]]=b.v);return a},{})}
in a sligtly more readable way
// 242-opts
module.exports = function (a) {
return a
.map(function (c, d) {
return {
n: c.match(/^--?(.+)/),
v: a[d+1]||!0
};
})
.reduce(function (a, b) {
b.n&&(a[b.n[1]]=b.v);
return a;
}, {})
};
Usage
var opts = require('140-opts')(process.argv.slice(2));
console.log(opts);
Takes a single argument, an array of String to parse, usually process.argv.slice(2)
.
var opts = require('140-opts');
var argv = opts(['--foo', 'foo', '--bar', 'bar', '-b', 'baz', '-o', 'woot', '--blah']);
assert.deepEqual(argv, {
foo: 'foo',
bar: 'bar',
b: 'baz',
o: 'woot',
blah: true
});
Tests
$ node test
Success!
$ --foo foo --bar bar -b baz -o woot --blah
{ foo: 'foo', bar: 'bar', b: 'baz', o: 'woot', blah: true }
\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/ \o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/ \o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/ We did it! \o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/ \o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/ \o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/
\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/
educational and experimental, doing 140bytes snippet of node code is kinda silly… But it's fun! And it's a good opportunity to learn some super-interesting byte saving techniques