diff --git a/src/api.js b/src/api.js index f6bedd0..1ec5758 100644 --- a/src/api.js +++ b/src/api.js @@ -9,7 +9,7 @@ const convert = ({ files, outputPath, outputType, name }) => { execS('which convert', (error) => { if (error) reject(error) - const outputName = name || createOutputFileName(files, outputType) + const outputName = name || createOutputFileName(outputType)(files) const command = [ 'convert', ...files.map(replaceSpaceCharacters), // input files diff --git a/src/components/Converter.jsx b/src/components/Converter.jsx index 58ff148..73c30b0 100644 --- a/src/components/Converter.jsx +++ b/src/components/Converter.jsx @@ -21,8 +21,7 @@ import { STAGING, CONVERTING, FAILED, - DONE, - operations + DONE } from '../helpers/constants' const drop = (props, monitor, component) => { @@ -132,7 +131,7 @@ class Sanitizer extends Component { {/* TODO make this compose better */}
diff --git a/src/helpers/functional.js b/src/helpers/functional.js new file mode 100644 index 0000000..cf47361 --- /dev/null +++ b/src/helpers/functional.js @@ -0,0 +1,11 @@ +const pluck = key => obj => obj[key] + +const map = f => mappable => mappable.map(f) + +const compose = (...fns) => res => fns.reduce((accum, next) => next(accum), res) + +module.exports = { + pluck, + map, + compose +} diff --git a/src/helpers/util.js b/src/helpers/util.js index 01321e3..0b4cd33 100644 --- a/src/helpers/util.js +++ b/src/helpers/util.js @@ -1,3 +1,5 @@ +const { pluck, compose, map } = require('./functional') + const replaceSpaceCharacters = str => str.replace(/\s/g, '\\ ') @@ -13,7 +15,7 @@ const filterImages = files => Object.keys(files) .map(key => files[key]) .filter(file => file.type.includes('image')) -const createOutputFileName = (files, outputType) => `ALCHEMY-${concatFiles(files)}.${outputType || 'pdf'}` +const createOutputFileName = outputType => files => `ALCHEMY-${concatFiles(files)}.${outputType || 'pdf'}` function centerEllipsis(str, length = 7) { return (str.length > (length * 2) + 1) ? @@ -21,9 +23,8 @@ function centerEllipsis(str, length = 7) { str } -// TODO curry? -const displayOutputFileName = (files, outputType) => - centerEllipsis(createOutputFileName(filterImages(files).map(f => f.path), outputType)) +const displayOutputFileName = outputType => + compose(filterImages, map(pluck('path')), createOutputFileName(outputType), centerEllipsis) const uniqueFiles = (files, newArray) => newArray.reduce((accum, next) => {