Changeset 389

Show
Ignore:
Timestamp:
03/23/07 00:03:27 (2 years ago)
Author:
laurentj
Message:

ext: worked on jelix_scan_action_sel

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ext/jelix/jelix.c

    r387 r389  
    424424PHP_FUNCTION(jelix_scan_action_sel) 
    425425{ 
    426     zval **selectorStr, **objectArg
     426    zval **selectorStr, **objectArg, **defaultActionArg
    427427    int length; 
    428428    char * sel, *cursor, *module, *resource, *request; 
    429429 
    430430 
    431     switch (ZEND_NUM_ARGS()) { 
    432         case 2: 
    433             if (zend_get_parameters_ex(2, &selectorStr, &objectArg) == FAILURE) { 
    434                 RETURN_FALSE; 
    435             } 
    436                         break; 
    437                 default: 
    438                         ZEND_WRONG_PARAM_COUNT(); 
    439                         break; 
    440         } 
     431    if(ZEND_NUM_ARGS() != 3) { 
     432        ZEND_WRONG_PARAM_COUNT(); 
     433    } 
     434    if (zend_get_parameters_ex(3, &selectorStr, &objectArg, &defaultActionArg) == FAILURE) { 
     435        php_error_docref(NULL TSRMLS_CC, E_WARNING, "cannot read arguments"); 
     436        RETURN_FALSE; 
     437    } 
    441438 
    442439    if(Z_TYPE_P(*objectArg) != IS_OBJECT){ 
     
    444441        RETURN_FALSE 
    445442        } 
     443    if(Z_TYPE_P(*defaultActionArg) != IS_STRING){ 
     444                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid third argument, not a string"); 
     445        RETURN_FALSE 
     446        } 
    446447 
    447448    int module_length=0; 
     
    450451    int cursor_count=0; 
    451452 
    452     /* 
    453     JELIX_SELECTOR_MODULE           /^(([\w\.]+)~)?([\w\.]+)$/ 
    454     JELIX_SELECTOR_ACTION            
    455     JELIX_SELECTOR_LOCALE           /^(([\w\.]+)~)?(\w+)\.([\w\.]+)$/ 
    456     JELIX_SELECTOR_SIMPLEFILE       /^([\w\.\/]+)$/ 
    457     */ 
    458453    convert_to_string_ex(selectorStr); 
    459454    length = Z_STRLEN_PP(selectorStr); 
     
    466461    int sharpOk = 0; 
    467462    int hasRequest=0; 
     463    int firstDashPos = -1; 
     464    int hasDot = 0; 
    468465 
    469466    // parse the module part 
     
    477474            } 
    478475            sharpOk=1; 
     476        }else if(*cursor == '.'){ 
     477            hasDot = 1; 
    479478        }else if(!( ( *cursor >= 'a' && *cursor <= 'z') 
    480479                || ( *cursor >= 'A' && *cursor <= 'Z') 
    481480                || ( *cursor >= '0' && *cursor <= '9') 
    482                 || *cursor == '_' || *cursor == '.') || sharpOk){ 
     481                || *cursor == '_' ) || sharpOk){ 
    483482                RETURN_FALSE 
    484483        } 
     484        if(*cursor == '_' && firstDashPos == -1){ 
     485            firstDashPos = module_length; 
     486        } 
     487 
    485488        module_length ++; 
    486489        cursor_count ++; 
     
    488491    } 
    489492 
    490  
    491493    if(cursor_count >= length){ 
    492494        // we don't find any '~' characters, so we have parsed the resource 
     495        if(hasDot) RETURN_FALSE 
     496 
    493497        resource_length = module_length; 
    494498        module_length = 0; 
    495499    }else if( *cursor == '@'){ 
    496500        // we don't find any '~' characters, so we have parsed the resource 
     501        if(hasDot) RETURN_FALSE 
     502 
    497503        resource_length = module_length; 
    498504        module_length = 0; 
     
    521527            RETURN_FALSE 
    522528        } 
    523  
     529        firstDashPos=-1; 
    524530        cursor_count++; 
    525531        cursor++; 
     
    540546                    || ( *cursor >= 'A' && *cursor <= 'Z') 
    541547                    || ( *cursor >= '0' && *cursor <= '9') 
    542                     || *cursor == '_' || *cursor == '.') || sharpOk){ 
     548                    || *cursor == '_') || sharpOk){ 
    543549                    RETURN_FALSE 
    544550            } 
     551            if(*cursor == '_' && firstDashPos == -1){ 
     552                firstDashPos = resource_length; 
     553            } 
     554 
    545555            resource_length ++; 
    546556            cursor_count ++; 
     
    568578    } 
    569579 
     580    // request shouldn't empty if there is a @ 
    570581    if(hasRequest && request_length == 0){ 
    571582        RETURN_FALSE 
    572583    } 
    573584 
     585    if(resource_length == 0){ 
     586        zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1,     "default_index", sizeof("default_index")-1 TSRMLS_CC); 
     587        zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "controller", sizeof("controller") - 1, "default", sizeof("default")-1 TSRMLS_CC); 
     588        zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "method", sizeof("method") - 1, "index", sizeof("index")-1 TSRMLS_CC); 
     589    }else{ 
     590        if(resource_length == 1 && *resource == '#'){ 
     591           resource_length = Z_STRLEN_PP(defaultActionArg); 
     592           resource = Z_STRVAL_PP(defaultActionArg); 
     593           firstDashPos=-1; 
     594           int i; 
     595           for(i=0; i < resource_length;i++){ 
     596                if(resource[i] == '_'){ 
     597                    firstDashPos=i; 
     598                    break; 
     599                } 
     600           } 
     601        } 
     602 
     603        if(firstDashPos == -1){ 
     604            zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "controller", sizeof("controller") - 1,     "default", sizeof("default")-1 TSRMLS_CC); 
     605            zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "method", sizeof("method") - 1,     resource, resource_length TSRMLS_CC); 
     606 
     607            char *r; 
     608            int ld = sizeof("default_") -1; 
     609            int lr = ld + resource_length+1; 
     610            r= emalloc(lr); 
     611            if (r) { 
     612                memcpy(r, "default_", ld); 
     613                memcpy(r+ld, resource, resource_length); 
     614                r[lr] = 0; 
     615                zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1,     r, lr -1 TSRMLS_CC); 
     616                efree(r); 
     617            } 
     618 
     619        }else if(firstDashPos == 0){ 
     620            zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "controller", sizeof("controller") - 1,     "default", sizeof("default")-1 TSRMLS_CC); 
     621            zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "method", sizeof("method") - 1,     resource+1, resource_length-1 TSRMLS_CC); 
     622 
     623            char *r; 
     624            int ld = sizeof("default") -1; 
     625            int lr = ld + resource_length + 1; 
     626            r= emalloc(lr); 
     627            if (r) { 
     628                memcpy(r, "default", ld); 
     629                memcpy(r+ld, resource, resource_length); 
     630                r[lr] = 0; 
     631                zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1,     r, lr -1 TSRMLS_CC); 
     632                efree(r); 
     633            } 
     634 
     635        }else if(firstDashPos == resource_length-1){ 
     636            zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "controller", sizeof("controller") - 1,     resource, resource_length-1 TSRMLS_CC); 
     637            zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "method", sizeof("method") - 1,     "index", sizeof("index")-1 TSRMLS_CC); 
     638            char *r; 
     639            int ld = sizeof("index") -1; 
     640            int lr = ld + resource_length +1; 
     641            r= emalloc(lr); 
     642            if (r) { 
     643                memcpy(r, resource, resource_length); 
     644                memcpy(r+resource_length, "index", ld); 
     645                r[lr] = 0; 
     646                zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1,     r, lr -1 TSRMLS_CC); 
     647                efree(r); 
     648            } 
     649 
     650        }else{ 
     651            zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "controller", sizeof("controller") - 1,     resource, firstDashPos TSRMLS_CC); 
     652            zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "method", sizeof("method") - 1,     resource+firstDashPos+1, resource_length-firstDashPos-1 TSRMLS_CC); 
     653            zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1, resource, resource_length TSRMLS_CC); 
     654        } 
     655    } 
     656 
    574657    zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "module", sizeof("module") - 1,     module, module_length TSRMLS_CC); 
    575     zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1, resource, resource_length TSRMLS_CC); 
    576658    zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "request", sizeof("request") - 1,   request, request_length TSRMLS_CC); 
    577659        RETURN_TRUE 
     
    589671    JELIX_SELECTOR_SIMPLEFILE       /^([\w\.\/]+)$/ 
    590672    */ 
    591 /* 
    592  
    593 PHP_FUNCTION(jelix_scan_action_sel) 
    594 { 
    595     zval **selectorStr, **objectArg, **typeArg; 
    596     int length, type; 
    597     char * sel, *cursor, *module, *resource, *request; 
    598  
    599  
    600     switch (ZEND_NUM_ARGS()) { 
    601         case 2: 
    602             if (zend_get_parameters_ex(2, &selectorStr, &objectArg) == FAILURE) { 
    603                 RETURN_FALSE; 
    604             } 
    605                         type=JELIX_SELECTOR_MODULE; 
    606                         break; 
    607  
    608                 case 3: 
    609                         if (zend_get_parameters_ex(3, &selectorStr, &objectArg, &typeArg) == FAILURE) { 
    610                 php_error_docref(NULL TSRMLS_CC, E_WARNING, "cannot read arguments"); 
    611                                 RETURN_FALSE; 
    612                         } 
    613                 convert_to_long_ex(typeArg); 
    614             type = Z_LVAL_PP(typeArg); 
    615             if(type < 1 || type > 4){ 
    616                 php_error_docref(NULL TSRMLS_CC, E_WARNING, "Third argument doesn't correspond to one of JELIX_SEL_* constant"); 
    617                 RETURN_FALSE 
    618             } 
    619             break; 
    620                 default: 
    621                         ZEND_WRONG_PARAM_COUNT(); 
    622                         break; 
    623         } 
    624  
    625     if(Z_TYPE_P(*objectArg) != IS_OBJECT){ 
    626                 php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid second argument, not an object"); 
    627         RETURN_FALSE 
    628         } 
    629  
    630     int module_length=0; 
    631     int resource_length=0; 
    632     int request_length=0; 
    633     int cursor_count=0; 
    634  
    635    
    636     convert_to_string_ex(selectorStr); 
    637     length = Z_STRLEN_PP(selectorStr); 
    638     sel = Z_STRVAL_PP(selectorStr); 
    639  
    640     cursor_count=0; 
    641     cursor = module = resource = sel; 
    642  
    643     int error = 0; 
    644     int sharpOk = 0; 
    645     int hasRequest=0; 
    646  
    647     // parse the module part 
    648     while(cursor_count < length){ 
    649         if(*cursor == '~'){ 
    650             break; 
    651         } 
    652         if(*cursor == '@' && type == JELIX_SELECTOR_ACTION){ 
    653             break; 
    654         } 
    655  
    656         if(*cursor == '#'){ 
    657             if(type != JELIX_SELECTOR_ACTION ){ 
    658                 RETURN_FALSE 
    659             } 
    660             if(sharpOk || module_length > 1){ 
    661                 RETURN_FALSE 
    662             } 
    663             sharpOk=1; 
    664         }else{ 
    665             if(!( ( *cursor >= 'a' && *cursor <= 'z') 
    666                 || ( *cursor >= 'A' && *cursor <= 'Z') 
    667                 || ( *cursor >= '0' && *cursor <= '9') 
    668                 || *cursor == '_' || *cursor == '.') || sharpOk){ 
    669                 RETURN_FALSE 
    670             } 
    671         } 
    672         module_length ++; 
    673         cursor_count ++; 
    674         cursor++; 
    675     } 
    676  
    677  
    678     if(cursor_count >= length){ 
    679         // we don't find any '~' characters, so we have parsed the resource 
    680         resource_length = module_length; 
    681         module_length = 0; 
    682     }else if( *cursor == '@' && type == JELIX_SELECTOR_ACTION){ 
    683         // we don't find any '~' characters, so we have parsed the resource 
    684         resource_length = module_length; 
    685         module_length = 0; 
    686         hasRequest = 1; 
    687         // now we parse the @ section 
    688         cursor_count ++; 
    689         cursor++; 
    690  
    691         request = cursor; 
    692         request_length = 0; 
    693         while(cursor_count < length){ 
    694             if(!( ( *cursor >= 'a' && *cursor <= 'z') 
    695                 || ( *cursor >= 'A' && *cursor <= 'Z') 
    696                 || ( *cursor >= '0' && *cursor <= '9') 
    697                 || *cursor == '_' || *cursor == '.')){ 
    698                 RETURN_FALSE 
    699             } 
    700             request_length ++; 
    701             cursor_count ++; 
    702             cursor++; 
    703         } 
    704     }else{ 
    705         // the string starts by a ~ : it's not really a problem, but we generate an error 
    706         // to keep compatibily with php version of selectors. 
    707         if(module_length == 0){ 
    708             RETURN_FALSE 
    709         } 
    710  
    711         cursor_count++; 
    712         cursor++; 
    713         resource = cursor; 
    714         resource_length = 0; 
    715         sharpOk = 0; 
    716         while(cursor_count < length){ 
    717             if(*cursor == '@' && type == JELIX_SELECTOR_ACTION){ 
    718                 break; 
    719             } 
    720  
    721             if(*cursor == '#'){ 
    722                 if(type != JELIX_SELECTOR_ACTION ){ 
    723                     RETURN_FALSE 
    724                 } 
    725                 if(sharpOk || resource_length > 1){ 
    726                     RETURN_FALSE 
    727                 } 
    728                 sharpOk=1; 
    729             }else{ 
    730                 if(!( ( *cursor >= 'a' && *cursor <= 'z') 
    731                     || ( *cursor >= 'A' && *cursor <= 'Z') 
    732                     || ( *cursor >= '0' && *cursor <= '9') 
    733                     || *cursor == '_' || *cursor == '.') || sharpOk){ 
    734                     RETURN_FALSE 
    735                 } 
    736             } 
    737             resource_length ++; 
    738             cursor_count ++; 
    739             cursor++; 
    740         } 
    741  
    742         if(*cursor == '@' && type == JELIX_SELECTOR_ACTION){ 
    743             hasRequest = 1; 
    744             cursor_count++; 
    745             cursor++; 
    746             request = cursor; 
    747             request_length = 0; 
    748             while(cursor_count < length){ 
    749                 if(!( ( *cursor >= 'a' && *cursor <= 'z') 
    750                     || ( *cursor >= 'A' && *cursor <= 'Z') 
    751                     || ( *cursor >= '0' && *cursor <= '9') 
    752                     || *cursor == '_' || *cursor == '.')){ 
    753                     RETURN_FALSE 
    754                 } 
    755                 request_length ++; 
    756                 cursor_count ++; 
    757                 cursor++; 
    758             } 
    759         } 
    760     } 
    761  
    762     if(type == JELIX_SELECTOR_ACTION){ 
    763         if(hasRequest && request_length == 0){ 
    764             RETURN_FALSE 
    765         } 
    766     }else if( resource_length == 0 ){ 
    767         RETURN_FALSE 
    768     } 
    769      
    770  
    771     zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "module", sizeof("module") - 1,     module, module_length TSRMLS_CC); 
    772     zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1, resource, resource_length TSRMLS_CC); 
    773     if(type == JELIX_SELECTOR_ACTION){ 
    774         zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "request", sizeof("request") - 1,       request, request_length TSRMLS_CC); 
    775     } 
    776         RETURN_TRUE 
    777 }*/ 
    778  
  • trunk/ext/jelix/testperf.php

    r387 r389  
    22 
    33function module_selector($foo, $obj){ 
    4     if(preg_match("/^(([\w\.]+)~)?([\w\.]+)$/", $foo, $m)){ 
     4    //if(preg_match("/^(([\w\.]+)~)?([\w\.]+)$/", $foo, $m)){ 
     5    if(preg_match("/^(([a-zA-Z0-9_\.]+)~)?([a-zA-Z0-9_\.]+)$/", $foo, $m)){ 
    56        if($m[1]!='' && $m[2]!=''){ 
    67            $obj->module = $m[2]; 
     
    1617 
    1718function action_selector($foo, $obj){ 
    18     if(preg_match("/^(?:([\w\.]+|\#)~)?([\w\.]+|\#)?(?:@([\w\.]+))?$/", $foo, $m)){ 
     19    //if(preg_match("/^(?:([\w\.]+|\#)~)?(\w+|\#)?(?:@([\w\.]+))?$/", $foo, $m)){ 
     20    if(preg_match("/^(?:([a-zA-Z0-9_\.]+|\#)~)?([a-zA-Z0-9_]+|\#)?(?:@([a-zA-Z0-9_\.]+))?$/", $foo, $m)){ 
    1921        $m=array_pad($m,4,''); 
    2022        if($m[1]!=''){ 
     
    2729        } 
    2830        if($m[2] == '#') 
    29             $obj->resource = 'index'; 
     31            $obj->resource = 'machin_bidule'; 
    3032        else 
    3133            $obj->resource = $m[2]; 
     
    8890for($i=0; $i < 1000; $i++){ 
    8991    $o = new obj(); 
    90     jelix_scan_action_sel("aaa~bbb@classic",$o); 
     92    jelix_scan_action_sel("aaa~bbb@classic",$o,"machin_bidule"); 
    9193} 
    9294$t3 = microtime(true); 
  • trunk/ext/jelix/tests/scan_action_sel_001.phpt

    r388 r389  
    1313} 
    1414 
    15 $tests = array( 0=>"toto", 1=>"aaa~toto", 2=>"aa_AZ123aR~toPO_etto", 3=>"foo.bar~truc.muche", 4=>"#", 
    16                 5=>"#~foo", 6=>"foo~#", 7=>"#~#", 8=>"@classic", 9=>"foo.bar~truc.muche@classic", 
     15$tests = array( 0=>"toto", 1=>"aaa~toto", 2=>"aa_AZ123aR~toPO_etto", 3=>"foo.bar~trucmuche", 4=>"#", 
     16                5=>"#~foo", 6=>"foo~#", 7=>"#~#", 8=>"@classic", 9=>"foo.bar~trucmuche@classic", 
    1717                10=>"foo.bar~truc_muche@classic", 11=>"#@classic",  12=>"#~foo@classic",  
    18                 13=>"foo~#@classic", 14=>"#~#@classic" 
    19  
     18                13=>"foo~#@classic", 14=>"#~#@classic", 
     19                15=>"testapp~ctrl_meth@truc", 16=>"testapp~_meth@truc", 17=>"testapp~meth@truc", 
     20                18=>"testapp~ctrl_@truc", 19=>"testapp~@truc", 20=>"testapp~#@truc", 
     21                21=>"testapp~ctrl_meth", 22=>"testapp~_meth", 23=>"testapp~meth", 
     22                24=>"testapp~ctrl_", 25=>"testapp~", 26=>"testapp~#", 
     23                27=>"#~ctrl_meth@truc", 28=>"#~_meth@truc", 29=>"#~meth@truc", 
     24                30=>"#~ctrl_@truc", 31=>"#~@truc", 32=>"#~#@truc", 
     25                33=>"#~ctrl_meth", 34=>"#~_meth", 35=>"#~meth", 
     26                36=>"#~ctrl_", 37=>"#~", 38=>"#~#", 39=>"ctrl_meth@truc", 
     27                40=>"_meth@truc", 41=>"ctrl_@truc", 42=>"@truc", 
     28                43=>"#@truc", 44=>"ctrl_meth", 45=>"_meth", 
     29                46=>"meth", 47=>"ctrl_", 48=>"", 
    2030 ); 
    2131 
     
    2333 
    2434    $obj = new obj(); 
    25     $ret = jelix_scan_action_sel($t, $obj); 
     35    $ret = jelix_scan_action_sel($t, $obj, "machin_bidule"); 
    2636    echo $k,":"; 
    2737    if($ret === true){ 
     
    3545    echo 'r=',$obj->resource,"\n"; 
    3646    echo 'q=',$obj->request,"\n"; 
     47    echo 'c=',$obj->controller,"\n"; 
     48    echo 'm=',$obj->method,"\n"; 
    3749} 
    3850?> 
     
    40520:ok 
    4153m= 
    42 r=toto 
    43 q= 
     54r=default_toto 
     55q= 
     56c=default 
     57m=toto 
    44581:ok 
    4559m=aaa 
    46 r=toto 
    47 q= 
     60r=default_toto 
     61q= 
     62c=default 
     63m=toto 
    48642:ok 
    4965m=aa_AZ123aR 
    5066r=toPO_etto 
    5167q= 
     68c=toPO 
     69m=etto 
    52703:ok 
    5371m=foo.bar 
    54 r=truc.muche 
    55 q= 
     72r=default_trucmuche 
     73q= 
     74c=default 
     75m=trucmuche 
    56764:ok 
    5777m= 
    58 r=# 
    59 q= 
     78r=machin_bidule 
     79q= 
     80c=machin 
     81m=bidule 
    60825:ok 
    6183m=# 
    62 r=foo 
    63 q= 
     84r=default_foo 
     85q= 
     86c=default 
     87m=foo 
    64886:ok 
    6589m=foo 
    66 r=# 
    67 q= 
     90r=machin_bidule 
     91q= 
     92c=machin 
     93m=bidule 
    68947:ok 
    6995m=# 
    70 r=# 
    71 q= 
     96r=machin_bidule 
     97q= 
     98c=machin 
     99m=bidule 
    721008:ok 
    73101m= 
    74 r= 
    75 q=classic 
     102r=default_index 
     103q=classic 
     104c=default 
     105m=index 
    761069:ok 
    77107m=foo.bar 
    78 r=truc.muche 
    79 q=classic 
     108r=default_trucmuche 
     109q=classic 
     110c=default 
     111m=trucmuche 
    8011210:ok 
    81113m=foo.bar 
    82114r=truc_muche 
    83115q=classic 
     116c=truc 
     117m=muche 
    8411811:ok 
    85119m= 
    86 r=# 
    87 q=classic 
     120r=machin_bidule 
     121q=classic 
     122c=machin 
     123m=bidule 
    8812412:ok 
    89125m=# 
    90 r=foo 
    91 q=classic 
     126r=default_foo 
     127q=classic 
     128c=default 
     129m=foo 
    9213013:ok 
    93131m=foo 
    94 r=# 
    95 q=classic 
     132r=machin_bidule 
     133q=classic 
     134c=machin 
     135m=bidule 
    9613614:ok 
    97137m=# 
    98 r=# 
    99 q=classic 
     138r=machin_bidule 
     139q=classic 
     140c=machin 
     141m=bidule 
     14215:ok 
     143m=testapp 
     144r=ctrl_meth 
     145q=truc 
     146c=ctrl 
     147m=meth 
     14816:ok 
     149m=testapp 
     150r=default_meth 
     151q=truc 
     152c=default 
     153m=meth 
     15417:ok 
     155m=testapp 
     156r=default_meth 
     157q=truc 
     158c=default 
     159m=meth 
     16018:ok 
     161m=testapp 
     162r=ctrl_index 
     163q=truc 
     164c=ctrl 
     165m=index 
     16619:ok 
     167m=testapp 
     168r=default_index 
     169q=truc 
     170c=default 
     171m=index 
     17220:ok 
     173m=testapp 
     174r=machin_bidule 
     175q=truc 
     176c=machin 
     177m=bidule 
     17821:ok 
     179m=testapp 
     180r=ctrl_meth 
     181q= 
     182c=ctrl 
     183m=meth 
     18422:ok 
     185m=testapp 
     186r=default_meth 
     187q= 
     188c=default 
     189m=meth 
     19023:ok 
     191m=testapp 
     192r=default_meth 
     193q= 
     194c=default 
     195m=meth 
     19624:ok 
     197m=testapp 
     198r=ctrl_index 
     199q= 
     200c=ctrl 
     201m=index 
     20225:ok 
     203m=testapp 
     204r=default_index 
     205q= 
     206c=default 
     207m=index 
     20826:ok 
     209m=testapp 
     210r=machin_bidule 
     211q= 
     212c=machin 
     213m=bidule 
     21427:ok 
     215m=# 
     216r=ctrl_meth 
     217q=truc 
     218c=ctrl 
     219m=meth 
     22028:ok 
     221m=# 
     222r=default_meth 
     223q=truc 
     224c=default 
     225m=meth 
     22629:ok 
     227m=# 
     228r=default_meth 
     229q=truc 
     230c=default 
     231m=meth 
     23230:ok 
     233m=# 
     234r=ctrl_index 
     235q=truc 
     236c=ctrl 
     237m=index 
     23831:ok 
     239m=# 
     240r=default_index 
     241q=truc 
     242c=default 
     243m=index 
     24432:ok 
     245m=# 
     246r=machin_bidule 
     247q=truc 
     248c=machin 
     249m=bidule 
     25033:ok 
     251m=# 
     252r=ctrl_meth 
     253q= 
     254c=ctrl 
     255m=meth 
     25634:ok 
     257m=# 
     258r=default_meth 
     259q= 
     260c=default 
     261m=meth 
     26235:ok 
     263m=# 
     264r=default_meth 
     265q= 
     266c=default 
     267m=meth 
     26836:ok 
     269m=# 
     270r=ctrl_index 
     271q= 
     272c=ctrl 
     273m=index 
     27437:ok 
     275m=# 
     276r=default_index 
     277q= 
     278c=default 
     279m=index 
     28038:ok 
     281m=# 
     282r=machin_bidule 
     283q= 
     284c=machin 
     285m=bidule 
     28639:ok 
     287m= 
     288r=ctrl_meth 
     289q=truc 
     290c=ctrl 
     291m=meth 
     29240:ok 
     293m= 
     294r=default_meth 
     295q=truc 
     296c=default 
     297m=meth 
     29841:ok 
     299m= 
     300r=ctrl_index 
     301q=truc 
     302c=ctrl 
     303m=index 
     30442:ok 
     305m= 
     306r=default_index 
     307q=truc 
     308c=default 
     309m=index 
     31043:ok 
     311m= 
     312r=machin_bidule 
     313q=truc 
     314c=machin 
     315m=bidule 
     31644:ok 
     317m= 
     318r=ctrl_meth 
     319q= 
     320c=ctrl 
     321m=meth 
     32245:ok 
     323m= 
     324r=default_meth 
     325q= 
     326c=default 
     327m=meth 
     32846:ok 
     329m= 
     330r=default_meth 
     331q= 
     332c=default 
     333m=meth 
     33447:ok 
     335m= 
     336r=ctrl_index 
     337q= 
     338c=ctrl 
     339m=index 
     34048:ok 
     341m= 
     342r=default_index 
     343q= 
     344c=default 
     345m=index 
  • trunk/ext/jelix/tests/scan_action_sel_002.phpt

    r388 r389  
    99    public $resource; 
    1010    public $request; 
     11    public $controller; 
     12    public $method; 
    1113} 
    1214 
    1315$tests = array("a-b~toto", "ab~ro-ro", "~toPO__etto",  
    1416   "#aaa", "##" , "aa#aa", "aaa#", 
    15    "foo~#aaa", "foo~aa#aa", "foo~aaa#", "~@classic", "@", "#@"); 
     17   "foo~#aaa", "foo~aa#aa", "foo~aaa#", "~@classic", "@", "#@", "aa.bb", "aa~bb.cc"); 
    1618 
    1719foreach($tests as $k=>$t){ 
    1820 
    1921    $obj = new obj(); 
    20     $ret = jelix_scan_action_sel($t, $obj); 
     22    $ret = jelix_scan_action_sel($t, $obj,"machin_bidule"); 
    2123    echo $k,":"; 
    2224    if($ret === false){ 
     
    2729    } 
    2830 
    29     echo $obj->module,"!", $obj->resource,"!",$obj->resource,"\n"; 
     31    echo $obj->module,"!", $obj->resource,"!",$obj->resource,"!",$obj->controller,"!",$obj->method,"\n"; 
    3032} 
    3133?> 
    3234--EXPECT-- 
    33350:ok 
    34 !! 
     36!!!! 
    35371:ok 
    36 !! 
     38!!!! 
    37392:ok 
    38 !! 
     40!!!! 
    39413:ok 
    40 !! 
     42!!!! 
    41434:ok 
    42 !! 
     44!!!! 
    43455:ok 
    44 !! 
     46!!!! 
    45476:ok 
    46 !! 
     48!!!! 
    47497:ok 
    48 !! 
     50!!!! 
    49518:ok 
    50 !! 
     52!!!! 
    51539:ok 
    52 !! 
     54!!!! 
    535510:ok 
    54 !! 
     56!!!! 
    555711:ok 
    56 !! 
     58!!!! 
    575912:ok 
    58 !! 
     60!!!! 
     6113:ok 
     62!!!! 
     6314:ok 
     64!!!! 
  • trunk/testapp/modules/unittest/classes/utselectoract.class.php

    r386 r389  
    33* @package     testapp 
    44* @subpackage  unittest module 
    5 * @version     $Id$ 
    65* @author      Jouanneau Laurent 
    76* @contributor 
    8 * @copyright   2006 Jouanneau laurent 
     7* @copyright   2006-2007 Jouanneau laurent 
    98* @link        http://www.jelix.org 
    109* @licence     GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html 
     
    1716"testapp~ctrl_meth@truc"=>array('testapp','ctrl','meth','truc'), 
    1817"testapp~_meth@truc"=>array('testapp','default','meth','truc'), 
     18"testapp~meth@truc"=>array('testapp','default','meth','truc'), 
    1919"testapp~ctrl_@truc"=>array('testapp','ctrl','index','truc'), 
    2020"testapp~@truc"=>array('testapp','default','index','truc'), 
     
    2222"testapp~ctrl_meth"=>array('testapp','ctrl','meth','classic'), 
    2323"testapp~_meth"=>array('testapp','default','meth','classic'), 
     24"testapp~meth"=>array('testapp','default','meth','classic'), 
    2425"testapp~ctrl_"=>array('testapp','ctrl','index','classic'), 
    2526"testapp~"=>array('testapp','default','index','classic'), 
     
    2728        ); 
    2829        $this->runtest($sels); 
    29  
    3030    } 
    3131 
     
    4040"~ctrl_meth"=>false, 
    4141"~_meth"=>false, 
     42"me.th"=>false, 
    4243"~ctrl_"=>false, 
    4344"~"=>false, 
    4445"~#"=>false, 
     46"a-b~toto"=>false, 
     47"ab~ro-ro"=>false, 
     48"#aaa"=>false, 
     49"##"=>false, 
     50"aa#aa"=>false, 
     51"aaa#"=>false, 
     52"foo~#aaa"=>false,  
     53"foo~aa#aa"=>false,  
     54"foo~aaa#"=>false,  
     55"~@classic"=>false, 
     56"@"=>false, 
     57"#@"=>false, 
     58"aa.bb"=>false, 
     59"aa~bb.cc"=>false, 
    4560        ); 
    4661        $this->runtest($sels); 
     
    5368"#~ctrl_meth@truc"=>array('unittest','ctrl','meth','truc'), 
    5469"#~_meth@truc"=>array('unittest','default','meth','truc'), 
     70"#~meth@truc"=>array('unittest','default','meth','truc'), 
    5571"#~ctrl_@truc"=>array('unittest','ctrl','index','truc'), 
    5672"#~@truc"=>array('unittest','default','index','truc'), 
     
    5874"#~ctrl_meth"=>array('unittest','ctrl','meth','classic'), 
    5975"#~_meth"=>array('unittest','default','meth','classic'), 
     76"#~meth"=>array('unittest','default','meth','classic'), 
    6077"#~ctrl_"=>array('unittest','ctrl','index','classic'), 
    6178"#~"=>array('unittest','default','index','classic'), 
    6279"#~#"=>array('unittest','default','testselectoract','classic'), 
    63  
    6480        ); 
    6581        $this->runtest($sels); 
     
    7591"ctrl_meth"=>array('unittest','ctrl','meth','classic'), 
    7692"_meth"=>array('unittest','default','meth','classic'), 
     93"meth"=>array('unittest','default','meth','classic'), 
    7794"ctrl_"=>array('unittest','ctrl','index','classic'), 
    7895""=>array('unittest','default','index','classic'), 
     
    8198        $this->runtest($sels); 
    8299    } 
    83  
    84100 
    85101    protected function runtest($list){ 
Download in other formats: Unified Diff Zip Archive