momo            Mon Jun 23 14:31:19 2003 EDT

  Modified files:              
    /phpdoc/scripts/rtlpatch    HtmlParser.class.php 
  Log:
  add support for xml (ability to deal with tag not on the initial array]
  cleanup
  
Index: phpdoc/scripts/rtlpatch/HtmlParser.class.php
diff -u phpdoc/scripts/rtlpatch/HtmlParser.class.php:1.3 
phpdoc/scripts/rtlpatch/HtmlParser.class.php:1.4
--- phpdoc/scripts/rtlpatch/HtmlParser.class.php:1.3    Thu May 29 08:33:20 2003
+++ phpdoc/scripts/rtlpatch/HtmlParser.class.php        Mon Jun 23 14:31:19 2003
@@ -16,7 +16,7 @@
   | Authors:    Moshe Doron <[EMAIL PROTECTED]>                                 |
   +----------------------------------------------------------------------+
   
- $Id: HtmlParser.class.php,v 1.3 2003/05/29 12:33:20 momo Exp $
+ $Id: HtmlParser.class.php,v 1.4 2003/06/23 18:31:19 momo Exp $
 */
 
 define("__HTML_FREE_ENGLISH__",1);
@@ -171,6 +171,9 @@
        
        
        function CHtmlParse($data){
+               if(isset($this->ATE)) unset($this->ATE);
+               if(isset($this->EBT)) unset($this->EBT);
+               if(isset($this->ECE)) unset($this->ECE);
                $this->len = strlen($data);
                $this->data = $data;
                $this->pos = 0;
@@ -179,14 +182,12 @@
                
                $this->map_all();
                $this->end_map();
-//             var_dump($this);
        }
        
        function map_all(){
-               
                $this->move_to_next_notrim();
                while($this->pos < $this->len){
-//debuginfo("pos is: ". $this->pos. ", character is: " .$this->data{$this->pos});
+//echo "\npos is: {$this->pos} character is: ".$this->data{$this->pos};
                        if($this->data{$this->pos} != "<"){
                                if ($x = $this->plaintext()) $this->map($x);
                        }else if(++$this->pos < $this->len){
@@ -195,12 +196,14 @@
                                        $this->parse_decl();
                                        //$this->map($this->parse_decl());
                                }else if($p == "/"){
+//echo "\nEnd\n";
                                        $this->map($this->parse_end());
                                        $this->pos++;
                                }else if($p == "?"){
+//echo "\nProccess\n";
                                        $this->map($this->parse_process());
                                }else{
-//debuginfo("opening");
+//echo "\nElse\n";
                                        $this->map($this->parse_start($endfl),$endfl);
                                        $this->pos++;
                                }
@@ -210,12 +213,20 @@
        }
        
        function parse_start(&$endfl){
-               global $HEType;
+               global $HEType,$EHType;
                
                //fining the <html> tag type:
                $last = $this->pos;
                $this->move_to_prop_end();
-               $return["w4htype"] = 
$HEType[strtolower(substr($this->data,$last,$this->pos-$last))];
+               $rt = strtolower(substr($this->data,$last,$this->pos-$last));
+               if(isset($HEType[$rt])) {
+                       $return["w4htype"] = $HEType[$rt];
+               } else {
+                       $tm  = time();
+                       $HEType[$rt] = $tm;
+                       $EHType[$tm] = $rt;
+                       $return["w4htype"] = $HEType[$rt];
+               }
                // looping till getting all the elements:
                while(1){
 //debuginfo("pos is: ". $this->pos. ", character is: " .$this->data{$this->pos});
@@ -388,21 +399,14 @@
                
        function map(&$element,$endfl=0){
                $type = $element["w4htype"];
-//debuginfo("<font color=blue>type: $type</font>");
-//debuginfo($element);
                $this->NOE++;
                $this->ATE[$this->NOE] = $element;
                if($type>0) $this->EBT[$type][] = $this->NOE;
                if($endfl){
-//echo "<font color=blue>type: $type</font>";
                        $this->ECE[$this->NOE] = $this->NOE;
                }else if($type >= 10){
-//echo "<font color=blue>type: $type</font>";
                        $this->maptmp[$type][] = $this->NOE;
-//debuginfo($this->maptmp[$type]);
                }else if($type <= -10){
-//mysyslog($type);
-//print_r($this->maptmp[-$type]);
 
                        if($id = @array_pop($this->maptmp[-$type])){
                                $this->ECE[$id] = $this->NOE;
@@ -411,7 +415,6 @@
                                $this->add_error("more  close tag (code $type) then 
open");
                        }
                }
-//echo "<font color=green>";var_dump($this->maptmp);echo "</font>";
        }
        
        function end_map(){
@@ -421,10 +424,6 @@
                unset($this->maptmp);
        }
        
-       
-       
-       
-       
        function add_error($msg,$level=0){
                $this->errors[] = array("msg"=>$msg,"level"=>$level);
                if($level > 1000){
@@ -442,11 +441,6 @@
        }
        
        
-       
-       
-       
-       
-       
        // ----------------------------------------------------------
        // pointer checking & moving function to convert into macroz:
        // ----------------------------------------------------------
@@ -468,7 +462,6 @@
                        if (!is_html_trim($this->data{$this->pos})){
 //debuginfo($this->data{$this->pos});
                                if($this->data{$this->pos}==">"){
-//debuginfo("ahe be chigale me");
                                        return -1; // standard html tag.
                                }else if($this->data{$this->pos} == "/"){
                                        if (($this->pos+1 < $this->len) && 
($this->data{$this->pos+1} == ">")){



-- 
PHP Documentation Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to