UNPKG

unix-permissions

Version:
39 lines (21 loc) 535 B
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;