1<?php 2 3// $Id: Function.php,v 1.3 2004/10/08 17:46:47 pmjones Exp $ 4 5class Text_Wiki_Render_Xhtml_Function extends Text_Wiki_Render { 6 7 var $conf = array( 8 // list separator for params and throws 9 'list_sep' => ', ', 10 11 // the "main" format string 12 'format_main' => '%access %return <b>%name</b> ( %params ) %throws', 13 14 // the looped format string for required params 15 'format_param' => '%type <i>%descr</i>', 16 17 // the looped format string for params with default values 18 'format_paramd' => '[%type <i>%descr</i> default %default]', 19 20 // the looped format string for throws 21 'format_throws' => '<b>throws</b> %type <i>%descr</i>' 22 ); 23 24 /** 25 * 26 * Renders a token into text matching the requested format. 27 * 28 * @access public 29 * 30 * @param array $options The "options" portion of the token (second 31 * element). 32 * 33 * @return string The text rendered from the token options. 34 * 35 */ 36 37 function token($options) 38 { 39 extract($options); // name, access, return, params, throws 40 41 // build the baseline output 42 $output = $this->conf['format_main']; 43 $output = str_replace('%access', htmlspecialchars($access), $output); 44 $output = str_replace('%return', htmlspecialchars($return), $output); 45 $output = str_replace('%name', htmlspecialchars($name), $output); 46 47 // build the set of params 48 $list = array(); 49 foreach ($params as $key => $val) { 50 51 // is there a default value? 52 if ($val['default']) { 53 $tmp = $this->conf['format_paramd']; 54 } else { 55 $tmp = $this->conf['format_param']; 56 } 57 58 // add the param elements 59 $tmp = str_replace('%type', htmlspecialchars($val['type']), $tmp); 60 $tmp = str_replace('%descr', htmlspecialchars($val['descr']), $tmp); 61 $tmp = str_replace('%default', htmlspecialchars($val['default']), $tmp); 62 $list[] = $tmp; 63 } 64 65 // insert params into output 66 $tmp = implode($this->conf['list_sep'], $list); 67 $output = str_replace('%params', $tmp, $output); 68 69 // build the set of throws 70 $list = array(); 71 foreach ($throws as $key => $val) { 72 $tmp = $this->conf['format_throws']; 73 $tmp = str_replace('%type', htmlspecialchars($val['type']), $tmp); 74 $tmp = str_replace('%descr', htmlspecialchars($val['descr']), $tmp); 75 $list[] = $tmp; 76 } 77 78 // insert throws into output 79 $tmp = implode($this->conf['list_sep'], $list); 80 $output = str_replace('%throws', $tmp, $output); 81 82 // close the div and return the output 83 $output .= '</div>'; 84 return "\n$output\n\n"; 85 } 86} 87?>