def filtermarkedvariables(str1): """modifies the variables in str1 marked with a given marker, using a given filter""" varlocs = decoration.findmarkedvariables(str1, startmarker, endmarker) fstr1, pos = "", 0 for varstart, variable in varlocs: fstr1 += str1[pos:varstart] fstr1 += varfilter(variable, startmarker, endmarker) pos = varstart + startmarkerlen + len(variable) + endmarkerlen fstr1 += str1[pos:] return fstr1
def test_find_marked_variables(): """check that we cna identify variables correctly, first value is start location, i second is avtual variable sans decoations""" variables = decoration.findmarkedvariables("The <variable> string", "<", ">") assert variables == [(4, "variable")] variables = decoration.findmarkedvariables("The $variable string", "$", 1) assert variables == [(4, "v")] variables = decoration.findmarkedvariables("The $variable string", "$", None) assert variables == [(4, "variable")] variables = decoration.findmarkedvariables("The $variable string", "$", 0) assert variables == [(4, "")] variables = decoration.findmarkedvariables("The &variable; string", "&", ";") assert variables == [(4, "variable")] variables = decoration.findmarkedvariables("The &variable.variable; string", "&", ";") assert variables == [(4, "variable.variable")]