UNPKG

festivals-importer

Version:
135 lines (109 loc) 2.72 kB
var JM = require('json-mapper'); var moment = require('moment-timezone'); var map = { name: ['kp_tytul', function (name) { return name; }], description: ['kp_opis', function (description) { return description; }], authors: function (elem) { var authorName = elem.kp_prowadzacy; var organization = null; var authors = []; var regex = /^(.+) ?\((.+)\)$/; var result = authorName.match(regex); if (result) { authorName = result[1]; organization = result[2].trim(); } const authorList = authorName.split(','); if (authorList && authorList.length) { authors = authorList.map(function (author) { return { name: author.trim(), organization: organization }; }); } return authors; }, categories: ['kp_blok', function (categoryName) { const category = { parent: null, name: categoryName }; return [category]; }], duration: function (elem) { const startAt = moment(elem.kp_data); const endAt = moment(startAt).add(elem.kp_dlugosc, 'minutes'); return { startAt: startAt.toISOString(), finishAt: endAt.toISOString() }; }, places: function (elem) { const placeName = elem.kp_sala; var places = []; const regex = /^(.+) ?\((.+)\)$/; const result = placeName.match(regex); if (!result) { places.push(placeName); } else { var parents = result[2].trim(); var parentList = parents.split(','); if (parentList && parentList.length) { places = parentList.map(function (parent) { return parent.trim(); }); } places.push(result[1].trim()); } var results = []; var parent = null; if (places && places.length) { results = places.map(function (name) { const place = { parent: parent, name: name, openingTimes: [] }; parent = place; return place; }); } return results; }, metadata: function (elem) { return [elem.kp_id, elem.kp_key]; }, tags: function (elem) { var tags = []; if (elem.kp_tytul.indexOf('[Panel]') > -1) { tags.push('panel'); } return tags; } }; var handle = function handle(data, callback) { var converter = JM.makeConverter({ events: JM.ch( function (arr) { const con = JM.makeConverter(map); var events = []; if (arr && arr.length) { events = arr.map(function (item) { return con(item); }); } return events; } ) }); return callback(null, converter(data)); }; module.exports = { handle: handle };