Changeset 3928:97eaeaf5656b in livinglogic.python.xist

Show
Ignore:
Timestamp:
02/26/10 14:48:56 (10 years ago)
Author:
Walter Doerwald <walter@…>
Parents:
3918:b3907db06d65 (diff), 3927:1a21cd8c9f0b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Branch:
default
Message:

Merged in release 3.7.2.

Files:
9 modified

Legend:

Unmodified
Added
Removed
  • .hgtags

    r3915 r3928  
    100100697e888115bc65f7bbed0c35b1b33f70cf427e31 rel-3-6-6 
    101101d09b5431bb12b8ed00703614a18928d7b98731b4 rel-3-7-1 
     1026becbe6f4b5ccac5963b88323932c9129bc7bcf5 rel-3-7-2 
  • .hgtags

    r3926 r3928  
    99993aa5a5d89287166b52a746e030431a2a068fbc7c rel-3-6-5 
    100100697e888115bc65f7bbed0c35b1b33f70cf427e31 rel-3-6-6 
     101d09b5431bb12b8ed00703614a18928d7b98731b4 rel-3-7-1 
    1011026becbe6f4b5ccac5963b88323932c9129bc7bcf5 rel-3-7-2 
  • NEWS.rst

    r3918 r3928  
    77    moved to :mod:`ll.xist.xfind`. 
    88 
     9*   Added a new function :func:`misc.module` that creates a module from source 
     10    code. 
     11 
     12*   :class:`ll.url.Path` has been simplified: Path segments are strings instead 
     13    of tuples now. 
     14 
     15*   The old :class:`URL` method :meth:`import_` has been removed. The new 
     16    function :func:`misc.module` can now be used for that. 
     17 
     18*   :class:`ll.orasql.PrimaryKey` has a new method :meth:`itercolumns` that 
     19    returns an iterator over the columns this primary key consists of. 
     20 
     21*   Two new UL4 functions ``abs`` and ``utcnow`` have been added. 
     22 
     23*   A new UL4 method ``mimeformat`` has been added to date objects. 
     24 
     25*   Use autoboxing in the Java code generated by :mod:`ll.xist.ns.jsp.fromul4`. 
     26 
     27*   The code has switched to using the :meth:`format` method instead of using 
     28    the ``%`` operator everywhere. 
     29 
     30*   ssh URLs in :mod:`ll.url` now use the standalone :mod:`execnet` package__. 
     31 
     32    __ http://codespeak.net/execnet/ 
     33 
     34*   ssh URLs now support a ``nice`` argument instead of ``ssh_config``. 
     35 
     36 
     37Changes in 3.7.2 (released 02/26/2010) 
     38-------------------------------------- 
     39 
    940*   Fixed two bugs in the XML codecs: 
     41 
    1042    -   An externally specified encoding wasn't honored in the incremental decoder. 
    1143 
     
    1446        value. 
    1547 
    16 *   Added a new function :func:`misc.module` that creates a module from source 
    17     code. 
    18  
    19 *   :class:`ll.url.Path` has been simplified: Path segments are strings instead 
    20     of tuples now. 
    21  
    22 *   The old :class:`URL` method :meth:`import_` has been removed. The new 
    23     function :func:`misc.module` can now be used for that. 
    24  
    25 *   :class:`ll.orasql.PrimaryKey` has a new method :meth:`itercolumns` that 
    26     returns an iterator over the columns this primary key consists of. 
    27  
    28 *   Two new UL4 functions ``abs`` and ``utcnow`` have been added. 
    29  
    30 *   A new UL4 method ``mimeformat`` has been added to date objects. 
    31  
    32 *   The generated JSP code for the UL4 function ``xmlescape`` no longer calls 
    33     ``ObjectUtils.toString``. This should reduce the code size for the JSP 
    34     source code of UL4 templates. 
    35  
    36 *   Use autoboxing in the Java code generated by :mod:`ll.xist.ns.jsp.fromul4`. 
    37  
    38 *   The code has switched to using the :meth:`format` method instead of using 
    39     the ``%`` operator everywhere. 
    40  
    41 *   ssh URLs in :mod:`ll.url` now use the standalone :mod:`execnet` package__. 
    42  
    43     __ http://codespeak.net/execnet/ 
    44  
    45 *   ssh URLs now support a ``nice`` argument instead of ``ssh_config``. 
     48*   Fixed a bug in the handling of the UL4 opcode ``addlist`` in 
     49    :func:`ll.xist.ns.jsp.fromul4`. 
     50 
     51*   Added missing processing instruction class for the UL4 ``def`` tag to the 
     52    :mod:`ll.xist.ns.ul4` namespace module. 
     53 
     54*   The generated JSP code for the ``loadvar`` opcode now uses the Java method 
     55    ``Utils.getItem``, so that non-existent variables no longer get treated as 
     56    ``None``/``null``. 
    4657 
    4758 
  • NEWS.rst

    r3927 r3928  
     1Changes in 3.8 (released ??/??/????) 
     2------------------------------------ 
     3 
     4*   The walk methods :meth:`walknode` and :meth:`walkpath` have been renamed to 
     5    :meth:`walknodes` and :meth:`walkpaths` and the implemention has been moved 
     6    from the nodes classes into :class:`WalkFilter`. :class:`WalkFilter` has been 
     7    moved to :mod:`ll.xist.xfind`. 
     8 
     9*   Added a new function :func:`misc.module` that creates a module from source 
     10    code. 
     11 
     12*   :class:`ll.url.Path` has been simplified: Path segments are strings instead 
     13    of tuples now. 
     14 
     15*   The old :class:`URL` method :meth:`import_` has been removed. The new 
     16    function :func:`misc.module` can now be used for that. 
     17 
     18*   :class:`ll.orasql.PrimaryKey` has a new method :meth:`itercolumns` that 
     19    returns an iterator over the columns this primary key consists of. 
     20 
     21*   Two new UL4 functions ``abs`` and ``utcnow`` have been added. 
     22 
     23*   A new UL4 method ``mimeformat`` has been added to date objects. 
     24 
     25*   Use autoboxing in the Java code generated by :mod:`ll.xist.ns.jsp.fromul4`. 
     26 
     27*   The code has switched to using the :meth:`format` method instead of using 
     28    the ``%`` operator everywhere. 
     29 
     30*   ssh URLs in :mod:`ll.url` now use the standalone :mod:`execnet` package__. 
     31 
     32    __ http://codespeak.net/execnet/ 
     33 
     34*   ssh URLs now support a ``nice`` argument instead of ``ssh_config``. 
     35 
     36 
    137Changes in 3.7.2 (released 02/26/2010) 
    238-------------------------------------- 
  • setup.py

    r3925 r3928  
    164164FTP 
    165165ssh 
    166 py.execnet 
     166execnet 
    167167 
    168168# xml_codec 
     
    218218    news = news[underlines[0]-1:underlines[1]-1] 
    219219    news = "".join(news) 
    220     descr = "%s\n\n\n%s" % (DESCRIPTION.strip(), news) 
     220    descr = "{0}\n\n\n{1}".format(DESCRIPTION.strip(), news) 
    221221 
    222222    # Get rid of text roles PyPI doesn't know about 
     
    228228args = dict( 
    229229    name="ll-xist", 
    230     version="3.7.2", 
     230    version="3.8", 
    231231    description="Extensible HTML/XML generator, cross-platform templating language, Oracle utilities and various other tools", 
    232232    long_description=descr, 
     
    292292    zip_safe=False, 
    293293    dependency_links=[ 
    294         "http://sourceforge.net/project/showfiles.php?group_id=84168", # cx_Oracle 
     294        "http://cx-oracle.sourceforge.net/", # cx_Oracle 
    295295    ], 
    296296) 
  • src/ll/xist/ns/jsp.py

    r3918 r3928  
    244244            make_scriptlet("r{op.r1} = new java.util.HashMap();".format(op=opcode)) 
    245245        elif opcode.code == "addlist": 
    246             make_scriptlet("((java.util.List)r{op.r1}).add(r{op.r2})".format(op=opcode)) 
     246            make_scriptlet("((java.util.List)r{op.r1}).add(r{op.r2});".format(op=opcode)) 
    247247        elif opcode.code == "adddict": 
    248248            make_scriptlet("((java.util.Map)r{op.r1}).put(r{op.r2}, r{op.r3});".format(op=opcode)) 
  • src/ll/xist/ns/jsp.py

    r3924 r3928  
    157157                node = self.__class__( 
    158158                    self.attrs, 
    159                     contentType=(contenttype, u"; ", u"; ".join("%s=%s" % option for option in options.items())), 
     159                    contentType=(contenttype, u"; ", u"; ".join("{0}={1}".format(*option) for option in options.items())), 
    160160                    pageEncoding=encoding 
    161161                ) 
     
    186186            except KeyError: 
    187187                oc = ord(c) 
    188                 v.append("\\u%04x" % oc if oc >= 128 else c) 
    189         return '"%s"' % "".join(s) 
     188                v.append("\\u{0:04x}".format(oc) if oc >= 128 else c) 
     189        return '"{0}"'.format("".join(s)) 
    190190 
    191191    def make_literal(content): 
     
    193193 
    194194    def make_scriptlet(content): 
    195         line = "%s%s\n" % ("\t"*indent, content) 
    196195        if result and isinstance(result[-1], scriptlet): 
    197             result[-1] += "%s%s\n" % ("\t"*indent, content) 
     196            result[-1] += "{0}{1}\n".format("\t"*indent, content) 
    198197        else: 
    199             result.append(scriptlet("\n%s%s\n" % ("\t"*indent, content))) 
     198            result.append(scriptlet("\n{0}{1}\n".format("\t"*indent, content))) 
    200199 
    201200    varcounter = 0 # Used to number loop iterators and local templates 
     
    207206    width = len(str(len(lines)+1)) 
    208207    for (i, line) in enumerate(lines): 
    209         make_scriptlet("// %*d %s" % (width, i+1, line)) 
     208        make_scriptlet("// {1:{0}} {2}".format(width, i+1, line)) 
    210209 
    211210    make_scriptlet("//@@@ BEGIN template code") 
    212211 
    213212    for i in xrange(10): 
    214         make_scriptlet("Object r%d = null;" % i) 
     213        make_scriptlet("Object r{0} = null;".format(i)) 
    215214 
    216215    defs = [] 
     
    221220            (line, col) = lastloc.pos() 
    222221            tag = lastloc.tag 
    223             make_scriptlet("// Location %d (line %d, col %d): %s" % (lastloc.starttag+1, line, col, repr(tag)[1+isinstance(tag, unicode):-1])) 
     222            make_scriptlet("// Location {0} (line {1}, col {2}): {3}".format(lastloc.starttag+1, line, col, repr(tag)[1+isinstance(tag, unicode):-1])) 
    224223        if opcode.code is None: 
    225224            make_literal(opcode.location.code) 
    226225        elif opcode.code == "loadstr": 
    227             make_scriptlet('r%d = %s;' % (opcode.r1, _string(opcode.arg))) 
     226            make_scriptlet('r{op.r1} = {arg};'.format(op=opcode, arg=_string(opcode.arg))) 
    228227        elif opcode.code == "loadint": 
    229             make_scriptlet("r%d = new Integer(%s);" % (opcode.r1, opcode.arg)) 
     228            make_scriptlet("r{op.r1} = new Integer({op.arg});".format(op=opcode)) 
    230229        elif opcode.code == "loadfloat": 
    231             make_scriptlet("r%d = new Double(%s);" % (opcode.r1, opcode.arg)) 
     230            make_scriptlet("r{op.r1} = new Double({op.arg});".format(op=opcode)) 
    232231        elif opcode.code == "loadnone": 
    233             make_scriptlet("r%d = null;" % opcode.r1) 
     232            make_scriptlet("r{op.r1} = null;".format(op=opcode)) 
    234233        elif opcode.code == "loadfalse": 
    235             make_scriptlet("r%d = Boolean.FALSE;" % opcode.r1) 
     234            make_scriptlet("r{op.r1} = Boolean.FALSE;".format(op=opcode)) 
    236235        elif opcode.code == "loadtrue": 
    237             make_scriptlet("r%d = Boolean.TRUE;" % opcode.r1) 
     236            make_scriptlet("r{op.r1} = Boolean.TRUE;".format(op=opcode)) 
    238237        elif opcode.code == "loaddate": 
    239             make_scriptlet("r%d = com.livinglogic.ul4.Utils.isoDateFormatter.parse(%s);" % (opcode.r1, _string(opcode.arg))) 
     238            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.isoDateFormatter.parse({arg});".format(op=opcode, arg=_string(opcode.arg))) 
    240239        elif opcode.code == "loadcolor": 
    241             make_scriptlet("r%d = new com.livinglogic.ul4.Color(0x%s, 0x%s, 0x%s, 0x%s)" % (opcode.r1, opcode.arg[:2], opcode.arg[2:4], opcode.arg[4:6], opcode.arg[6:])) 
     240            make_scriptlet("r{op.r1} = new com.livinglogic.ul4.Color(0x{r}, 0x{g}, 0x{b}, 0x{a})".format(op=opcode, r=opcode.arg[:2], g=opcode.arg[2:4], b=opcode.arg[4:6], a=opcode.arg[6:])) 
    242241        elif opcode.code == "buildlist": 
    243             make_scriptlet("r%d = new java.util.ArrayList();" % opcode.r1) 
     242            make_scriptlet("r{op.r1} = new java.util.ArrayList();".format(op=opcode)) 
    244243        elif opcode.code == "builddict": 
    245             make_scriptlet("r%d = new java.util.HashMap();" % opcode.r1) 
     244            make_scriptlet("r{op.r1} = new java.util.HashMap();".format(op=opcode)) 
    246245        elif opcode.code == "addlist": 
    247             make_scriptlet("((java.util.List)r%d).add(r%d);" % (opcode.r1, opcode.r2)) 
     246            make_scriptlet("((java.util.List)r{op.r1}).add(r{op.r2});".format(op=opcode)) 
    248247        elif opcode.code == "adddict": 
    249             make_scriptlet("((java.util.Map)r%d).put(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     248            make_scriptlet("((java.util.Map)r{op.r1}).put(r{op.r2}, r{op.r3});".format(op=opcode)) 
    250249        elif opcode.code == "updatedict": 
    251             make_scriptlet("((java.util.Map)r%d).putAll((java.util.Map)r%d);" % (opcode.r1, opcode.r2)) 
     250            make_scriptlet("((java.util.Map)r{op.r1}).putAll((java.util.Map)r{op.r2});".format(op=opcode)) 
    252251        elif opcode.code == "loadvar": 
    253             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getItem(%s, %s);" % (opcode.r1, variables, _string(opcode.arg))) 
     252            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getItem({var}, {arg});".format(op=opcode, var=variables, arg=_string(opcode.arg))) 
    254253        elif opcode.code == "storevar": 
    255             make_scriptlet("%s.put(%s, r%d);" % (variables, _string(opcode.arg), opcode.r1)) 
     254            make_scriptlet("{var}.put({arg}, r{op.r1});".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    256255        elif opcode.code == "addvar": 
    257             name = _string(opcode.arg) 
    258             make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.add(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
     256            make_scriptlet("{var}.put({arg}, com.livinglogic.ul4.Utils.add({var}.get({arg}), r{op.r1}));".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    259257        elif opcode.code == "subvar": 
    260             name = _string(opcode.arg) 
    261             make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.sub(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
     258            make_scriptlet("{var}.put({arg}, com.livinglogic.ul4.Utils.sub({var}.get({arg}), r{op.r1}));".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    262259        elif opcode.code == "mulvar": 
    263             name = _string(opcode.arg) 
    264             make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.mul(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
     260            make_scriptlet("{var}.put({arg}, com.livinglogic.ul4.Utils.mul({var}.get({arg}), r{op.r1}));".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    265261        elif opcode.code == "truedivvar": 
    266             name = _string(opcode.arg) 
    267             make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.truediv(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
     262            make_scriptlet("{var}.put({arg}, com.livinglogic.ul4.Utils.truediv({var}.get({arg}), r{op.r1}));".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    268263        elif opcode.code == "floordivvar": 
    269264            name = _string(opcode.arg) 
    270             make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.floordiv(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
     265            make_scriptlet("{var}.put({arg}, com.livinglogic.ul4.Utils.floordiv({var}.get({arg}), r{op.r1}));".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    271266        elif opcode.code == "modvar": 
    272             name = _string(opcode.arg) 
    273             make_scriptlet("%s.put(%s, com.livinglogic.ul4.Utils.mod(%s.get(%s), r%d));" % (variables, name, variables, name, opcode.r1)) 
     267            make_scriptlet("{var}.put({arg}, com.livinglogic.ul4.Utils.mod({var}.get({arg}), r{op.r1}));".format(var=variables, arg=_string(opcode.arg), op=opcode)) 
    274268        elif opcode.code == "delvar": 
    275             make_scriptlet("%s.remove(%s);" % (variables, _string(opcode.arg))) 
     269            make_scriptlet("{var}.remove({arg});".format(var=variables, arg=_string(opcode.arg))) 
    276270        elif opcode.code == "getattr": 
    277             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getItem(r%d, %s);" % (opcode.r1, opcode.r2, _string(opcode.arg))) 
     271            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getItem(r{op.r2}, {arg});".format(op=opcode, arg=_string(opcode.arg))) 
    278272        elif opcode.code == "getitem": 
    279             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getItem(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     273            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getItem(r{op.r2}, r{op.r3});".format(op=opcode)) 
    280274        elif opcode.code == "getslice12": 
    281             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getSlice(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     275            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getSlice(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    282276        elif opcode.code == "getslice1": 
    283             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getSlice(r%d, r%d, null);" % (opcode.r1, opcode.r2, opcode.r3)) 
     277            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getSlice(r{op.r2}, r{op.r3}, null);".format(op=opcode)) 
    284278        elif opcode.code == "getslice2": 
    285             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getSlice(r%d, null, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     279            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getSlice(r{op.r2}, null, r{op.r3});".format(op=opcode)) 
    286280        elif opcode.code == "print": 
    287             make_scriptlet("out.write(org.apache.commons.lang.ObjectUtils.toString(r%d));" % opcode.r1) 
     281            make_scriptlet("out.write(org.apache.commons.lang.ObjectUtils.toString(r{op.r1}));".format(op=opcode)) 
    288282        elif opcode.code == "printx": 
    289             make_scriptlet("out.write(com.livinglogic.ul4.Utils.xmlescape(org.apache.commons.lang.ObjectUtils.toString(r%d)));" % opcode.r1) 
     283            make_scriptlet("out.write(com.livinglogic.ul4.Utils.xmlescape(r{op.r1}));".format(op=opcode)) 
    290284        elif opcode.code == "for": 
    291285            varcounter += 1 
    292             make_scriptlet("for (java.util.Iterator iterator%d = com.livinglogic.ul4.Utils.iterator(r%d); iterator%d.hasNext();)" % (varcounter, opcode.r2, varcounter)) 
     286            make_scriptlet("for (java.util.Iterator iterator{count} = com.livinglogic.ul4.Utils.iterator(r{op.r1}); iterator{count}.hasNext();)".format(op=opcode, count=varcounter)) 
    293287            make_scriptlet("{") 
    294288            indent += 1 
    295             make_scriptlet("r%d = iterator%d.next();" % (opcode.r1, varcounter)) 
     289            make_scriptlet("r{op.r1} = iterator{count}.next();".format(op=opcode, count=varcounter)) 
    296290        elif opcode.code == "endfor": 
    297291            indent -= 1 
     
    299293        elif opcode.code == "def": 
    300294            varcounter += 1 
    301             make_scriptlet("com.livinglogic.ul4.JSPTemplate template%d = new com.livinglogic.ul4.JSPTemplate()" % varcounter) 
     295            make_scriptlet("com.livinglogic.ul4.JSPTemplate template{count} = new com.livinglogic.ul4.JSPTemplate()".format(count=varcounter)) 
    302296            make_scriptlet("{") 
    303297            indent += 1 
     
    314308            make_scriptlet("};") 
    315309            (arg, variables) = defs.pop() 
    316             make_scriptlet("%s.put(%s, template%d);" % (variables, _string(arg), varcounter)) 
     310            make_scriptlet("{var}.put({arg}, template{count});".format(var=variables, arg=_string(arg), countr=varcounter)) 
    317311        elif opcode.code == "break": 
    318312            make_scriptlet("break;") 
     
    320314            make_scriptlet("continue;") 
    321315        elif opcode.code == "not": 
    322             make_scriptlet("r%d = !com.livinglogic.ul4.Utils.getBool(r%d);" % (opcode.r1, opcode.r2)) 
     316            make_scriptlet("r{op.r1} = !com.livinglogic.ul4.Utils.getBool(r{op.r2});".format(op=opcode)) 
    323317        elif opcode.code == "neg": 
    324             make_scriptlet("r%d = com.livinglogic.ul4.Utils.neg(r%d);" % (opcode.r1, opcode.r2)) 
     318            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.neg(r{op.r2});".format(op=opcode)) 
    325319        elif opcode.code == "contains": 
    326             make_scriptlet("r%d = com.livinglogic.ul4.Utils.contains(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     320            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.contains(r{op.r2}, r{op.r3});".format(op=opcode)) 
    327321        elif opcode.code == "notcontains": 
    328             make_scriptlet("r%d = !com.livinglogic.ul4.Utils.contains(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     322            make_scriptlet("r{op.r1} = !com.livinglogic.ul4.Utils.contains(r{op.r2}, r{op.r3});".format(op=opcode)) 
    329323        elif opcode.code == "eq": 
    330             make_scriptlet("r%d = org.apache.commons.lang.ObjectUtils.equals(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     324            make_scriptlet("r{op.r1} = org.apache.commons.lang.ObjectUtils.equals(r{op.r2}, r{op.r3});".format(op=opcode)) 
    331325        elif opcode.code == "ne": 
    332             make_scriptlet("r%d = !org.apache.commons.lang.ObjectUtils.equals(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     326            make_scriptlet("r{op.r1} = !org.apache.commons.lang.ObjectUtils.equals(r{op.r2}, r{op.r3});".format(op=opcode)) 
    333327        elif opcode.code == "lt": 
    334             make_scriptlet("r%d = com.livinglogic.ul4.Utils.lt(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     328            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.lt(r{op.r2}, r{op.r3});".format(op=opcode)) 
    335329        elif opcode.code == "le": 
    336             make_scriptlet("r%d = com.livinglogic.ul4.Utils.le(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     330            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.le(r{op.r2}, r{op.r3});".format(op=opcode)) 
    337331        elif opcode.code == "gt": 
    338             make_scriptlet("r%d = !com.livinglogic.ul4.Utils.le(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     332            make_scriptlet("r{op.r1} = !com.livinglogic.ul4.Utils.le(r{op.r2}, r{op.r3});".format(op=opcode)) 
    339333        elif opcode.code == "ge": 
    340             make_scriptlet("r%d = !com.livinglogic.ul4.Utils.lt(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     334            make_scriptlet("r{op.r1} = !com.livinglogic.ul4.Utils.lt(r{op.r2}, r{op.r3});".format(op=opcode)) 
    341335        elif opcode.code == "add": 
    342             make_scriptlet("r%d = com.livinglogic.ul4.Utils.add(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     336            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.add(r{op.r2}, r{op.r3});".format(op=opcode)) 
    343337        elif opcode.code == "sub": 
    344             make_scriptlet("r%d = com.livinglogic.ul4.Utils.sub(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     338            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.sub(r{op.r2}, r{op.r3});".format(op=opcode)) 
    345339        elif opcode.code == "mul": 
    346             make_scriptlet("r%d = com.livinglogic.ul4.Utils.mul(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     340            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.mul(r{op.r2}, r{op.r3});".format(op=opcode)) 
    347341        elif opcode.code == "floordiv": 
    348             make_scriptlet("r%d = com.livinglogic.ul4.Utils.floordiv(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     342            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.floordiv(r{op.r2}, r{op.r3});".format(op=opcode)) 
    349343        elif opcode.code == "truediv": 
    350             make_scriptlet("r%d = com.livinglogic.ul4.Utils.truediv(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     344            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.truediv(r{op.r2}, r{op.r3});".format(op=opcode)) 
    351345        elif opcode.code == "and": 
    352             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getBool(r%d) ? r%d : r%d;" % (opcode.r1, opcode.r3, opcode.r2, opcode.r3)) 
     346            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getBool(r{op.r3}) ? r{op.r2} : r{op.r3};".format(op=opcode)) 
    353347        elif opcode.code == "or": 
    354             make_scriptlet("r%d = com.livinglogic.ul4.Utils.getBool(r%d) ? r%d : r%d;" % (opcode.r1, opcode.r2, opcode.r2, opcode.r3)) 
     348            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getBool(r{op.r2}) ? r{op.r2} : r{op.r3};".format(op=opcode)) 
    355349        elif opcode.code == "mod": 
    356             make_scriptlet("r%d = com.livinglogic.ul4.Utils.mod(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     350            make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.mod(r{op.r2}, r{op.r3});".format(op=opcode)) 
    357351        elif opcode.code == "callfunc0": 
    358352            if opcode.arg == "now": 
    359                 make_scriptlet("r%d = new java.util.Date();" % opcode.r1) 
     353                make_scriptlet("r{op.r1} = new java.util.Date();".format(op=opcode)) 
     354            else if opcode.arg == "utcnow": 
     355                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.utcnow();".format(op=opcode)) 
    360356            elif opcode.arg == "vars": 
    361                 make_scriptlet("r%d = %s;" % (opcode.r1, variables)) 
     357                make_scriptlet("r{op.r1} = {var};".format(op=opcode, var=variables)) 
    362358            else: 
    363359                raise ul4c.UnknownFunctionError(opcode.arg) 
    364360        elif opcode.code == "callfunc1": 
    365361            if opcode.arg == "xmlescape": 
    366                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.xmlescape(r%d);" % (opcode.r1, opcode.r2)) 
     362                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.xmlescape(r{op.r2});".format(op=opcode)) 
    367363            elif opcode.arg == "csv": 
    368                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.csv(r%d);" % (opcode.r1, opcode.r2)) 
     364                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.csv(r{op.r2});".format(op=opcode)) 
    369365            elif opcode.arg == "str": 
    370                 make_scriptlet("r%d = org.apache.commons.lang.ObjectUtils.toString(r%d);" % (opcode.r1, opcode.r2)) 
     366                make_scriptlet("r{op.r1} = org.apache.commons.lang.ObjectUtils.toString(r{op.r2});".format(op=opcode)) 
    371367            elif opcode.arg == "repr": 
    372                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.repr(r%d);" % (opcode.r1, opcode.r2)) 
     368                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.repr(r{op.r2});".format(op=opcode)) 
    373369            elif opcode.arg == "int": 
    374                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.toInteger(r%d);" % (opcode.r1, opcode.r2)) 
     370                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.toInteger(r{op.r2});".format(op=opcode)) 
    375371            elif opcode.arg == "float": 
    376                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.toFloat(r%d);" % (opcode.r1, opcode.r2)) 
     372                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.toFloat(r{op.r2});".format(op=opcode)) 
    377373            elif opcode.arg == "bool": 
    378                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.getBool(r%d);" % (opcode.r1, opcode.r2)) 
     374                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.getBool(r{op.r2});".format(op=opcode)) 
    379375            elif opcode.arg == "len": 
    380                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.length(r%d);" % (opcode.r1, opcode.r2)) 
     376                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.length(r{op.r2});".format(op=opcode)) 
    381377            elif opcode.arg == "enumerate": 
    382                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.enumerate(r%d);" % (opcode.r1, opcode.r2)) 
     378                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.enumerate(r{op.r2});".format(op=opcode)) 
    383379            elif opcode.arg == "isnone": 
    384                 make_scriptlet("r%d = (r%d == null);" % (opcode.r1, opcode.r2)) 
     380                make_scriptlet("r{op.r1} = (r{op.r2} == null);".format(op=opcode)) 
    385381            elif opcode.arg == "isstr": 
    386                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof String));" % (opcode.r1, opcode.r2, opcode.r2)) 
     382                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof String));".format(op=opcode)) 
    387383            elif opcode.arg == "isint": 
    388                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof Integer));" % (opcode.r1, opcode.r2, opcode.r2)) 
     384                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof Integer));".format(op=opcode)) 
    389385            elif opcode.arg == "isfloat": 
    390                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof Double));" % (opcode.r1, opcode.r2, opcode.r2)) 
     386                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof Double));".format(op=opcode)) 
    391387            elif opcode.arg == "isbool": 
    392                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof Boolean));" % (opcode.r1, opcode.r2, opcode.r2)) 
     388                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof Boolean));".format(op=opcode)) 
    393389            elif opcode.arg == "isdate": 
    394                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof java.util.Date));" % (opcode.r1, opcode.r2, opcode.r2)) 
     390                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof java.util.Date));".format(op=opcode)) 
    395391            elif opcode.arg == "islist": 
    396                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof java.util.List));" % (opcode.r1, opcode.r2, opcode.r2)) 
     392                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof java.util.List));".format(op=opcode)) 
    397393            elif opcode.arg == "isdict": 
    398                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof java.util.Map));" % (opcode.r1, opcode.r2, opcode.r2)) 
     394                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof java.util.Map));".format(op=opcode)) 
    399395            elif opcode.arg == "istemplate": 
    400                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof com.livinglogic.ul4.Template));" % (opcode.r1, opcode.r2, opcode.r2)) 
     396                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof com.livinglogic.ul4.Template));".format(op=opcode)) 
    401397            elif opcode.arg == "iscolor": 
    402                 make_scriptlet("r%d = ((r%d != null) && (r%d instanceof com.livinglogic.ul4.Color));" % (opcode.r1, opcode.r2, opcode.r2)) 
     398                make_scriptlet("r{op.r1} = ((r{op.r2} != null) && (r{op.r2} instanceof com.livinglogic.ul4.Color));".format(op=opcode)) 
    403399            elif opcode.arg == "chr": 
    404                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.chr(r%d);" % (opcode.r1, opcode.r2)) 
     400                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.chr(r{op.r2});".format(op=opcode)) 
    405401            elif opcode.arg == "ord": 
    406                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.ord(r%d);" % (opcode.r1, opcode.r2)) 
     402                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.ord(r{op.r2});".format(op=opcode)) 
    407403            elif opcode.arg == "hex": 
    408                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.hex(r%d);" % (opcode.r1, opcode.r2)) 
     404                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.hex(r{op.r2});".format(op=opcode)) 
    409405            elif opcode.arg == "oct": 
    410                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.oct(r%d);" % (opcode.r1, opcode.r2)) 
     406                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.oct(r{op.r2});".format(op=opcode)) 
    411407            elif opcode.arg == "bin": 
    412                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.bin(r%d);" % (opcode.r1, opcode.r2)) 
     408                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.bin(r{op.r2});".format(op=opcode)) 
    413409            elif opcode.arg == "sorted": 
    414                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.sorted(r%d);" % (opcode.r1, opcode.r2)) 
     410                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.sorted(r{op.r2});".format(op=opcode)) 
    415411            elif opcode.arg == "range": 
    416                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.range(r%d);" % (opcode.r1, opcode.r2)) 
     412                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.range(r{op.r2});".format(op=opcode)) 
    417413            elif opcode.arg == "type": 
    418                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.type(r%d);" % (opcode.r1, opcode.r2)) 
     414                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.type(r{op.r2});".format(op=opcode)) 
    419415            elif opcode.arg == "get": 
    420                 make_scriptlet("r%d = %s.get(r%d);" % (opcode.r1, variables, opcode.r2)) 
     416                make_scriptlet("r{op.r1} = {var}.get(r{op.r2});".format(op=opcode, var=variables)) 
    421417            elif opcode.arg == "json": 
    422                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.json(r%d);" % (opcode.r1, opcode.r2)) 
     418                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.json(r{op.r2});".format(op=opcode)) 
    423419            elif opcode.arg == "reversed": 
    424                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.reversed(r%d);" % (opcode.r1, opcode.r2)) 
     420                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.reversed(r{op.r2});".format(op=opcode)) 
    425421            else: 
    426422                raise ul4c.UnknownFunctionError(opcode.arg) 
    427423        elif opcode.code == "callfunc2": 
    428424            if opcode.arg == "range": 
    429                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.range(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     425                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.range(r{op.r2}, r{op.r3});".format(op=opcode)) 
    430426            elif opcode.arg == "get": 
    431                 make_scriptlet("r%d = %s.containsKey(r%d) ? %s.get(r%d) : r%d;" % (opcode.r1, variables, opcode.r2, variables, opcode.r2, opcode.r3)) 
     427                make_scriptlet("r{op.r1} = {var}.containsKey(r{op.r2}) ? {var}.get(r{op.r2}) : r{op.r3};".format(op=opcode.r1, var=variables)) 
    432428            elif opcode.arg == "zip": 
    433                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.zip(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     429                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.zip(r{op.r2}, r{op.r3});".format(op=opcode)) 
    434430            else: 
    435431                raise ul4c.UnknownFunctionError(opcode.arg) 
    436432        elif opcode.code == "callfunc3": 
    437433            if opcode.arg == "range": 
    438                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.range(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     434                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.range(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    439435            elif opcode.arg == "zip": 
    440                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.zip(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     436                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.zip(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    441437            elif opcode.arg == "rgb": 
    442                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.rgb(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     438                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.rgb(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    443439            elif opcode.arg == "hls": 
    444                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.hls(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     440                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.hls(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    445441            elif opcode.arg == "hsv": 
    446                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.hsv(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     442                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.hsv(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    447443            else: 
    448444                raise ul4c.UnknownFunctionError(opcode.arg) 
    449445        elif opcode.code == "callfunc4": 
    450446            if opcode.arg == "rgb": 
    451                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.rgb(r%d, r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4, opcode.r5)) 
     447                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.rgb(r{op.r2}, r{op.r3}, r{op.r4}, r{op.5});".format(op=opcode)) 
    452448            elif opcode.arg == "hls": 
    453                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.hls(r%d, r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4, opcode.r5)) 
     449                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.hls(r{op.r2}, r{op.r3}, r{op.r4}, r{op.5});".format(op=opcode)) 
    454450            elif opcode.arg == "hsv": 
    455                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.hsv(r%d, r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4, opcode.r5)) 
     451                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.hsv(r{op.r2}, r{op.r3}, r{op.r4}, r{op.5});".format(op=opcode)) 
    456452            else: 
    457453                raise ul4c.UnknownFunctionError(opcode.arg) 
    458454        elif opcode.code == "callmeth0": 
    459455            if opcode.arg == "split": 
    460                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.split(r%d);" % (opcode.r1, opcode.r2)) 
     456                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.split(r{op.r2});".format(op=opcode)) 
    461457            elif opcode.arg == "strip": 
    462                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.strip(r%d);" % (opcode.r1, opcode.r2)) 
     458                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.strip(r{op.r2});".format(op=opcode)) 
    463459            elif opcode.arg == "lstrip": 
    464                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.lstrip(r%d);" % (opcode.r1, opcode.r2)) 
     460                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.lstrip(r{op.r2});".format(op=opcode)) 
    465461            elif opcode.arg == "rstrip": 
    466                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.rstrip(r%d);" % (opcode.r1, opcode.r2)) 
     462                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.rstrip(r{op.r2});".format(op=opcode)) 
    467463            elif opcode.arg == "upper": 
    468                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.upper(r%d);" % (opcode.r1, opcode.r2)) 
     464                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.upper(r{op.r2});".format(op=opcode)) 
    469465            elif opcode.arg == "lower": 
    470                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.lower(r%d);" % (opcode.r1, opcode.r2)) 
     466                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.lower(r{op.r2});".format(op=opcode)) 
    471467            elif opcode.arg == "capitalize": 
    472                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.capitalize(r%d);" % (opcode.r1, opcode.r2)) 
     468                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.capitalize(r{op.r2});".format(op=opcode)) 
    473469            elif opcode.arg == "items": 
    474                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.items(r%d);" % (opcode.r1, opcode.r2)) 
     470                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.items(r{op.r2});".format(op=opcode)) 
    475471            elif opcode.arg == "isoformat": 
    476                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.isoformat(r%d);" % (opcode.r1, opcode.r2)) 
     472                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.isoformat(r{op.r2});".format(op=opcode)) 
     473            elif opcode.arg == "mimeformat": 
     474                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.mimeformat(r{op.r2});".format(op=opcode)) 
    477475            elif opcode.arg == "r": 
    478                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).r();" % (opcode.r1, opcode.r2)) 
     476                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).r();".format(op=opcode)) 
    479477            elif opcode.arg == "g": 
    480                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).g();" % (opcode.r1, opcode.r2)) 
     478                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).g();".format(op=opcode)) 
    481479            elif opcode.arg == "b": 
    482                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).b();" % (opcode.r1, opcode.r2)) 
     480                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).b();".format(op=opcode)) 
    483481            elif opcode.arg == "a": 
    484                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).a();" % (opcode.r1, opcode.r2)) 
     482                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).a();".format(op=opcode)) 
    485483            elif opcode.arg == "hls": 
    486                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).hls();" % (opcode.r1, opcode.r2)) 
     484                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).hls();".format(op=opcode)) 
    487485            elif opcode.arg == "hlsa": 
    488                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).hlsa();" % (opcode.r1, opcode.r2)) 
     486                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).hlsa();".format(op=opcode)) 
    489487            elif opcode.arg == "hsv": 
    490                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).hsv();" % (opcode.r1, opcode.r2)) 
     488                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).hsv();".format(op=opcode)) 
    491489            elif opcode.arg == "hsva": 
    492                 make_scriptlet("r%d = ((com.livinglogic.ul4.Color)r%d).hsva();" % (opcode.r1, opcode.r2)) 
     490                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Color)r{op.r2}).hsva();".format(op=opcode)) 
    493491            elif opcode.arg == "lum": 
    494                 make_scriptlet("r%d = new Double(((com.livinglogic.ul4.Color)r%d).lum());" % (opcode.r1, opcode.r2)) 
     492                make_scriptlet("r{op.r1} = new Double(((com.livinglogic.ul4.Color)r{op.r2}).lum());".format(op=opcode)) 
    495493            else: 
    496494                raise ul4c.UnknownMethodError(opcode.arg) 
    497495        elif opcode.code == "callmeth1": 
    498496            if opcode.arg == "split": 
    499                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.split(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     497                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.split(r{op.r2}, r{op.r3});".format(op=opcode)) 
    500498            elif opcode.arg == "rsplit": 
    501                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.rsplit(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     499                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.rsplit(r{op.r2}, r{op.r3});".format(op=opcode)) 
    502500            elif opcode.arg == "strip": 
    503                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.strip(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     501                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.strip(r{op.r2}, r{op.r3});".format(op=opcode)) 
    504502            elif opcode.arg == "lstrip": 
    505                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.lstrip(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     503                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.lstrip(r{op.r2}, r{op.r3});".format(op=opcode)) 
    506504            elif opcode.arg == "rstrip": 
    507                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.rstrip(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     505                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.rstrip(r{op.r2}, r{op.r3});".format(op=opcode)) 
    508506            elif opcode.arg == "startswith": 
    509                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.startswith(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     507                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.startswith(r{op.r2}, r{op.r3});".format(op=opcode)) 
    510508            elif opcode.arg == "endswith": 
    511                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.endswith(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     509                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.endswith(r{op.r2}, r{op.r3});".format(op=opcode)) 
    512510            elif opcode.arg == "find": 
    513                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.find(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     511                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.find(r{op.r2}, r{op.r3});".format(op=opcode)) 
    514512            elif opcode.arg == "rfind": 
    515                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.rfind(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     513                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.rfind(r{op.r2}, r{op.r3});".format(op=opcode)) 
    516514            elif opcode.arg == "format": 
    517                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.format(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     515                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.format(r{op.r2}, r{op.r3});".format(op=opcode)) 
    518516            elif opcode.arg == "get": 
    519                 make_scriptlet("r%d = ((java.util.Map)r%d).get(r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     517                make_scriptlet("r{op.r1} = ((java.util.Map)r{op.r2}).get(r{op.r3});".format(op=opcode)) 
    520518            elif opcode.arg == "withlum": 
    521                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.withlum(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     519                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.withlum(r{op.r2}, r{op.r3});".format(op=opcode)) 
    522520            elif opcode.arg == "witha": 
    523                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.witha(r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     521                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.witha(r{op.r2}, r{op.r3});".format(op=opcode)) 
    524522            else: 
    525523                raise ul4c.UnknownMethodError(opcode.arg) 
    526524        elif opcode.code == "callmeth2": 
    527525            if opcode.arg == "split": 
    528                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.split(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     526                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.split(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    529527            elif opcode.arg == "rsplit": 
    530                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.rsplit(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     528                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.rsplit(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    531529            elif opcode.arg == "find": 
    532                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.find(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     530                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.find(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    533531            elif opcode.arg == "replace": 
    534                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.replace(r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     532                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.replace(r{op.r2}, r{op.r3}, r{op.r4});".format(op=opcode)) 
    535533            elif opcode.arg == "get": 
    536                 make_scriptlet("r%d = ((java.util.Map)r%d).containsKey(r%d) ? ((java.util.Map)r%d).get(r%d) : r%d;" % (opcode.r1, opcode.r2, opcode.r3, opcode.r2, opcode.r3, opcode.r4)) 
     534                make_scriptlet("r{op.r1} = ((java.util.Map)r{op.r2}).containsKey(r{op.r3}) ? ((java.util.Map)r{op.r2}).get(r{op.r3}) : r{op.r4};".format(op=opcode)) 
    537535            else: 
    538536                raise ul4c.UnknownMethodError(opcode.arg) 
    539537        elif opcode.code == "callmeth3": 
    540538            if opcode.arg == "find": 
    541                 make_scriptlet("r%d = com.livinglogic.ul4.Utils.find(r%d, r%d, r%d, r%d);" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4, opcode.r5)) 
     539                make_scriptlet("r{op.r1} = com.livinglogic.ul4.Utils.find(r{op.r2}, r{op.r3}, r{op.r4}, r{op.5});".format(op=opcode)) 
    542540            else: 
    543541                raise ul4c.UnknownMethodError(opcode.arg) 
    544542        elif opcode.code == "callmethkw": 
    545543            if opcode.arg == "render": 
    546                 make_scriptlet("r%d = ((com.livinglogic.ul4.Template)r%d).renders((java.util.Map)r%d);" % (opcode.r1, opcode.r2, opcode.r3)) 
     544                make_scriptlet("r{op.r1} = ((com.livinglogic.ul4.Template)r{op.r3}).renders((java.util.Map)r{op.r3});".format(op=opcode)) 
    547545            else: 
    548546                raise ul4c.UnknownMethodError(opcode.arg) 
    549547        elif opcode.code == "if": 
    550             make_scriptlet("if (com.livinglogic.ul4.Utils.getBool(r%d))" % opcode.r1) 
     548            make_scriptlet("if (com.livinglogic.ul4.Utils.getBool(r{op.r1}))".format(op=opcode)) 
    551549            make_scriptlet("{") 
    552550            indent += 1 
     
    561559            make_scriptlet("}") 
    562560        elif opcode.code == "render": 
    563             make_scriptlet("((com.livinglogic.ul4.Template)r%d).renderjsp(out, (Map)r%d);" % (opcode.r1, opcode.r2)) 
     561            make_scriptlet("((com.livinglogic.ul4.Template)r{op.r1}).renderjsp(out, (Map)r{op.r2});".format(op=opcode)) 
    564562        else: 
    565563            raise ul4c.UnknownOpcodeError(opcode.code) 
  • src/ll/xist/ns/ul4.py

    r3893 r3928  
    101101 
    102102### 
    103 ### Processing instructions for block structures (if/elif/else and for) 
     103### Processing instructions for block structures (if/elif/else/for and def) 
    104104### 
    105105 
     
    134134class continue_(xsc.ProcInst): 
    135135    xmlname = "continue" 
     136 
     137 
     138class def_(xsc.ProcInst): 
     139    xmlname = "def" 
  • src/ll/xist/ns/ul4.py

    r3922 r3928  
    6565 
    6666    def publishattr(self, publisher, attr): 
    67         yield publisher.encode(u'<?if not isnone(%s)?> %s="<?printx %s?>"<?end if?>' % (self.content, attr._publishname(publisher), self.content)) 
     67        yield publisher.encode(u'<?if not isnone({content})?> {name}="<?printx {content}?>"<?end if?>'.format(content=self.content, name=attr._publishname(publisher))) 
    6868 
    6969    def publishboolattr(self, publisher, attr): 
    7070        name = attr._publishname(publisher) 
    71         yield publisher.encode(u"<?if not isnone(%s)?> %s" % (self.content, name)) 
     71        yield publisher.encode(u"<?if not isnone({content})?> {name}".format(content=self.content, name=name)) 
    7272        if publisher.xhtml>0: 
    73             yield publisher.encode(u'="%s"' % name) 
     73            yield publisher.encode(u'="{name}"'.format(name=name)) 
    7474        yield publisher.encode(u'<?end if?>') 
    7575 
     
    8484    def publishattr(self, publisher, attr): 
    8585        publisher.inattr += 1 
    86         yield publisher.encode(u'<?if %s?> %s="' % (self.content, attr._publishname(publisher))) 
     86        yield publisher.encode(u'<?if {content}?> {name}="'.format(content=self.content, name=attr._publishname(publisher))) 
    8787        publisher.pushtextfilter(misc.xmlescape_attr) 
    8888        for part in attr._publishattrvalue(publisher): 
     
    9494    def publishboolattr(self, publisher, attr): 
    9595        name = attr._publishname(publisher) 
    96         yield publisher.encode(u"<?if %s?> %s" % (self.content, name)) 
     96        yield publisher.encode(u"<?if {content}?> {name}".format(content=self.content, name=name)) 
    9797        if publisher.xhtml>0: 
    98             yield publisher.encode(u'="%s"' % name) 
     98            yield publisher.encode(u'="{name}"'.format(name=name)) 
    9999        yield publisher.encode(u'<?end if?>') 
    100100