momo Sun May 2 02:49:31 2004 EDT
Added files:
/livedocs/langs en.style_mapping.php he.style_mapping.php
Log:
rtl support step one (harmless one).
the second that activate the changes goes to the newgroup with explanations as patch.
http://cvs.php.net/co.php/livedocs/langs/en.style_mapping.php?r=1.1&p=1
Index: livedocs/langs/en.style_mapping.php
+++ livedocs/langs/en.style_mapping.php
<?php
/* vim: set tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2004 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 3.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available through the world-wide-web at the following url: |
// | http://www.php.net/license/3_0.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | [EMAIL PROTECTED] so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Wez Furlong, Derick Rethans, Ilia Alshanetsky |
// +----------------------------------------------------------------------+
// | Helper functions for formatting elements |
// +----------------------------------------------------------------------+
//
// $Id: en.style_mapping.php,v 1.1 2004/05/02 06:49:31 momo Exp $
// almost XPATH.. ;-)
$map = array(
'acronym' => 'acronym',
'appendix/title' => 'h1',
'author' => 'format_name',
'authorgroup' => 'format_authorgroup',
'bookinfo/title' => 'h1',
'chapter/title' => 'h1',
'classname' => 'span',
'classsynopsis' => 'format_class_synopsis',
'code' => 'code',
'collab' => 'span',
'collabname' => 'span',
'command' => 'span',
'computeroutput' => 'span',
'constant' => 'span',
'copyright' => 'format_copyright',
'copyright/year' => 'span',
'copyright/holder' => 'span',
'editor' => 'format_name',
'emphasis' => 'em',
'enumname' => 'span',
'envar' => 'span',
'filename' => 'span',
'funcsynopsis' => 'format_funcsynopsis',
'function' => 'format_function',
'glossterm' => 'span',
'htmlcode' => 'format_htmlcode',
'informaltable' => 'table',
'informaltable/title' => 'caption',
'itemizedlist' => 'ul',
'itemizedlist/listitem' => 'li',
'legalnotice/title' => 'h3',
'link' => 'format_link',
'literal' => 'span',
'literallayout' => 'format_listing',
'methodparam' => 'span',
'methodsynopsis' => 'format_params',
'option' => 'span',
'orderedlist' => 'ol',
'orderedlist/listitem' => 'li',
'parameter' => 'span',
'phpdoc_include' => 'handle_include',
'preface/title' => 'h1',
'productname' => 'span',
'programlisting' => 'format_listing',
'propname' => 'span',
'proptype' => 'span',
'pubdate' => 'format_pubdate',
'reference/title' => 'h1',
'refnamediv/refname' => 'h1',
'refnamediv/refpurpose' => 'format_refpurpose',
'refsect1/title' => 'h3',
'refsect2/title' => 'h4',
'replaceable' => 'span',
'screen' => 'format_listing',
'section/title' => 'h1',
'sect1/title' => 'h2',
'sect2/title' => 'h3',
'sect3/title' => 'h4',
'sect4/title' => 'h5',
'sect5/title' => 'h6',
'signalname' => 'span',
'simpara' => 'p',
'simplelist' => 'ul',
'simplelist/member' => 'li',
'subscript' => 'span',
'systemitem' => 'span',
'table' => 'table',
'table/title' => 'caption',
'tbody' => 'tbody',
'tbody/row' => 'tr',
'tbody/row/entry' => 'td',
'tgroup' => '',
'thead' => 'thead',
'thead/row' => 'tr',
'thead/row/entry' => 'th',
'titleabbrev' => '',
'type' => 'span',
'ulink' => 'format_ulink',
'userinput' => 'span',
'varname' => 'span',
'warning/title' => 'format_warning_title',
'xref' => 'format_link',
);
function format_authorgroup($node)
{
$l = '';
$cl = array();
foreach ($node->children as $child) {
if ($child->tagname == "author" || $child->tagname == "editor") {
$l .= format_name($child);
}
if ($child->tagname == "collab") {
$cl[] = $child->children[0]->content;
}
}
switch ($node->attributes['id']) {
case "authors":
$prefix = "Authors:<br />";
break;
case "editors":
$prefix = "Edited by:<br />";
break;
case "translators";
$prefix = $cl[0]."<br />";
unset($cl[0]);
break;
default:
$prefix = $node->attributes['id'];
}
return sprintf('<div class="group%s"><b>%s</b>%s %s%s</div>',
$node->attributes['id'], $prefix, $node->content, $l, implode(", ", $cl));
}
function format_copyright($node)
{
$y = array();
foreach ($node->children as $child) {
if ($child->tagname == "year") {
$y[] = $child->content;
} else if ($child->tagname == "holder") {
$holder = $child->content;
}
}
return sprintf('<div class="copyright">Copyright © %s by %s</div>',
implode(", ", $y), $holder);
}
function format_refpurpose($node)
{
global $current_page, $idx, $print_version;
$vers = '';
if (substr($current_page, 0, 9) == 'function.') {
$func_name = sqlite_escape_string(strtr(substr($current_page, 9), '-',
'_'));
$q = sqlite_query($idx, "SELECT versinfo FROM funcs where
funcname='$func_name'");
if ($q && $r = sqlite_fetch_array($q, SQLITE_NUM)) {
$vers = sprintf('<div class="versinfo">%s</div>', $r[0]);
} else {
$vers = '<div class="versinfo">no version information, might
be only in CVS</div>';
}
}
return sprintf('%s<h2 class="refpurpose">%s</h2>', $vers, $node->content);
}
function format_name($node)
{
$class = $node->parent->attributes['id'];
foreach ($node->children as $child) {
if ($child->tagname == 'firstname') {
$firstname = $child->content;
}
if ($child->tagname == 'surname') {
$surname = $child->content;
}
}
switch ($class) {
case 'authors':
case 'editors':
$tag = 'div';
break;
case 'translators':
$tag = 'span';
break;
default:
$tag = 'span';
}
return sprintf('<%s class="%s">%s %s</%s>', $tag, $class, $firstname,
$surname, $tag);
}
function format_parameter($node)
{
return sprintf('<span class="%s">$%s</span>', $node->tagname, $node->content);
}
function format_pubdate($node)
{
return sprintf('<div class="%s">Published on: %s</div>', $node->tagname,
$node->content);
}
function format_ulink($node)
{
return sprintf('<a target="_blank" class="ulink" href="%s">%s</a>',
$node->attributes['url'],
$node->content
);
}
function format_warning_title($node)
{
return sprintf('<span class="warning_title">%s</span>', $node->content);
}
function format_link($node)
{
global $lang;
$caption = $node->content;
if (strlen($caption) == 0) {
$caption = lookup_title($node->attributes['linkend']);
}
if (strlen($caption) == 0) {
$caption = $node->attributes['linkend'];
}
$url = generate_url_for_id($lang, $node->attributes['linkend']);
return sprintf('<a class="%s" href="%s">%s</a>',
$node->tagname,
$url,
$caption
);
}
function format_function($node)
{
global $current_page, $lang;
$replace = array('_' => '-',
'::' => '-',
'->' => '-');
$itemid = strtr($node->content, $replace);
$itemid = strtr($itemid, array('---' => '-'));
$class = 'function';
if (isset($node->attributes['class'])) {
$class = 'method';
$dest = $node->attributes['class'] . '.method.' . $itemid;
} else {
$dest = 'function.' . $itemid;
}
if ($current_page == $dest) {
return sprintf('<span class="%s">%s()</span>', $class, $node->content);
}
$url = generate_url_for_id($lang, $dest);
return sprintf('<a class="%s" href="%s">%s()</a>',
$class,
$url,
$node->content
);
}
function format_listing($node)
{
$content = trim($node->content);
if (substr($content, 0, 5) == '<?php') {
$node->attributes['role'] = 'php';
}
if (!isset($node->attributes['role'])) {
$node->attributes['role'] = '';
}
switch ($node->attributes['role']) {
case 'php':
// Small hack because highlight_string has changed its behaviour in PHP 5 RC1
if (version_compare(phpversion(), '5.0.0RC1') == -1){
$content = preg_replace(array(
'@<br />@',
'@<font color="([^"]+)">@',
'@</font>@',
),
array(
"<br />\n",
'<span class="\\1">',
'</span>',
),
highlight_string($content, 1));
} else {
$content = preg_replace(array(
'@<br />@',
'@<span style="color: ([^"]+)">@',
'@</span>@',
),
array(
"<br />\n",
'<span class="\\1">',
'</span>',
),
highlight_string($content, 1));
}
break;
case 'shell':
case 'html':
case 'xml':
case 'c':
$content = '<pre>' . htmlentities($content) . '</pre>';
break;
default:
$content = htmlspecialchars($content);
}
return sprintf('<div class="%scode">%s</div>', $node->attributes['role'],
$content);
}
function format_params($node)
{
$node->parent = null;
/* Check role */
if (isset($node->attributes['role'])) {
$role = $node->attributes['role'];
} else {
$role = 'php';
}
/* build up prototype */
$type = $node->children[0]->content;
$fname = $node->children[1]->content;
if (!strlen(trim($fname))) { // it's a class
$fname = $node->children[3]->content;
}
$params = "";
$optclose = "";
for ($i = 2; $i < count($node->children); $i++) {
$k = $node->children[$i];
if (strlen($k->tagname) == 0 || $k->tagname == 'void') {
continue;
}
$p = '';
if (strlen(trim(strip_tags($params)))) {
$p .= ',';
}
if (isset($k->attributes['choice']) && $k->attributes['choice'] ==
'opt') {
$p = '[' . $p ;
$optclose .= ']';
if (strlen($params)) {
$p = ' ' . $p;
}
}
if (strlen($p)) {
$p .= ' ';
}
if (isset($k->children[0])) {
$p .= '<span class="methodparam"><span class="type">' .
$k->children[0]->content . '</span>';
}
if (isset($k->children[1])) {
$name = $k->children[1]->content;
} else {
$name = '';
}
switch ($role) {
case 'c':
break;
default:
if ($name && $name{0} == '&') {
$name = '&$' . substr($name, 1);
} elseif(trim($name) != '') {
$name = '$' . $name;
} else {
$name = '';
}
}
$p .= ' <span class="varname">' . $name . '</span></span>';
$params .= $p;
}
return "<div class=\"methodsynopsis\"><span class=\"type\">$type</span> <span
class=\"function\">$fname(</span>$params$optclose<span
class=\"function\">)</span></div>";
}
function format_class_synopsis($node)
{
$classname = $node->children[0]->children[0]->content;
$head = "<div class=\"classsynopsis\">class <span
class=\"classname\">$classname</span> {\n<div class=\"classcontents\">";
$foot = "</div>}\n</div>";
$body = "";
for ($i = 1; $i < count($node->children); $i++) {
$k = $node->children[$i];
switch ($k->tagname) {
case 'constructorsynopsis':
case 'methodsynopsis':
$body .= format_params($k);
break;
case 'fieldsynopsis':
$body .= "<div class=\"fieldsynopsis\"><span
class=\"type\">" .
$k->children[0]->content . "</span> <span
class=\"varname\">" .
$k->children[1]->content . "</span></div>\n";
break;
}
}
return $head . $body . $foot;
}
function format_funcsynopsis($node)
{
$html = "<div class=\"funcsynopsis\">";
/* for each prototype in the synopsis */
for ($proto = 0; $proto < count($node->children); $proto++) {
$p = $node->children[$proto];
if ($p->tagname != 'funcprototype')
continue;
if (isset($p->attributes['role'])) {
$role = $node->attributes['role'];
} else {
$role = 'php';
}
$funcdef = $p->children[0];
$rettype = "";
$funcname = "";
for ($i = 0; $i < count($funcdef->children); $i++) {
$k = $funcdef->children[$i];
switch($k->tagname) {
case '':
$rettype = $k->content;
break;
case 'function':
$funcname = $k->content;
break;
}
}
if ($rettype == '') {
$rettype = 'void';
}
$html .= "<div class=\"funcprototype\"><span
class=\"type\">$rettype</span> <span class=\"function\">$funcname</span>";
$params = "";
$optclose = "";
for ($i = 1; $i < count($p->children); $i++) {
$def = $p->children[$i];
if ($def->tagname != 'paramdef') {
continue;
}
$paramhtml = "";
$paramtype = "";
$param = null;
for ($j = 0; $j < count($def->children); $j++) {
$k = $def->children[$j];
switch($k->tagname) {
case 'parameter':
$param = $k;
break;
case 'enumname':
$paramtype = "<span
class=\"enumname\">{$k->content}</enumname>";
break;
case '':
if (strlen($paramtype) == 0)
$paramtype = $k->content;
break;
}
}
if ($paramtype == '') {
$paramtype = 'void';
}
if (count($param->children) > 1) {
$param = $param->children[1];
$optional = true;
} else {
$optional = false;
}
$paramname = trim($param->content);
if (strlen($params)) {
$paramhtml .= ',';
}
if ($optional) {
$paramhtml = '[' . $paramhtml;
$optclose .= ']';
if (strlen($params)) {
$paramhtml = ' ' . $paramhtml;
}
}
if (strlen($paramhtml)) {
$paramhtml .= ' ';
}
$paramhtml .= '<span class=\"paramdef\"><span class=\"type\">'
. $paramtype . '</span>';
switch ($role) {
case 'c':
break;
default:
if ($paramname && $paramname{0} == '&') {
$paramname = '&$' . substr($paramname,
1);
} else {
$paramname = '$' . $paramname;
}
}
$paramhtml .= ' <span class=\"parameter\">' . $paramname .
'</span></span>';
$params .= $paramhtml;
}
$html .= '(' . $params . $optclose . ")</div>";
}
return $html . "</div>";
}
?>
http://cvs.php.net/co.php/livedocs/langs/he.style_mapping.php?r=1.1&p=1
Index: livedocs/langs/he.style_mapping.php
+++ livedocs/langs/he.style_mapping.php
<?php
/* vim: set tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2004 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 3.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available through the world-wide-web at the following url: |
// | http://www.php.net/license/3_0.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | [EMAIL PROTECTED] so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Wez Furlong, Derick Rethans, Ilia Alshanetsky |
// +----------------------------------------------------------------------+
// | Helper functions for formatting elements |
// +----------------------------------------------------------------------+
//
// $Id: he.style_mapping.php,v 1.1 2004/05/02 06:49:31 momo Exp $
$direction="rtl";
$charset = "windows-1255";
// almost XPATH.. ;-)
$map = array(
'acronym' => 'acronym',
'appendix/title' => 'h1',
'author' => 'format_name',
'authorgroup' => 'format_authorgroup',
'bookinfo/title' => 'h1',
'chapter/title' => 'h1',
'classname' => 'span',
'classsynopsis' => 'format_class_synopsis',
'code' => 'code',
'collab' => 'span',
'collabname' => 'span',
'command' => 'span',
'computeroutput' => 'span',
'constant' => 'span',
'copyright' => 'format_copyright',
'copyright/year' => 'span',
'copyright/holder' => 'span',
'editor' => 'format_name',
'emphasis' => 'format_emphasis',
'enumname' => 'span',
'envar' => 'span',
'filename' => 'span',
'funcsynopsis' => 'format_funcsynopsis',
'function' => 'format_function',
'glossterm' => 'span',
'htmlcode' => 'format_htmlcode',
'informaltable' => 'table',
'informaltable/title' => 'caption',
'itemizedlist' => 'ul',
'itemizedlist/listitem' => 'li',
'legalnotice/title' => 'h3',
'link' => 'format_link',
'literal' => 'format_literal',
'literallayout' => 'format_listing',
'methodparam' => 'span',
'methodsynopsis' => 'format_params',
'option' => 'format_option',
'orderedlist' => 'ol',
'orderedlist/listitem' => 'li',
'parameter' => 'span',
'phpdoc_include' => 'handle_include',
'preface/title' => 'h1',
'productname' => 'span',
'programlisting' => 'format_listing',
'propname' => 'span',
'proptype' => 'span',
'pubdate' => 'format_pubdate',
'reference/title' => 'h1',
'refnamediv/refname' => 'h1',
'refnamediv/refpurpose' => 'format_refpurpose',
'refsect1/title' => 'h3',
'refsect2/title' => 'h4',
'replaceable' => 'span',
'screen' => 'format_listing',
'section/title' => 'h1',
'sect1/title' => 'h2',
'sect2/title' => 'h3',
'sect3/title' => 'h4',
'sect4/title' => 'h5',
'sect5/title' => 'h6',
'signalname' => 'span',
'simpara' => 'p',
'simplelist' => 'ul',
'simplelist/member' => 'li',
'subscript' => 'span',
'systemitem' => 'span',
'table' => 'table',
'table/title' => 'caption',
'tbody' => 'tbody',
'tbody/row' => 'tr',
'tbody/row/entry' => 'td',
'term' => 'format_term',
'tgroup' => '',
'thead' => 'thead',
'thead/row' => 'tr',
'thead/row/entry' => 'th',
'titleabbrev' => '',
'type' => 'span',
'ulink' => 'format_ulink',
'userinput' => 'span',
'varname' => 'format_varname',
'warning/title' => 'format_warning_title',
'xref' => 'format_link',
);
function format_authorgroup($node)
{
$l = '';
$cl = array();
foreach ($node->children as $child) {
if ($child->tagname == "author" || $child->tagname == "editor") {
$l .= format_name($child);
}
if ($child->tagname == "collab") {
$cl[] = $child->children[0]->content;
}
}
switch ($node->attributes['id']) {
case "authors":
$prefix = "??????:<br />";
break;
case "editors":
$prefix = "???? ?\"?:<br />";
break;
case "translators";
$prefix = $cl[0]."<br />";
unset($cl[0]);
break;
default:
$prefix = $node->attributes['id'];
}
return sprintf('<div class="group%s"><b>%s</b>%s %s%s</div>',
$node->attributes['id'], $prefix, $node->content, $l, implode(", ", $cl));
}
function format_copyright($node)
{
$y = array();
foreach ($node->children as $child) {
if ($child->tagname == "year") {
$y[] = $child->content;
} else if ($child->tagname == "holder") {
$holder = $child->content;
}
}
return sprintf('<div class="copyright">Copyright © %s by %s</div>',
implode(", ", $y), $holder);
}
function format_emphasis($node)
{
return sprintf('<em class="%s" dir=ltr>%s</em> ', $node->tagname,
htmlspecialchars($node->content, ENT_NOQUOTES));
}
function format_literal($node)
{
return sprintf('<span class="%s" dir=ltr>%s</span> ', $node->tagname,
htmlspecialchars($node->content, ENT_NOQUOTES));
}
function format_term($node)
{
return sprintf('<span class="%s" dir=ltr>%s</span> ', $node->tagname,
htmlspecialchars($node->content, ENT_NOQUOTES));
}
function format_varname($node)
{
return sprintf('<span class="%s" dir=ltr>%s</span> ', $node->tagname,
htmlspecialchars($node->content, ENT_NOQUOTES));
}
function format_option($node)
{
return sprintf('<span class="%s" dir=ltr>%s</span> ', $node->tagname,
htmlspecialchars($node->content, ENT_NOQUOTES));
}
function format_refpurpose($node)
{
global $current_page, $idx, $print_version;
$vers = '';
if (substr($current_page, 0, 9) == 'function.') {
$func_name = sqlite_escape_string(strtr(substr($current_page, 9), '-',
'_'));
$q = sqlite_query($idx, "SELECT versinfo FROM funcs where
funcname='$func_name'");
if ($q && $r = sqlite_fetch_array($q, SQLITE_NUM)) {
$vers = sprintf('<div class="versinfo">%s</div>', $r[0]);
} else {
$vers = '<div class="versinfo">no version information, might
be only in CVS</div>';
}
$print_version = 1;
}
return sprintf('%s<h2 class="refpurpose">%s</h2>', $vers, $node->content);
}
function format_name($node)
{
$class = $node->parent->attributes['id'];
foreach ($node->children as $child) {
if ($child->tagname == 'firstname') {
$firstname = $child->content;
}
if ($child->tagname == 'surname') {
$surname = $child->content;
}
}
switch ($class) {
case 'authors':
case 'editors':
$tag = 'div';
break;
case 'translators':
$tag = 'span';
break;
default:
$tag = 'span';
}
return sprintf('<%s class="%s">%s %s</%s>', $tag, $class, $firstname,
$surname, $tag);
}
function format_parameter($node)
{
return sprintf('<span class="%s">$%s</span>', $node->tagname,
htmlspecialchars($node->content, ENT_NOQUOTES));
}
function format_pubdate($node)
{
return sprintf('<div class="%s">Published on: %s</div>', $node->tagname,
htmlspecialchars($node->content, ENT_NOQUOTES));
}
function format_ulink($node)
{
$dir = ereg("([�-�]+)",$node->content) ? "rtl":"ltr";
return sprintf('<a target="_blank" class="ulink" href="%s"
dir="'.$dir.'">%s</a>',
$node->attributes['url'],
htmlspecialchars($node->content, ENT_NOQUOTES)
);
}
function format_warning_title($node)
{
return sprintf('<span class="warning_title">%s</span>',
htmlspecialchars($node->content, ENT_NOQUOTES));
}
function format_link($node)
{
global $lang;
$caption = $node->content;
if (strlen($caption) == 0) {
$caption = lookup_title($node->attributes['linkend']);
}
if (strlen($caption) == 0) {
$caption = $node->attributes['linkend'];
}
$url = generate_url_for_id($lang, $node->attributes['linkend']);
$dir = ereg("([�-�]+)",$caption) ? "rtl":"ltr";
return sprintf('<a class="%s" href="%s" dir="'.$dir.'">%s</a>',
$node->tagname,
$url,
$caption
);
}
function format_function($node)
{
global $current_page, $lang;
$replace = array('_' => '-',
'::' => '-',
'->' => '-');
$itemid = strtr($node->content, $replace);
$itemid = strtr($itemid, array('---' => '-'));
$class = 'function';
if (isset($node->attributes['class'])) {
$class = 'method';
$dest = $node->attributes['class'] . '.method.' . $itemid;
} else {
$dest = 'function.' . $itemid;
}
if ($current_page == $dest) {
return sprintf('<span class="%s" dir="ltr">%s()</span>', $class,
$node->content);
}
$url = generate_url_for_id($lang, $dest);
return sprintf('<a class="%s" href="%s" dir="ltr">%s()</a>',
$class,
$url,
htmlspecialchars($node->content, ENT_NOQUOTES)
);
}
function format_listing($node)
{
$content = trim($node->content);
if (substr($content, 0, 5) == '<?php') {
$node->attributes['role'] = 'php';
}
if (!isset($node->attributes['role'])) {
$node->attributes['role'] = '';
}
switch ($node->attributes['role']) {
case 'php':
// Small hack because highlight_string has changed its behaviour in PHP 5 RC1
if (version_compare(phpversion(), '5.0.0RC1') == -1){
$content = preg_replace(array(
'@<br />@',
'@<font color="([^"]+)">@',
'@</font>@',
),
array(
"<br />\n",
'<span class="\\1">',
'</span>',
),
highlight_string($content, 1));
} else {
$content = preg_replace(array(
'@<br />@',
'@<span style="color: ([^"]+)">@',
'@</span>@',
),
array(
"<br />\n",
'<span class="\\1">',
'</span>',
),
highlight_string($content, 1));
}
break;
case 'shell':
case 'html':
case 'xml':
case 'c':
$content = '<pre>' . htmlentities($content) . '</pre>';
break;
default:
$content = htmlspecialchars($content);
}
return sprintf('<div dir=ltr class="%scode">%s</div>',
$node->attributes['role'], $content);
}
function format_params($node)
{
$node->parent = null;
/* Check role */
if (isset($node->attributes['role'])) {
$role = $node->attributes['role'];
} else {
$role = 'php';
}
/* build up prototype */
$type = $node->children[0]->content;
$fname = $node->children[1]->content;
if (!strlen(trim($fname))) { // it's a class
$fname = $node->children[3]->content;
}
$params = "";
$optclose = "";
for ($i = 2; $i < count($node->children); $i++) {
$k = $node->children[$i];
if (strlen($k->tagname) == 0 || $k->tagname == 'void') {
continue;
}
$p = '';
if (strlen(trim(strip_tags($params)))) {
$p .= ',';
}
if (isset($k->attributes['choice']) && $k->attributes['choice'] ==
'opt') {
$p = '[' . $p ;
$optclose .= ']';
if (strlen($params)) {
$p = ' ' . $p;
}
}
if (strlen($p)) {
$p .= ' ';
}
if (isset($k->children[0])) {
$p .= '<span class="methodparam"><span class="type">' .
$k->children[0]->content . '</span>';
}
if (isset($k->children[1])) {
$name = $k->children[1]->content;
} else {
$name = '';
}
switch ($role) {
case 'c':
break;
default:
if ($name && $name{0} == '&') {
$name = '&$' . substr($name, 1);
} elseif(trim($name) != '') {
$name = '$' . $name;
} else {
$name = '';
}
}
$p .= ' <span class="varname">' . $name . '</span></span>';
$params .= $p;
}
return "<div class=\"methodsynopsis\" dir=\"ltr\"><span
class=\"type\">$type</span> <span
class=\"function\">$fname(</span>$params$optclose<span
class=\"function\">)</span></div>";
}
function format_class_synopsis($node)
{
$classname = $node->children[0]->children[0]->content;
$head = "<div class=\"classsynopsis\">class <span
class=\"classname\">$classname</span> {\n<div class=\"classcontents\">";
$foot = "</div>}\n</div>";
$body = "";
for ($i = 1; $i < count($node->children); $i++) {
$k = $node->children[$i];
switch ($k->tagname) {
case 'constructorsynopsis':
case 'methodsynopsis':
$body .= format_params($k);
break;
case 'fieldsynopsis':
$body .= "<div class=\"fieldsynopsis\"><span
class=\"type\">" .
$k->children[0]->content . "</span> <span
class=\"varname\">" .
$k->children[1]->content . "</span></div>\n";
break;
}
}
return $head . $body . $foot;
}
function format_funcsynopsis($node)
{
$html = "<div class=\"funcsynopsis\">";
/* for each prototype in the synopsis */
for ($proto = 0; $proto < count($node->children); $proto++) {
$p = $node->children[$proto];
if ($p->tagname != 'funcprototype')
continue;
if (isset($p->attributes['role'])) {
$role = $node->attributes['role'];
} else {
$role = 'php';
}
$funcdef = $p->children[0];
$rettype = "";
$funcname = "";
for ($i = 0; $i < count($funcdef->children); $i++) {
$k = $funcdef->children[$i];
switch($k->tagname) {
case '':
$rettype = $k->content;
break;
case 'function':
$funcname = $k->content;
break;
}
}
if ($rettype == '') {
$rettype = 'void';
}
$html .= "<div class=\"funcprototype\"><span
class=\"type\">$rettype</span> <span class=\"function\">$funcname</span>";
$params = "";
$optclose = "";
for ($i = 1; $i < count($p->children); $i++) {
$def = $p->children[$i];
if ($def->tagname != 'paramdef') {
continue;
}
$paramhtml = "";
$paramtype = "";
$param = null;
for ($j = 0; $j < count($def->children); $j++) {
$k = $def->children[$j];
switch($k->tagname) {
case 'parameter':
$param = $k;
break;
case 'enumname':
$paramtype = "<span
class=\"enumname\">{$k->content}</enumname>";
break;
case '':
if (strlen($paramtype) == 0)
$paramtype = $k->content;
break;
}
}
if ($paramtype == '') {
$paramtype = 'void';
}
if (count($param->children) > 1) {
$param = $param->children[1];
$optional = true;
} else {
$optional = false;
}
$paramname = trim($param->content);
if (strlen($params)) {
$paramhtml .= ',';
}
if ($optional) {
$paramhtml = '[' . $paramhtml;
$optclose .= ']';
if (strlen($params)) {
$paramhtml = ' ' . $paramhtml;
}
}
if (strlen($paramhtml)) {
$paramhtml .= ' ';
}
$paramhtml .= '<span class=\"paramdef\"><span class=\"type\">'
. $paramtype . '</span>';
switch ($role) {
case 'c':
break;
default:
if ($paramname && $paramname{0} == '&') {
$paramname = '&$' . substr($paramname,
1);
} else {
$paramname = '$' . $paramname;
}
}
$paramhtml .= ' <span class=\"parameter\">' . $paramname .
'</span></span>';
$params .= $paramhtml;
}
$html .= '(' . $params . $optclose . ")</div>";
}
return $html . "</div>";
}