'use strict'; const config = require('config'); const dateFns = require('date-fns'); const extensions = { 'image/jpeg': '.jpg', 'image/gif': '.gif', 'video/mp4': '.mp4', 'video/webm': '.webm' }; function interpolate(path, post, item) { const dateFormat = config.patterns.dateformat || 'YYYYMMDD'; const vars = { $postId: post.id, $postTitle: post.title, $postUser: post.user, $postDate: dateFns.format(post.datetime, dateFormat), $postIndex: post.index + config.patterns.indexOffset }; if(post.content.album) { Object.assign(vars, { $albumId: post.content.album.id, $albumTitle: post.content.album.title, $albumDescription: post.content.album.description, $albumDate: dateFns.format(post.content.album.datetime, dateFormat) }); } if(item) { Object.assign(vars, { $itemId: item.id, $itemTitle: item.title, $itemDescription: item.description, $itemDate: dateFns.format(item.datetime, dateFormat), $itemIndex: item.index + config.patterns.indexOffset, $ext: extensions[item.type] }); } return Object.entries(vars).reduce((acc, [key, value], index) => { // strip slashes for filesystem compatability value = (value || '').toString().replace(/\//g, config.patterns.slashSubstitute); return acc.replace(key, value); }, path); }; module.exports = interpolate;