UNPKG

unix-permissions

Version:
40 lines (24 loc) 803 B
import{parse as parseNumber}from"../number/parse.js"; import{EQUAL,MINUS,OCTAL_BASE,PLUS}from"./constants.js"; import{tokenize}from"./tokenize.js"; export const parse=(octal,category)=>{ const{operator,string}=tokenize(octal); if(string===undefined){ return } const integer=octalToDecimal({string}); const nodes=parseNumber(integer); const nodesA=parseOperator[operator]({nodes,category}); return nodesA }; const octalToDecimal=({string})=>Number.parseInt(string,OCTAL_BASE); const parsePlus=({nodes})=>nodes.filter(hasAdd); const parseMinus=({nodes})=>nodes.filter(hasAdd).map(invertAdd); const invertAdd=(node)=>({...node,add:false}); const hasAdd=({add})=>add===true; const parseEqual=({nodes})=>nodes; const parseOperator={ [PLUS]:parsePlus, [MINUS]:parseMinus, [EQUAL]:parseEqual };