dsl-framework
Version:
Easy function chaining.
22 lines (17 loc) • 696 B
JavaScript
/* eslint-disable block-spacing */
/* eslint-disable brace-style */
const getArrayData = require('../lib/get-array-data.js')
const { extractCallbackData } = require('./extractCallbackData.js')
module.exports = (baseObject) => {
return (kind) => function (...args) {
const commands = getArrayData(args)
const {
baseKindArguments,
trueCaseFunction,
falseCaseFunction
} = extractCallbackData(...commands)
return baseKindArguments.map(command => {
const actualCommand = [...command]
trueCaseFunction && actualCommand.push(trueCaseFunction)
falseCaseFunction && actualCommand.push(falseCaseFunction)
return baseObject[kind](command)})}}