示例#1
0
 public function compile()
 {
     $rules =& $this->ruleset->getRules();
     ## apply each in order
     $comp = array();
     foreach ($rules as $name => $rule) {
         $this->initRule($rule);
         $r = "/* {$name} */\n";
         if ($rule->require) {
             $r .= 'require_once ' . TextWheel::export($rule->require) . ';' . "\n";
         }
         if ($rule->if_str) {
             $r .= 'if_str(' . TextWheel::export($rule->if_str) . ', $t)' . "\n";
         }
         if ($rule->if_stri) {
             $r .= 'if_stri(' . TextWheel::export($rule->if_stri) . ', $t)' . "\n";
         }
         if ($rule->if_match) {
             $r .= 'if_match(' . TextWheel::export($rule->if_match) . ', $t)' . "\n";
         }
         if ($rule->func_replace !== 'replace_identity') {
             $fun = 'TextWheel::' . $rule->func_replace;
             $r .= '$t = ' . $fun . '(' . TextWheel::export($rule->match) . ', ' . TextWheel::export($rule->replace) . ', $t);' . "\n";
         }
         $comp[] = $r;
     }
     return join("\n", $comp);
 }
示例#2
0
 public function compile($b = null)
 {
     $rules =& $this->ruleset->getRules();
     ## apply each in order
     $pre = array();
     $comp = array();
     foreach ($rules as $name => $rule) {
         $rule->name = $name;
         $this->initRule($rule);
         if (is_string($rule->replace) and isset($this->compiled[$rule->replace]) and $fun = $this->compiled[$rule->replace]) {
             $pre[] = "\n###\n## {$name}\n###\n" . $fun;
             preg_match(',function (\\w+), ', $fun, $r);
             $rule->compilereplace = $r[1];
             # ne pas modifier ->replace sinon on casse l'execution...
         }
         $r = "\t/* {$name} */\n";
         if ($rule->require) {
             $r .= "\t" . 'require_once ' . TextWheel::export($rule->require) . ';' . "\n";
         }
         if ($rule->if_str) {
             $r .= "\t" . 'if (strpos($t, ' . TextWheel::export($rule->if_str) . ') === false)' . "\n";
         }
         if ($rule->if_stri) {
             $r .= "\t" . 'if (stripos($t, ' . TextWheel::export($rule->if_stri) . ') === false)' . "\n";
         }
         if ($rule->if_match) {
             $r .= "\t" . 'if (preg_match(' . TextWheel::export($rule->if_match) . ', $t))' . "\n";
         }
         if ($rule->func_replace !== 'replace_identity') {
             $fun = 'TextWheel::' . $rule->func_replace;
             switch ($fun) {
                 case 'TextWheel::replace_all_cb':
                     $fun = $rule->replace;
                     # trim()...
                     break;
                 case 'TextWheel::replace_preg':
                     $fun = 'preg_replace';
                     break;
                 case 'TextWheel::replace_str':
                     $fun = 'str_replace';
                     break;
                 case 'TextWheel::replace_preg_cb':
                     $fun = 'preg_replace_callback';
                     break;
                 default:
                     break;
             }
             $r .= "\t" . '$t = ' . $fun . '(' . TextWheel::export($rule->match) . ', ' . TextWheel::export($rule->replace) . ', $t);' . "\n";
         }
         $comp[] = $r;
     }
     $code = join("\n", $comp);
     $code = 'function ' . $b . '($t) {' . "\n" . $code . "\n\treturn \$t;\n}\n\n";
     $code = join("\n", $pre) . $code;
     return $code;
 }