MCPcopy Create free account
hub / github.com/markedjs/marked / parseArg

Function parseArg

test/bench.js:119–184  ·  view source on GitHub ↗

* Argument Parsing

(argv)

Source from the content-addressed store, hash-verified

117 * Argument Parsing
118 */
119function 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) {

Callers 1

mainFunction · 0.85

Calls 2

getArgFunction · 0.70
camelizeFunction · 0.70

Tested by

no test coverage detected