diff --git a/doc/inlinedocparser.php b/doc/inlinedocparser.php index 26b2c67568..ea3080f1f2 100755 --- a/doc/inlinedocparser.php +++ b/doc/inlinedocparser.php @@ -12,8 +12,82 @@ /* $Id$ */ - $types = array('abstract','param','example','syntax','result','description','discussion','author','copyright','package','access'); + include ('../phpgwapi/inc/class.Template.inc.php'); + function parseobject($input) + { + $types = array('abstract','param','example','syntax','result','description','discussion','author','copyright','package','access'); + $new = explode("@",$input); + while (list($x,$y) = each($new)) + { + if (!isset($object) || trim($new[0]) == $object) + { + $t = trim($new[0]); + $t = trim(ereg_replace('#'.'function'.' ','',$t)); + reset($types); + while(list($z,$type) = each($types)) + { + if(ereg('#'.$type.' ',$y)) + { + $xkey = $type; + $out = $y; + $out = trim(ereg_replace('#'.$type.' ','',$out)); + break; + } + else + { + $xkey = 'unknown'; + $out = $y; + } + } + if($out != $new[0]) + { + $output[$t][$xkey][] = $out; + } + } + } + return Array('name' => $t, 'value' => $output[$t]); + } + + function parsesimpleobject($input) + { + + $types = array('abstract','param','example','syntax','result','description','discussion','author','copyright','package','access'); + $input = ereg_replace ("@", "@#", $input); + $new = explode("@",$input); + unset ($new[0], $new[1]); + while (list($x,$y) = each($new)) + { + if (!isset($object) || trim($new[0]) == $object) + { + $t = trim($new[0]); + reset($types); + while(list($z,$type) = each($types)) + { + if(ereg('#'.$type.' ',$y)) + { + $xkey = $type; + $out = $y; + $out = trim(ereg_replace('#'.$type.' ','',$out)); + break; + } + else + { + $xkey = 'unknown'; + $out = $y; + } + } + if($out != $new[0]) + { + $output[$t][$xkey][] = $out; + } + } + } + return Array('name' => $t, 'value' => $output[$t]); + } + + + $app = $GLOBALS['HTTP_GET_VARS']['app']; $fn = $GLOBALS['HTTP_GET_VARS']['fn']; @@ -59,8 +133,9 @@ while (list($p,$fn) = each($files)) { - $matches = $elements = $data = array(); - $string = $t = $out = $class = $xkey = $new = ''; + $matches = $elements = $data = $class = array(); + $string = $t = $out = $xkey = $new = ''; + //$string = $t = $out = $class = $xkey = $new = ''; $file = '../'.$app.'/inc/' . $fn; echo '
Looking at: ' . $file . "\n"; @@ -73,48 +148,80 @@ preg_match_all("#\*\!(.*)\*/#sUi",$string,$matches,PREG_SET_ORDER); + /* Now that I have the list of found inline docs, I need to figure out which group they belong to. */ + $idx = 0; + $ssmatches = $matches; + reset($ssmatches); + while (list($sskey,$ssval) = each($ssmatches)) + { + if (preg_match ("/@class_start/i", $ssval[1])) + { + $ssval[1] = ereg_replace ("@", "@#", $ssval[1]); + $ssval[1] = explode("@",$ssval[1]); + $ssresult = trim(ereg_replace ("#class_start", "", $ssval[1][1])); + $sstype = 'class'; + unset($matches[$idx][1][0], $matches[$idx][1][1]); + $matches_starts[$sstype.' '.$ssresult] = $matches[$idx][1]; + unset($matches[$idx]); + } + elseif (preg_match ("/@class_end $ssresult/i", $ssval[1])) + { + unset($ssresult); + unset($matches[$idx]); + } + elseif (preg_match ("/@collection_start/i", $ssval[1])) + { + $ssval[1] = ereg_replace ("@", "@#", $ssval[1]); + $ssval[1] = explode("@",$ssval[1]); + $ssresult = trim(ereg_replace ("#collection_start", "", $ssval[1][1])); + $sstype = 'collection'; + unset($matches[$idx][1][0], $matches[$idx][1][1]); + $matches_starts[$sstype.' '.$ssresult] = $matches[$idx][1]; + unset($matches[$idx]); + } + elseif (preg_match ("/@collection_end $ssresult/i", $ssval[1])) + { + unset($ssresult); + unset($matches[$idx]); + } + else + { + if (isset($ssresult)) + { + $startstop[$idx] = $sstype.' '.$ssresult; + } + else + { + $startstop[$idx] = 'some_lame_string_that_wont_be_used_by_a_function'; + } + } + $idx = $idx + 1; + } + unset($ssmatches, $sskey, $ssval, $ssresult, $sstype, $idx); + reset($startstop); while (list($key,$val) = each($matches)) { preg_match_all("#@(.*)$#sUi",$val[1],$data); - $new = explode("@",$data[1][0]); - while (list($x,$y) = each($new)) + $data[1][0] = ereg_replace ("@", "@#", $data[1][0]); + $returndata = parseobject($data[1][0]); + if ($startstop[$key] == 'some_lame_string_that_wont_be_used_by_a_function') { - if (!isset($object) || trim($new[0]) == $object) - //if (trim($new[0]) == $object) + $class[$returndata['name']] = $returndata['value']; + } + else + { + if (isset($matches_starts[$startstop[$key]])) { - $t = trim($new[0]); - if(!$key) - { - $class = $t; - } - $t = trim(ereg_replace('function','',$t)); - - reset($types); - while(list($z,$type) = each($types)) - { - if(ereg($type,$y)) - { - $xkey = $type; - $out = $y; - $out = ereg_replace($type,'',$out); - break; - } - else - { - $xkey = 'unknown'; - $out = $y; - } - } - - if($out != $new[0]) - { - $elements[$class][$t][$xkey][] = $out; - } + $returndoc = parsesimpleobject($matches_starts[$startstop[$key]]); + $class[$startstop[$key]][0] = $returndoc['value']; + //$class[$startstop[$key]][0] = $matches_starts[$startstop[$key]]; } + $class[$startstop[$key]][$returndata['name']] = $returndata['value']; } } + echo '
';
-		print_r($elements);
+		print_r($class);
 		//        var_dump($elements);
 		echo '
' . "\n"; } diff --git a/phpgwapi/inc/functions.inc.php b/phpgwapi/inc/functions.inc.php index 9c442a0ccd..8abef2b210 100644 --- a/phpgwapi/inc/functions.inc.php +++ b/phpgwapi/inc/functions.inc.php @@ -39,6 +39,10 @@ * Direct functions, which are not part of the API class * * because they are require to be availble at the lowest level. * \****************************************************************************/ + /*! + @collection_start direct functions + @abstract Direct functions, which are not part of the API class because they are require to be availble at the lowest level. + */ /*! @function sanitize @@ -405,7 +409,7 @@ } /*! - @function get_account_id() + @function get_account_id @abstract Return a properly formatted account_id. @author skeeter @discussion This function will return a properly formatted account_id. This can take either a name or an account_id as paramters. If a name is provided it will return the associated id. @@ -446,7 +450,7 @@ } /*! - @function filesystem_separator() + @function filesystem_separator @abstract sets the file system seperator depending on OS @result file system separator */ @@ -488,6 +492,10 @@ } } + /*! + @collection_end direct functions + */ + // print_debug('core functions are done'); /****************************************************************************\ * Quick verification of sane environment *