unix-permissions
Version:
Swiss Army knife for Unix permissions
32 lines (21 loc) • 663 B
JavaScript
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}
};