Changeset 153:9b3639f78fbe in livinglogic.java.ul4

Show
Ignore:
Timestamp:
07/17/08 19:58:54 (11 years ago)
Author:
Alexander Lamm <alexander.lamm@…>
Parents:
151:e406dca5a9e6 (diff), 152:b32be2fcdbc4 (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:

Automated merge with ssh://hg@hg.intern/LivingLogic.Java.ul4

Location:
library/src/com/livinglogic/ul4
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • library/src/com/livinglogic/ul4/Opcode.java

    r150 r153  
    9191    public static final int CF1_RANGE = 21; 
    9292    public static final int CF1_CSVESCAPE = 22; 
     93    public static final int CF1_GET = 23; 
    9394 
    9495    public static final int CF2_RANGE = 0; 
     96    public static final int CF2_GET = 1; 
    9597 
    9698    public static final int CF3_RANGE = 0; 
     
    115117    public static final int CM1_FIND = 7; 
    116118    public static final int CM1_FORMAT = 8; 
     119    public static final int CM1_GET = 9; 
    117120 
    118121    public static final int CM2_REPLACE = 0; 
     122    public static final int CM2_GET = 1; 
    119123 
    120124    public int name; 
     
    313317        else if (name.equals("range")) 
    314318            return CF1_RANGE; 
    315         if (name.equals("csvescape")) 
     319        else if (name.equals("csvescape")) 
    316320            return CF1_CSVESCAPE; 
     321        else if (name.equals("get")) 
     322            return CF1_GET; 
    317323        else 
    318324            throw new UnknownFunctionException(name); 
     
    323329        if (name.equals("range")) 
    324330            return CF2_RANGE; 
     331        else if (name.equals("get")) 
     332            return CF2_GET; 
    325333        else 
    326334            throw new UnknownFunctionException(name); 
     
    381389        else if (name.equals("format")) 
    382390            return CM1_FORMAT; 
     391        else if (name.equals("get")) 
     392            return CM1_GET; 
    383393        else 
    384394            throw new UnknownMethodException(name); 
     
    389399        if (name.equals("replace")) 
    390400            return CM2_REPLACE; 
     401        else if (name.equals("get")) 
     402            return CM2_GET; 
    391403        else 
    392404            throw new UnknownMethodException(name); 
  • library/src/com/livinglogic/ul4/Opcode.java

    r152 r153  
    3030    public static final int OC_GETSLICE2 = 25; 
    3131    public static final int OC_PRINT = 26; 
    32     public static final int OC_NOT = 27; 
    33     public static final int OC_NEG = 28; 
    34     public static final int OC_CONTAINS = 29; 
    35     public static final int OC_NOTCONTAINS = 30; 
    36     public static final int OC_EQ = 31; 
    37     public static final int OC_NE = 32; 
    38     public static final int OC_LT = 33; 
    39     public static final int OC_LE = 34; 
    40     public static final int OC_GT = 35; 
    41     public static final int OC_GE = 36; 
    42     public static final int OC_ADD = 37; 
    43     public static final int OC_SUB = 38; 
    44     public static final int OC_MUL = 39; 
    45     public static final int OC_FLOORDIV = 40; 
    46     public static final int OC_TRUEDIV = 41; 
    47     public static final int OC_AND = 42; 
    48     public static final int OC_OR = 43; 
    49     public static final int OC_MOD = 44; 
    50     public static final int OC_CALLFUNC0 = 45; 
    51     public static final int OC_CALLFUNC1 = 46; 
    52     public static final int OC_CALLFUNC2 = 47; 
    53     public static final int OC_CALLFUNC3 = 48; 
    54     public static final int OC_CALLMETH0 = 49; 
    55     public static final int OC_CALLMETH1 = 50; 
    56     public static final int OC_CALLMETH2 = 51; 
    57     public static final int OC_CALLMETH3 = 52; 
    58     public static final int OC_IF = 53; 
    59     public static final int OC_ELSE = 54; 
    60     public static final int OC_ENDIF = 55; 
    61     public static final int OC_FOR = 56; 
    62     public static final int OC_ENDFOR = 57; 
    63     public static final int OC_BREAK = 58; 
    64     public static final int OC_CONTINUE = 59; 
    65     public static final int OC_RENDER = 60; 
     32    public static final int OC_PRINTX = 27; 
     33    public static final int OC_NOT = 28; 
     34    public static final int OC_NEG = 29; 
     35    public static final int OC_CONTAINS = 30; 
     36    public static final int OC_NOTCONTAINS = 31; 
     37    public static final int OC_EQ = 32; 
     38    public static final int OC_NE = 33; 
     39    public static final int OC_LT = 34; 
     40    public static final int OC_LE = 35; 
     41    public static final int OC_GT = 36; 
     42    public static final int OC_GE = 37; 
     43    public static final int OC_ADD = 38; 
     44    public static final int OC_SUB = 39; 
     45    public static final int OC_MUL = 40; 
     46    public static final int OC_FLOORDIV = 41; 
     47    public static final int OC_TRUEDIV = 42; 
     48    public static final int OC_AND = 43; 
     49    public static final int OC_OR = 44; 
     50    public static final int OC_MOD = 45; 
     51    public static final int OC_CALLFUNC0 = 46; 
     52    public static final int OC_CALLFUNC1 = 47; 
     53    public static final int OC_CALLFUNC2 = 48; 
     54    public static final int OC_CALLFUNC3 = 49; 
     55    public static final int OC_CALLMETH0 = 50; 
     56    public static final int OC_CALLMETH1 = 51; 
     57    public static final int OC_CALLMETH2 = 52; 
     58    public static final int OC_CALLMETH3 = 53; 
     59    public static final int OC_IF = 54; 
     60    public static final int OC_ELSE = 55; 
     61    public static final int OC_ENDIF = 56; 
     62    public static final int OC_FOR = 57; 
     63    public static final int OC_ENDFOR = 58; 
     64    public static final int OC_BREAK = 59; 
     65    public static final int OC_CONTINUE = 60; 
     66    public static final int OC_RENDER = 61; 
    6667 
    6768    public static final int CF0_NOW = 0; 
     
    101102    public static final int CM0_LSTRIP = 2; 
    102103    public static final int CM0_RSTRIP = 3; 
    103     public static final int CM0_UPPER = 4; 
    104     public static final int CM0_LOWER = 5; 
    105     public static final int CM0_ITEMS = 6; 
    106     public static final int CM0_ISOFORMAT = 7; 
     104    public static final int CM0_LOWER = 4; 
     105    public static final int CM0_UPPER = 5; 
     106    public static final int CM0_CAPITALIZE = 6; 
     107    public static final int CM0_ITEMS = 7; 
     108    public static final int CM0_ISOFORMAT = 8; 
    107109 
    108110    public static final int CM1_SPLIT = 0; 
     
    187189        else if (name.equals("print")) 
    188190            return OC_PRINT; 
     191        else if (name.equals("printx")) 
     192            return OC_PRINTX; 
    189193        else if (name.equals("not")) 
    190194            return OC_NOT; 
     
    355359        else if (name.equals("lower")) 
    356360            return CM0_LOWER; 
     361        else if (name.equals("capitalize")) 
     362            return CM0_CAPITALIZE; 
    357363        else if (name.equals("items")) 
    358364            return CM0_ITEMS; 
     
    460466        else if (code == OC_PRINT) 
    461467            return "print"; 
     468        else if (code == OC_PRINTX) 
     469            return "printx"; 
    462470        else if (code == OC_NOT) 
    463471            return "not"; 
  • library/src/com/livinglogic/ul4/Template.java

    r150 r153  
    638638        if (!annotated) 
    639639        { 
    640             LinkedList stack = new LinkedList(); 
    641640            for (int i = 0; i < opcodes.size(); ++i) 
    642641            { 
     
    732731                    int j; 
    733732                    int jump; 
    734                     for (j = 0; i < breaks.size(); ++i) 
     733                    for (j = 0; j < breaks.size(); ++j) 
    735734                    { 
    736                         jump = ((Integer)breaks.get(i)).intValue(); 
     735                        jump = ((Integer)breaks.get(j)).intValue(); 
    737736                        ((Opcode)opcodes.get(jump)).jump = i; 
    738737                    } 
    739                     for (j = 0; i < continues.size(); ++i) 
     738                    for (j = 0; j < continues.size(); ++j) 
    740739                    { 
    741                         jump = ((Integer)continues.get(i)).intValue(); 
     740                        jump = ((Integer)continues.get(j)).intValue(); 
    742741                        ((Opcode)opcodes.get(jump)).jump = i; 
    743742                    } 
     
    11741173                                    reg[code.r1] = Utils.range(reg[code.r2]); 
    11751174                                    break; 
     1175                                case Opcode.CF1_GET: 
     1176                                    reg[code.r1] = variables.get(reg[code.r2]); 
     1177                                    break; 
    11761178                            } 
    11771179                            break; 
     
    11821184                                    reg[code.r1] = Utils.range(reg[code.r2], reg[code.r3]); 
    11831185                                    break; 
     1186                                case Opcode.CF2_GET: 
     1187                                    reg[code.r1] = variables.containsKey(reg[code.r2]) ? variables.get(reg[code.r2]) : reg[code.r3]; 
     1188                                    break; 
    11841189                            } 
    11851190                            break; 
     
    12541259                                    reg[code.r1] = Utils.format(reg[code.r2], reg[code.r3], defaultLocale); 
    12551260                                    break; 
     1261                                case Opcode.CM1_GET: 
     1262                                    reg[code.r1] = ((Map)reg[code.r2]).get(reg[code.r3]); 
     1263                                    break; 
    12561264                            } 
    12571265                            break; 
     
    12611269                                case Opcode.CM2_REPLACE: 
    12621270                                    reg[code.r1] = Utils.replace(reg[code.r2], reg[code.r3], reg[code.r4]); 
     1271                                    break; 
     1272                                case Opcode.CM2_GET: 
     1273                                    reg[code.r1] = ((Map)reg[code.r2]).containsKey(reg[code.r3]) ? ((Map)reg[code.r2]).get(reg[code.r3]) : reg[code.r4]; 
    12631274                                    break; 
    12641275                            } 
  • library/src/com/livinglogic/ul4/Template.java

    r152 r153  
    910910                            ++pc; 
    911911                            return; 
     912                        case Opcode.OC_PRINTX: 
     913                            nextChunk = Utils.xmlescape(ObjectUtils.toString(reg[code.r1])); 
     914                            ++pc; 
     915                            return; 
    912916                        case Opcode.OC_LOADNONE: 
    913917                            reg[code.r1] = null; 
     
    12141218                                    reg[code.r1] = Utils.lower(reg[code.r2]); 
    12151219                                    break; 
     1220                                case Opcode.CM0_CAPITALIZE: 
     1221                                    reg[code.r1] = Utils.capitalize(reg[code.r2]); 
     1222                                    break; 
    12161223                                case Opcode.CM0_ITEMS: 
    12171224                                    reg[code.r1] = Utils.items(reg[code.r2]); 
     
    13001307    public static List tokenizeTags(String source, String startdelim, String enddelim) 
    13011308    { 
    1302         Pattern tagPattern = Pattern.compile(escapeREchars(startdelim) + "(print|code|for|if|elif|else|end|break|continue|render)(\\s*((.|\\n)*?)\\s*)?" + escapeREchars(enddelim)); 
     1309        Pattern tagPattern = Pattern.compile(escapeREchars(startdelim) + "(printx|print|code|for|if|elif|else|end|break|continue|render)(\\s*((.|\\n)*?)\\s*)?" + escapeREchars(enddelim)); 
    13031310        LinkedList tags = new LinkedList(); 
    13041311        Matcher matcher = tagPattern.matcher(source);