我正在用javascript构建一个“终端事物”。这个想法是每个命令都是一个单独的 .js 文件,采用 AMD 格式,并且所有内容都使用 requirejs 加载。
我希望命令被称为:
command -s "string u-l: extra" -g http://domain.com/random.txt -r -a --test fixed
这将转化为类似的东西:
command({'-s': 'string u-l: extra', '-g': 'http://domain.com/random.txt', '-r': true, '-a': true, '--test': 'fixed'});
但这就是我卡住的地方,我尝试在脑海中运行不同的场景,但我找不到任何好的答案,但我可以提出冲突:
- split() - 如果有一些额外的空格会破坏一切
- 正则表达式 - 正则表达式每次都依赖于获取相似的字符串,如果我想要“wget http://code.jquery.com/jquery-1.8.3.min.js ”之类的东西怎么办?
- 在命令本身中定义规则 - 仍然需要弄清楚解析
- 管道 - 如果我想要管道,我必须弄清楚如何不破坏错误的管道,即:“command -s 'random | pipe' | command2 asd”
任何想法/建议将不胜感激,我坚持这一点。