Changeset 28:ffac60e84a1c in livinglogic.googleappengine.lltools

Show
Ignore:
Timestamp:
02/16/09 16:41:55 (10 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Update XIST to 3.6.2.

Location:
site/ll
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • site/ll/ul4c.py

    r27 r28  
    603603        elif self.code == "callmeth3": 
    604604            return "r%r = r%r.%s(r%r, r%r, r%r)" % (self.r1, self.r2, self.arg, self.r3, self.r4, self.r5) 
     605        elif self.code == "callmethkw": 
     606            return "r%r = r%r.%s(**r%r)" % (self.r1, self.r2, self.arg, self.r3) 
    605607        elif self.code == "render": 
    606608            return "render r%r(r%r)" % (self.r1, self.r2) 
     
    622624    is a generator) or :meth:`renders` (which returns a string). 
    623625    """ 
    624     version = "7" 
     626    version = "8" 
    625627 
    626628    def __init__(self): 
     
    9981000        elif opcode.arg == "format": 
    9991001            self.lines.append("%sreg%d = ul4c._format(reg%d, reg%d)" % (self.indent, opcode.r1, opcode.r2, opcode.r3)) 
    1000         elif opcode.arg == "render": 
    1001             self.lines.append('%sreg%d = "".join(reg%d(**dict((key.encode("utf-8"), value) for (key, value) in reg%d.iteritems())))' % (self.indent, opcode.r1, opcode.r2, opcode.r3)) 
    10021002        else: 
    10031003            raise UnknownMethodError(opcode.arg) 
     
    10121012        if opcode.arg == "find": 
    10131013            self.lines.append("%sreg%d = reg%d.%s(reg%d, reg%d, reg%d)" % (self.indent, opcode.r1, opcode.r2, opcode.arg, opcode.r3, opcode.r4, opcode.r5)) 
     1014        else: 
     1015            raise UnknownMethodError(opcode.arg) 
     1016 
     1017    def _pythonsource_dispatch_callmethkw(self, opcode): 
     1018        if opcode.arg == "render": 
     1019            self.lines.append('%sreg%d = "".join(reg%d(**dict((key.encode("utf-8"), value) for (key, value) in reg%d.iteritems())))' % (self.indent, opcode.r1, opcode.r2, opcode.r3)) 
    10141020        else: 
    10151021            raise UnknownMethodError(opcode.arg) 
     
    11301136    def _pythonsource_dispatch_callfunc2_zip(self, opcode): 
    11311137        self.lines.append("%sreg%d = itertools.izip(reg%d, reg%d)" % (self.indent, opcode.r1, opcode.r2, opcode.r3)) 
     1138 
     1139    def _pythonsource_dispatch_callfunc2_int(self, opcode): 
     1140        self.lines.append("%sreg%d = int(reg%d, reg%d)" % (self.indent, opcode.r1, opcode.r2, opcode.r3)) 
    11321141 
    11331142    def _pythonsource_dispatch_callfunc3_range(self, opcode): 
     
    11731182        self.lines.append("%sexcept ImportError:" % self.indent) 
    11741183        self.indent += "\t" 
     1184        self.lines.append("%stry:" % self.indent) 
     1185        self.indent += "\t" 
    11751186        self.lines.append("%simport simplejson as json" % self.indent) 
    11761187        self.indent = self.indent[:-1] 
     1188        self.lines.append("%sexcept ImportError:" % self.indent) 
     1189        self.indent += "\t" 
     1190        self.lines.append("%spass" % self.indent) 
     1191        self.indent = self.indent[:-2] 
    11771192        self.lines.append("%sfrom ll.misc import xmlescape" % self.indent) 
    11781193        self.lines.append("%sfrom ll import ul4c, color" % self.indent) 
     
    18811896 
    18821897 
     1898class CallMethKeywords(AST): 
     1899    def __init__(self, start, end, name, obj, args): 
     1900        AST.__init__(self, start, end) 
     1901        self.name = name 
     1902        self.obj = obj 
     1903        self.args = args 
     1904 
     1905    def __repr__(self): 
     1906        return "%s(%r, %r, %r, %r, %r)" % (self.__class__.__name__, self.start, self.end, self.name, self.obj, self.args) 
     1907 
     1908    def compile(self, template): 
     1909        ra = template._allocreg() 
     1910        template.opcode("builddict", r1=ra) 
     1911        for item in self.args: 
     1912            if len(item) == 1: 
     1913                rd = item[0].compile(template) 
     1914                template.opcode("updatedict", r1=ra, r2=rd) 
     1915                template._freereg(rd) 
     1916            else: 
     1917                (key, value) = item 
     1918                rv = value.compile(template) 
     1919                rk = template._allocreg() 
     1920                template.opcode("loadstr", r1=rk, arg=key.name) 
     1921                template.opcode("adddict", r1=ra, r2=rk, r3=rv) 
     1922                template._freereg(rk) 
     1923                template._freereg(rv) 
     1924        ro = self.obj.compile(template) 
     1925        template.opcode("callmethkw", r1=ro, r2=ro, r3=ra, arg=self.name.name) 
     1926        template._freereg(ra) 
     1927        return ro 
     1928 
     1929 
    18831930class Render(AST): 
    18841931    def __init__(self, start, end, template, *variables): 
     
    22442291    def expr_callmeth3(self, expr, _0, name, _1, arg1, _2, arg2, _3, arg3, _4): 
    22452292        return CallMeth(expr.start, _4.end, name, expr, [arg1, arg2, arg3]) 
     2293 
     2294    @spark.production('callmethkw ::= expr9 . name ( name = expr0') 
     2295    def methkw_startname(self, expr, _0, methname, _1, argname, _2, argvalue): 
     2296        return CallMethKeywords(expr.start, argvalue.end, methname, expr, [(argname, argvalue)]) 
     2297 
     2298    @spark.production('callmethkw ::= expr9 . name ( ** expr0') 
     2299    def methkw_startdict(self, expr, _0, methname, _1, _2, argvalue): 
     2300        return CallMethKeywords(expr.start, argvalue.end, methname, expr, [(argvalue,)]) 
     2301 
     2302    @spark.production('callmethkw ::= callmethkw , name = expr0') 
     2303    def methkw_buildname(self, call, _0, argname, _1, argvalue): 
     2304        call.args.append((argname, argvalue)) 
     2305        call.end = argvalue.end 
     2306        return call 
     2307 
     2308    @spark.production('callmethkw ::= callmethkw , ** expr0') 
     2309    def methkw_builddict(self, call, _0, _1, argvalue): 
     2310        call.args.append((argvalue,)) 
     2311        call.end = argvalue.end 
     2312        return call 
     2313 
     2314    @spark.production('expr9 ::= callmethkw )') 
     2315    def methkw_finish(self, call, _0): 
     2316        call.end = _0.end 
     2317        return call 
    22462318 
    22472319    @spark.production('expr9 ::= expr9 [ expr0 ]') 
  • site/ll/xist/ns/jsp.py

    r27 r28  
    191191    def make_literal(content): 
    192192        result.append(specials.literal(content)) 
    193  
    194     def make_expression(content): 
    195         result.append(expression(content)) 
    196193 
    197194    def make_scriptlet(content): 
     
    259256            name = _string(opcode.arg) 
    260257            make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.add(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
    261         elif opcode.code == "addvar": 
     258        elif opcode.code == "subvar": 
    262259            name = _string(opcode.arg) 
    263260            make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.sub(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
    264         elif opcode.code == "addvar": 
     261        elif opcode.code == "mulvar": 
    265262            name = _string(opcode.arg) 
    266263            make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.mul(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
     
    287284            make_scriptlet("r%d = com.livinglogic.ul4.Utils.getSlice(r%d, null, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
    288285        elif opcode.code == "print": 
    289             make_expression("org.apache.commons.lang.ObjectUtils.toString(r%d)" % opcode.r1) 
     286            make_scriptlet("out.write(org.apache.commons.lang.ObjectUtils.toString(r%d));" % opcode.r1) 
    290287        elif opcode.code == "printx": 
    291             make_expression("com.livinglogic.ul4.Utils.xmlescape(org.apache.commons.lang.ObjectUtils.toString(r%d))" % opcode.r1) 
     288            make_scriptlet("out.write(com.livinglogic.ul4.Utils.xmlescape(org.apache.commons.lang.ObjectUtils.toString(r%d)));" % opcode.r1) 
    292289        elif opcode.code == "for": 
    293290            loopcounter += 1 
     
    520517            else: 
    521518                raise ul4c.UnknownMethodError(opcode.arg) 
     519        elif opcode.code == "callmethkw": 
     520            if opcode.arg == "render": 
     521                make_scriptlet("r%d = ((com.livinglogic.ul4.Template)r%d).renders((java.util.Map)r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     522            else: 
     523                raise ul4c.UnknownMethodError(opcode.arg) 
    522524        elif opcode.code == "if": 
    523525            make_scriptlet("if (com.livinglogic.ul4.Utils.getBool(r%d))" % opcode.r1) 
     
    534536            make_scriptlet("}") 
    535537        elif opcode.code == "render": 
    536             make_scriptlet("((com.livinglogic.ul4.JSPTemplate)r%d).execute(out, (Map)r%d);" % (opcode.r1, opcode.r2)) 
     538            make_scriptlet("((com.livinglogic.ul4.Template)r%d).renderjsp(out, (Map)r%d);" % (opcode.r1, opcode.r2)) 
    537539        else: 
    538540            raise ul4c.UnknownOpcodeError(opcode.code)