UNPKG

unix-permissions

Version:
61 lines (44 loc) 1.23 kB
import{parse}from"./parse.js"; import{serialize}from"./serialize.js"; import{TYPES_MAP}from"./types/main.js"; export const convert=(typeName,perm)=>{ const{nodesMap}=parse(perm); const permA=serialize(TYPES_MAP[typeName],nodesMap); return permA }; export const unaryMap=(mapFunc,perm)=>{ const{type,nodesMap}=parse(perm); const nodesMapA=mapFunc(nodesMap); const permA=serialize(type,nodesMapA); return permA }; export const binaryMap=(mapFunc,perm,...perms)=>{ const{type,nodesMap}=parse(perm); const nodesMapA=perms.reduce( binaryMapReduce.bind(undefined,mapFunc), nodesMap ); const permA=serialize(type,nodesMapA); return permA }; const binaryMapReduce=(mapFunc,nodesMap,perm)=>{ const{nodesMap:nodesMapA}=parse(perm); const nodesMapB=mapFunc(nodesMap,nodesMapA); return nodesMapB }; export const variableMap=(mapFunc,perm,...perms)=>{ if(perm===undefined){ return } return binaryMap(mapFunc,perm,...perms) }; export const binaryTest=(testFunc,permA,...perms)=>{ const{nodesMap}=parse(permA); return( perms.length!==0&& perms.every((permB)=>binaryTestEach(testFunc,nodesMap,permB))) }; const binaryTestEach=(testFunc,nodesMap,perm)=>{ const{nodesMap:nodesMapA}=parse(perm); return testFunc(nodesMap,nodesMapA) };