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),
};
}