* Argument Parsing
(argv)
| 117 | * Argument Parsing |
| 118 | */ |
| 119 | function parseArg(argv) { |
| 120 | argv = argv.slice(2); |
| 121 | |
| 122 | const options = {}; |
| 123 | const orphans = []; |
| 124 | |
| 125 | function getArg() { |
| 126 | let arg = argv.shift(); |
| 127 | |
| 128 | if (arg.indexOf('--') === 0) { |
| 129 | // e.g. --opt |
| 130 | arg = arg.split('='); |
| 131 | if (arg.length > 1) { |
| 132 | // e.g. --opt=val |
| 133 | argv.unshift(arg.slice(1).join('=')); |
| 134 | } |
| 135 | arg = arg[0]; |
| 136 | } else if (arg[0] === '-') { |
| 137 | if (arg.length > 2) { |
| 138 | // e.g. -abc |
| 139 | argv = arg |
| 140 | .substring(1) |
| 141 | .split('') |
| 142 | .map((ch) => `-${ch}`) |
| 143 | .concat(argv); |
| 144 | arg = argv.shift(); |
| 145 | } else { |
| 146 | // e.g. -a |
| 147 | } |
| 148 | } else { |
| 149 | // e.g. foo |
| 150 | } |
| 151 | |
| 152 | return arg; |
| 153 | } |
| 154 | |
| 155 | const defaults = marked.getDefaults(); |
| 156 | |
| 157 | while (argv.length) { |
| 158 | const arg = getArg(); |
| 159 | if (arg.indexOf('--') === 0) { |
| 160 | const opt = camelize(arg.replace(/^--(no-)?/, '')); |
| 161 | if (!(opt in defaults)) { |
| 162 | continue; |
| 163 | } |
| 164 | options.marked = options.marked || {}; |
| 165 | if (arg.indexOf('--no-') === 0) { |
| 166 | options.marked[opt] = typeof defaults[opt] !== 'boolean' ? null : false; |
| 167 | } else { |
| 168 | options.marked[opt] = |
| 169 | typeof defaults[opt] !== 'boolean' ? argv.shift() : true; |
| 170 | } |
| 171 | } else { |
| 172 | orphans.push(arg); |
| 173 | } |
| 174 | } |
| 175 | |
| 176 | if (orphans.length > 0) { |