in src/parser/parse.js [27:61]
function parse(text, opts = {}) {
if (!text) {
return Promise.reject('No data to parse');
}
const format = opts.format || 'wdl';
const subWfDetailing = (opts.subWfDetailing && _.isArray(opts.subWfDetailing)) ? opts.subWfDetailing : null;
const recursionDepth = opts.recursionDepth || 0;
const baseURI = opts.baseURI || null;
const zipFile = opts.zipFile || null;
if (format === 'wdl') {
if (zipFile) {
const wdlArray = opts.wdlArray || [];
return JSZip.loadAsync(zipFile).then((files) => {
const zipWdlFiles = [];
files.forEach((relativePath, zipEntry) => {
if (!zipEntry.dir && zipEntry.name.indexOf('.wdl') === zipEntry.name.length - 4) {
zipWdlFiles.push(zipEntry);
}
});
return Promise.all(zipWdlFiles.map(zipWdlFile => zipWdlFile.async('string').then(str => ({
name: zipWdlFile.name.split('/').pop(),
wdl: str,
}))))
.then(zipWdlArray => parseWDL(
text,
{ wdlArray: wdlArray.concat(zipWdlArray), baseURI, subWfDetailing, recursionDepth },
));
}, e => Promise.reject(`Parse zip file: ${e}`));
}
return parseWDL(text, opts);
}
return Promise.reject(`Unsupported format: ${format}`);
}