Home Reference Source Test

packages/causality-layer/src/CausalNetParameters/parameterFunctor.mixins.js

const ParameterFunctorMixins = (FunctorClass)=> class extends FunctorClass{ 
    isParameter(val){
        const R = this.R;
        return R.ifElse(R.is(Array), R.all(R.is(Number)), R.always(false))(val);
    }
    parameterMapWithKey(fn, parameterObject){
        const R = this.R;
        
        const Res = (keys, subObject) => R.compose(R.fromPairs, 
                        R.map(([key, subObject])=>{
                            if(this.isParameter(subObject)){
                                return [key, fn([...keys, key], subObject)];
                            }
                            else{
                                if(R.is(Object, subObject)){
                                    return [key, Res([...keys, key], subObject)];
                                }
                                else{
                                    return [key, subObject];
                                }
                            }
                        }), R.toPairs)(subObject);
        return Res([], parameterObject);
    }        
};

export default ParameterFunctorMixins;