const Entities = require('html-entities').AllHtmlEntities
const htmlEntities = new Entities()
const neufNormalizer = ({ entities }) => {
entities = decodeTitles(entities)
entities = mapEventsToEventTypes(entities)
return entities
}
exports.neufNormalizer = neufNormalizer
const decodeTitles = entities => {
return entities.map(e => {
if (e.title) {
e.title = htmlEntities.decode(e.title)
}
return e
})
}
const mapEventsToEventTypes = entities => {
const eventTaxonomies = [`wordpress__wp_event_types`]
const eventTypes = entities.filter(e => eventTaxonomies.includes(e.__type))
return entities.map(e => {
// Replace event types with links to their nodes.
let eventHasType =
e.event_types && Array.isArray(e.event_types) && e.event_types.length
if (eventTypes.length && eventHasType) {
e.event_types___NODE = e.event_types.map(
t =>
eventTypes.find(
tObj =>
(Number.isInteger(t) ? t : t.wordpress_id) === tObj.wordpress_id
).id
)
delete e.event_types
}
return e
})
}