UNPKG

@skele/core

Version:

Core package of the Skele framework. Element definitions, registrations and traversal.

1 lines 2.44 kB
'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.editAt=exports.editCond=void 0;var _data=require("../data");var _zip=require("../zip");var zip=_interopRequireWildcard(require("./impl"));var _ramda=require("ramda");var _MultivalueRegistry=_interopRequireDefault(require("../registry/MultivalueRegistry"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};if(desc.get||desc.set){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}}newObj.default=obj;return newObj;}}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[typeof Symbol==="function"?Symbol.iterator:"@@iterator"](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}var editCond=function editCond(patterns,loc){var kinds=new _MultivalueRegistry.default();var preds=[];patterns.forEach(function(_ref){var _ref2=_slicedToArray(_ref,2),pred=_ref2[0],f=_ref2[1];if(typeof pred==='function'){preds.push([pred,f]);}else{kinds.register(pred,f);}});var editFn=function editFn(l){return(0,_zip.postWalk)(function(el){var kind=(0,_data.kindOf)(el);el=kinds.get(kind).reduce(function(el,f){return f(el);},el);var after=preds.reduce(function(el,_ref3){var _ref4=_slicedToArray(_ref3,2),pred=_ref4[0],f=_ref4[1];return pred(el)?f(el):el;},el);return after;},l);};return typeof loc==='undefined'?editFn:editFn(loc);};exports.editCond=editCond;var editAt=(0,_ramda.curry)(function(motion,f,loc){var rootLoc=zip.zipper(loc.meta.isBranch,loc.meta.children,loc.meta.makeNode,zip.node(loc));return(0,_data.flow)(rootLoc,motion,zip.edit.bind(undefined,f),zip.root,function(newVal){return zip.replace(newVal,loc);});});exports.editAt=editAt;