def insert_output_values(self, text, context=None): """ Replace all the ${variables} in text with xpaths. Returns that and a boolean indicating if there were any ${variables} present. """ def _var_repl_output_function(matchobj): return self._var_repl_output_function(matchobj, context) # There was a bug where escaping is completely turned off in labels # where variable replacement is used. # For exampke, `${name} < 3` causes an error but `< 3` does not. # This is my hacky fix for it, which does string escaping prior to # variable replacement: text_node = PatchedText() text_node.data = text xml_text = text_node.toxml() # need to make sure we have reason to replace # since at this point < is <, # the net effect < gets translated again to &lt; if unicode(xml_text).find("{") != -1: result = re.sub(BRACKETED_TAG_REGEX, _var_repl_output_function, unicode(xml_text)) return result, not result == xml_text return text, False
def insert_output_values(self, text): """ Replace all the ${variables} in text with xpaths. Returns that and a boolean indicating if there were any ${variables} present. """ # There was a bug where escaping is completely turned off in labels # where variable replacement is used. # For exampke, `${name} < 3` causes an error but `< 3` does not. # This is my hacky fix for it, which does string escaping prior to # variable replacement: text_node = PatchedText() text_node.data = text xml_text = text_node.toxml() bracketed_tag = r"\$\{(.*?)\}" # need to make sure we have reason to replace # since at this point < is <, # the net effect < gets translated again to &lt; if unicode(xml_text).find('{') != -1: result = re.sub( bracketed_tag, self._var_repl_output_function, unicode(xml_text)) return result, not result == xml_text return text, False