Index: trunk/kernel/include/tag-class.php =================================================================== diff -u -r817 -r3330 --- trunk/kernel/include/tag-class.php (.../tag-class.php) (revision 817) +++ trunk/kernel/include/tag-class.php (.../tag-class.php) (revision 3330) @@ -203,100 +203,102 @@ function ParseComments($name,$code) { - //echo "function $name:
\n"; + //echo "function $name:
\n"; - $data = array(); - $attribs = array(); - $field = ''; - for($l=0;$l0) - { - $data["name"] = $name; - $data["scope"]="global"; - } - else - { - if( isset($data["field"]) ) // process something, but don't work - { - $field = $data["field"]; - $fparts = explode(".",$field,2); - $data["name"]=$fparts[1]; - $data["scope"]=$fparts[0]; - unset($data["field"]); - } - } - $t =& $this->AddItemFromArray($data); - //echo "
";print_r($data); echo "
"; - $t->Dirty(); - if(strlen($t->get("name"))>0 && strlen($t->Get("description"))>0) - { - $t->Create(); - if(count($attribs)>0) - { - foreach($attribs as $field=>$desc) - { - $req = (substr($field,0,1)=="*"); - $t->AddAttribute($field, getArrayValue($attr_type,$field),$desc,getArrayValue($attr_default,$field),$req); - } - } - } + $data = array(); + $attribs = array(); + $field = ''; + for ($l = 0; $l < count($code); $l++) + { + $attr_default_val = ''; + $line = trim($code[$l]); + if (substr($line, 0, 1) == '@') + { + if (substr($line, 1, 6) == 'attrib') + { + $field = 'attrib'; + $line = trim( substr($line, 8) ); + $parts = explode(':', $line, 3); + if (strpos($parts[0], '=') > 0) + { + $p = explode($parts[0], '=', 2); + $attr = $p[0]; + $attr_default_val = $p[1]; + } + else + { + $attr = $parts[0]; + $attr_default = ''; + } + + if (count($parts) == 3) + { + $atype = $parts[1]; + $attr_desc = $parts[2]; + } + else + { + $attr_desc = $parts[1]; + $atype = ''; + } + $attribs[$attr] = $attr_desc; + $attr_default[$attr] = $attr_default_val; + $attr_type[$attr] = $atype; + } + else + { + $parts = explode(':', $line, 2); + $field = strtolower( substr($parts[0], 1) ); + $data[$field] = htmlentities($parts[1]); + } + } + else + { + if(substr($line,0,2)!="*/") + { + if(strlen($field)) + { + if($field=="attrib") + { + $attribs[$attr] .= $line; + } + else + $data[$field] .=$line; + } + } + } + } + if(strlen($name)>0) + { + $data["name"] = $name; + $data["scope"]="global"; + } + else + { + if( isset($data["field"]) ) // process something, but don't work + { + $field = $data["field"]; + $fparts = explode(".",$field,2); + $data["name"]=$fparts[1]; + $data["scope"]=$fparts[0]; + unset($data["field"]); + } + } + $t =& $this->AddItemFromArray($data); + //echo "
";print_r($data); echo "
"; + $t->Dirty(); + if(strlen($t->get("name"))>0 && strlen($t->Get("description"))>0) + { + $t->Create(); + if(count($attribs)>0) + { + foreach($attribs as $field=>$desc) + { + $req = (substr($field,0,1)=="*"); + $t->AddAttribute($field, getArrayValue($attr_type,$field),$desc,getArrayValue($attr_default,$field),$req); + } + } + } } function ParseFile($file)