Addresses #50 - parses delimeters that all allow embedded spaces
This commit is contained in:
parent
97d567c9fb
commit
e0703c7349
@ -45,6 +45,36 @@ const FS = ({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const parseArgs = (command) => {
|
||||||
|
let args = [];
|
||||||
|
let nextDelimiter = 0;
|
||||||
|
let prevDelimiter = 0;
|
||||||
|
while((nextDelimiter = command.indexOf(' ', prevDelimiter)) >= 0) {
|
||||||
|
let arg = command.substring(prevDelimiter, nextDelimiter)
|
||||||
|
|
||||||
|
if (arg[0] === '\'' || arg[0] === '\"') {
|
||||||
|
const delimeter = arg[0];
|
||||||
|
const newNext = command.indexOf(delimeter, prevDelimiter + 1);
|
||||||
|
|
||||||
|
if (newNext < 0) throw `Bad command espcape ${delimeter} sequence near ${nextDelimiter}`
|
||||||
|
|
||||||
|
arg = command.substring(prevDelimiter+1, newNext);
|
||||||
|
prevDelimiter = newNext + 2;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
prevDelimiter = nextDelimiter + 1;
|
||||||
|
|
||||||
|
if (arg === "") {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
args.push(arg)
|
||||||
|
}
|
||||||
|
|
||||||
|
return args;
|
||||||
|
}
|
||||||
|
|
||||||
const run = ({
|
const run = ({
|
||||||
payload: {
|
payload: {
|
||||||
args: _args,
|
args: _args,
|
||||||
@ -53,7 +83,7 @@ const run = ({
|
|||||||
if (Module === null) {
|
if (Module === null) {
|
||||||
throw NO_LOAD_ERROR;
|
throw NO_LOAD_ERROR;
|
||||||
} else {
|
} else {
|
||||||
const args = [...defaultArgs, ..._args.trim().split(' ')].filter((s) => s.length !== 0);
|
const args = [...defaultArgs, ...parseArgs(_args))].filter((s) => s.length !== 0);
|
||||||
ffmpeg(args.length, strList2ptr(Module, args));
|
ffmpeg(args.length, strList2ptr(Module, args));
|
||||||
res.resolve({
|
res.resolve({
|
||||||
message: `Complete ${args.join(' ')}`,
|
message: `Complete ${args.join(' ')}`,
|
||||||
|
Loading…
Reference in New Issue
Block a user