'use strict'

// For any type of "thing to parse", there's >=1 parse functions.
// By composing custom parse function(s) with the default ones, one
// can customize the behaviour of hafas-client. Profiles extensively
// use this mechanism.

// Each parse function has the following signature:
// ({opt, profile, common, res}, ...raw) => newParsed

// Compose a new/custom parse function with the old/existing parse
// function, so that the new fn will be called with the output of the
// old fn.
const parseHook = (oldParse, newParse) => {
	return (ctx, ...args) => {
		return newParse({
			...ctx,
			parsed: oldParse({...ctx, parsed: {}}, ...args)
		}, ...args)
	}
}

module.exports = {
	parseHook
}
