unix-permissions
Version:
Swiss Army knife for Unix permissions
39 lines (21 loc) • 535 B
JavaScript
export const tokenize=(symbolic)=>{
if(typeof symbolic!=="string"){
return
}
const tokens=symbolic.split(COMMA_REGEXP).map(tokenizePart);
const isMatching=tokens.every((token)=>token!==undefined);
if(!isMatching){
return
}
return tokens
};
const COMMA_REGEXP=/\s*,\s*/gu;
const tokenizePart=(part)=>{
const parts=PART_REGEXP.exec(part);
if(parts===null){
return
}
const[,categories,operator,permissions]=parts;
return{categories,operator,permissions}
};
const PART_REGEXP=/^\s*([augo]*)\s*([=+-])\s*([xwrXst]*)\s*$/u;