UNPKG

unix-permissions

Version:
32 lines (21 loc) 663 B
import{NODES}from"../../constants.js"; import{hasDuplicate}from"../../utils.js"; import{tokenize}from"./tokenize.js"; export const parse=(stat)=>{ const tokens=tokenize(stat); if(tokens===undefined||hasDuplicates({tokens})){ return } return NODES.map((node)=>parseNode({node,tokens})) }; const hasDuplicates=({tokens})=> Object.values(tokens).some(hasDuplicateChars); const hasDuplicateChars=(string)=>hasDuplicate([...string]); const parseNode=({node,node:{category},tokens})=>{ const part=tokens[category]; return parsePart({node,part}) }; const parsePart=({node,node:{permission},part})=>{ const add=part.includes(permission); return{...node,add} };