2019-06-25 03:50:46 +00:00
|
|
|
import { safeDump, safeLoadAll } from 'js-yaml';
|
2019-06-16 21:15:01 +00:00
|
|
|
|
2019-06-16 21:35:18 +00:00
|
|
|
import { CONFIG_SCHEMA } from 'src/config/schema';
|
2019-06-16 21:15:01 +00:00
|
|
|
import { Parser } from 'src/parser';
|
|
|
|
|
|
|
|
export class YamlParser implements Parser {
|
2019-06-25 03:50:46 +00:00
|
|
|
dump(...data: Array<any>): string {
|
2019-06-25 04:02:28 +00:00
|
|
|
const docs: Array<any> = [];
|
|
|
|
for (const doc of data) {
|
|
|
|
const part = safeDump(doc, {
|
|
|
|
schema: CONFIG_SCHEMA,
|
|
|
|
});
|
|
|
|
docs.push(part);
|
|
|
|
}
|
|
|
|
return docs.join('\n---\n\n');
|
2019-06-16 21:35:18 +00:00
|
|
|
}
|
|
|
|
|
2019-06-25 03:50:46 +00:00
|
|
|
parse(body: string): Array<any> {
|
|
|
|
const docs: Array<any> = [];
|
|
|
|
safeLoadAll(body, (doc: any) => docs.push(doc), {
|
2019-06-16 21:15:01 +00:00
|
|
|
schema: CONFIG_SCHEMA,
|
|
|
|
});
|
2019-06-25 03:50:46 +00:00
|
|
|
return docs;
|
2019-06-16 21:15:01 +00:00
|
|
|
}
|
|
|
|
}
|