47 lines
1.1 KiB
JavaScript
Raw Normal View History

import yaml from 'js-yaml';
import moment from 'moment';
2016-06-10 00:16:01 -03:00
import MediaProxy from '../valueObjects/MediaProxy';
const MomentType = new yaml.Type('date', {
kind: 'scalar',
predicate: function(value) {
return moment.isMoment(value);
},
represent: function(value) {
return value.format(value._f);
},
resolve: function(value) {
return moment.isMoment(value) && value._f;
}
});
const ImageType = new yaml.Type('image', {
kind: 'scalar',
2016-06-10 00:16:01 -03:00
instanceOf: MediaProxy,
represent: function(value) {
2016-07-19 17:11:22 -03:00
return `${value.path}`;
},
resolve: function(value) {
if (value === null) return false;
2016-06-10 00:16:01 -03:00
if (value instanceof MediaProxy) return true;
return false;
}
});
const OutputSchema = new yaml.Schema({
include: yaml.DEFAULT_SAFE_SCHEMA.include,
implicit: [MomentType, ImageType].concat(yaml.DEFAULT_SAFE_SCHEMA.implicit),
explicit: yaml.DEFAULT_SAFE_SCHEMA.explicit
});
export default class YAML {
fromFile(content) {
return yaml.safeLoad(content);
}
toFile(data) {
return yaml.safeDump(data, {schema: OutputSchema});
}
}