Module hxl.formulas.eval
Evaluate a formula against a row
Expand source code
""" Evaluate a formula against a row
"""
import logging
import hxl.formulas.parser as p, hxl.formulas.lexer as l
from hxl.util import logup
logger = logging.getLogger(__name__)
def eval(row, formula):
"""Parse a formula, then return the result of evaluating it against a row.
@param row: the HXL row object
@param formula: the formula as a string
@return: a scalar result
"""
statement = p.parser.parse(formula, lexer=l.lexer)
if statement:
return statement[0](row, statement[1])
else:
logup('Cannot parse formula', {"formula": formula}, level='error')
logger.error("Cannot parse formula {{ {} }}".format(formula))
return "**ERROR**"
Functions
def eval(row, formula)
-
Parse a formula, then return the result of evaluating it against a row. @param row: the HXL row object @param formula: the formula as a string @return: a scalar result
Expand source code
def eval(row, formula): """Parse a formula, then return the result of evaluating it against a row. @param row: the HXL row object @param formula: the formula as a string @return: a scalar result """ statement = p.parser.parse(formula, lexer=l.lexer) if statement: return statement[0](row, statement[1]) else: logup('Cannot parse formula', {"formula": formula}, level='error') logger.error("Cannot parse formula {{ {} }}".format(formula)) return "**ERROR**"