function parseCondition()

in packages/@aws-c2a/engine/lib/rules/rule-parser.ts [144:173]


function parseCondition(condition: string): RuleCondition | undefined {
  const splitConditions = condition
    .split(/\s+/g);
  if(!splitConditions || splitConditions.length !== 3)
    return;
  const [leftInput, operator, rightInput] = splitConditions;

  if(!Object.values(RuleConditionOperator).includes(operator as RuleConditionOperator))
    return;

  const conditionInputFromStr = (s: string): ConditionInput => {
    const strScalarRegExp = /^["'](.*)["']$/;
    if(!isNaN(s as unknown as number))
      return { scalar: parseInt(s) };
    else {
      const strScalarREMatch = s.match(strScalarRegExp);
      if(strScalarREMatch && strScalarREMatch[1] !== undefined){
        return { scalar: strScalarREMatch[1] };
      } else {
        return parseScopeReference(s);
      }
    }
  };

  return {
    operator: operator as RuleConditionOperator,
    leftInput: conditionInputFromStr(leftInput),
    rightInput: conditionInputFromStr(rightInput),
  };
}