def __init__(self, source, code, loop): lineset = loop.lineset self.lines = [] html = [] for v in loop.inputargs: html.append(cssclass(v, v, onmouseover="highlight_var(this)", onmouseout="disable_var(this)")) self.inputargs = " ".join(html) self.firstlineno = code.co_firstlineno for i, line in enumerate(source.split("\n")): no = i + code.co_firstlineno in_loop = no in lineset self.lines.append(LineRepr(line, in_loop)) last_lineno = self.firstlineno for chunk in loop.chunks: if chunk.is_bytecode: chunk.cssclass = "dmp " if len(chunk.operations) <= 1: chunk.cssclass += "empty" else: chunk.cssclass += "nonempty" no = chunk.lineno if no is None or no < last_lineno: no = last_lineno else: last_lineno = no else: no = last_lineno self.lines[no - self.firstlineno].chunks.append(chunk)
def test_highlight_var(): ops = parse(''' [p0] guard_class(p0, 144264192, descr=<Guard0>) ''').operations assert len(ops) == 1 op = ops[0] assert op.name == 'guard_class' html = op.html_repr() p0 = cssclass('p0', 'p0', onmouseover="highlight_var(this)", onmouseout="disable_var(this)") assert p0 in html
def test_cssclass(): s = cssclass('asd$%', 'v') print s.__class__, s assert '$' not in s