예제 #1
0
    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)
예제 #2
0
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
예제 #3
0
def test_cssclass():
    s = cssclass('asd$%', 'v')
    print s.__class__, s
    assert '$' not in s