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)
- {
- $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);
- }
- }
- }
+ $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)