Select Git revision
Colors.pmod
-
Per Hedbor authored
Rev: lib/modules/Colors.pmod:1.3
Per Hedbor authoredRev: lib/modules/Colors.pmod:1.3
js_html.pike 6.74 KiB
#include "types.h"
import ".";
inherit "html.pike";
mapping what_bg=
(["method":"#c0c0ff",
"function":"#c0c0ff",
"variable":"#e0c0e0",
"class":"#ffa296",
"module":"#ffa296"]);
SGML wmml_to_html(SGML data)
{
SGML ret=convert(data);
if(!(objectp(data[0]) &&
(data[0]->tag=="body" || data[0]->tag=="frameset")))
{
ret=({
Sgml.Tag("body",
([
"bgcolor":"#ffffff",
"text":"#000000",
"link":"#110664",
"vlink":"##641831",
"alink":"#b20200",
]),0,
ret),
});
}
return ({
Sgml.Tag("html",([]),0,
({
"\n",
Sgml.Tag("head",([]),0,
({
Sgml.Tag("title",([]),0,
({
"Pike Manual",
})),
"\n"
})),
})+
ret),
"\n",
});
}
SGML low_split(SGML data)
{
SGML current=({});
foreach(data, TAG t)
{
if(objectp(t))
{
TAG t2=get_tag(t);
switch(t2->tag)
{
case "preface":
if(!sections->introduction)
sections->introduction=({t});
else
sections->introduction+=
({
t,
Sgml.Tag("hr",(["size":"1","noshade":1]),0)
})+
sections->introduction;
continue;
case "introduction":
if(!sections->introduction)
sections->introduction=({});
else
sections->introduction+=
({
Sgml.Tag("hr",(["size":"1","noshade":1]),0)
});
sections->introduction+=({
t
});
continue;
case "index":
sections[t2->params->name || "index"]=({ t });
continue;
case "chapter":
case "appendix":
sections[t2->params->number]=({ t });
if (this_object()->split_and_remove_section)
this_object()->split_and_remove_section(t);
continue;
case "firstpage":
current+=
t->data+
({
Sgml.Tag("hr",(["size":"1","noshade":1]),0)
});
sections->firstpage=({
t,
});
continue;
case "table-of-contents":
sections->frame=({
Sgml.Tag("frameset",(["cols":"30%,*"]),0,
({
"\n",
Sgml.Tag("frame",(["src":mklinkname("toc_frame"),"name":"toc"])),
"\n",
Sgml.Tag("frame",(["src":mklinkname("firstpage"),"name":"display"])),
"\n",
})),
"\n",
});
sections->toc_frame=Sgml.copy(({ t }));
TAG t3=get_tag(sections->toc_frame[0]);
t3->params->target="display";
sections->toc_frame[0]->params->name="toc_frame";
break;
default:
if(t->data)
t->data=low_split(t->data);
}
}
current+=({t});
}
return current;
}
SGML convert(SGML data)
{
if(!data) return 0;
SGML ret=({});
foreach(data,TAG data)
{
if(stringp(data))
{
ret+=({data});
}
else
{
cpos=data->pos;
switch(data->tag)
{
case "hr":
data->params->noshade=1;
data->params->size="1";
break;
case "man_title":
if (data->params->title=="METHOD"||
data->params->title=="FUNCTION"||
data->params->title=="CLASS"||
data->params->title=="VARIABLE"||
data->params->title=="MODULE")
continue;
if (data->params->title=="specdesc")
{
// is this needed?
ret+=({
"\n",
Sgml.Tag(
"tr",([]),data->pos,
({ Sgml.Tag(
"td",(["valign":"top","width":"100%",
"align":"left","colspan":"4"]),
data->pos,
convert(data->data))})),
"\n"
});
continue;
}
ret+=({
"\n",
Sgml.Tag(
"tr",([]),data->pos,
({
Sgml.Tag(
"td",(["valign":"top","width":"1",
// "bgcolor":"#b1b2e6",
"align":"right"]),
data->pos,
({Sgml.Tag(
"font",(["size":"-1"]),data->pos,
({
"",
data->params->title,
""
}))})),
Sgml.Tag(
"td",([
// "bgcolor":"#151535"
]),
data->pos,
({ Sgml.Tag(
"img",(["src":"/internal-roxen-unit.gif",
"width":"10","height":"1"])) })),
Sgml.Tag(
"td",([
// "bgcolor":"#151535",
"valign":"top",
"width":"100%","align":"left"]),
data->pos,
convert(data->data)),
})),
"\n",
Sgml.Tag(
"tr",([]),data->pos,
({
Sgml.Tag(
"td",(["colspan":"4","width":"100%",
// "bgcolor":"#151535"
]),
data->pos,
({ Sgml.Tag(
"img",(["src":"/internal-roxen-unit.gif",
"width":"1","height":"1"])) })),
})),
"\n",
});
continue;
case "arguments":
ret+=({ Sgml.Tag(
"table",(["border":"0",
"cellpadding":"0","cellspacing":"4"]),
data->pos,
convert(data->data||({}))) });
continue;
case "aargdesc":
ret+=({Sgml.Tag(
"tr",([]),data->pos,
({Sgml.Tag("td",(["valign":"top","align":"left"]))})+
convert(data->data))});
continue;
case "adesc":
ret+=({"",Sgml.Tag("/td",([])),
Sgml.Tag("td",(["valign":"top","align":"left"]),
data->pos,convert(data->data))});
continue;
case "aarg":
ret+=({Sgml.Tag("tt",([]),data->pos,
convert(data->data)),
Sgml.Tag("br")});
continue;
case "method":
case "function":
case "variable":
case "class":
case "module":
data->data=clean_up_item(data->data);
ret+=({
"\n",
Sgml.Tag(
"table",(["width":"100%","cellpadding":"6",
"border":"0",
// "bgcolor":"#ffdead", "align":"center"
]),data->pos,
({
Sgml.Tag(
"tr",([]),data->pos,
({
Sgml.Tag("td",
([
"bgcolor":what_bg[data->tag],
"colspan":"4"]),
data->pos,
({
Sgml.Tag(
"font",(["color":"black","size":"+2"]),
data->pos,
({Sgml.Tag(
"b",([]),data->pos,
({data->params->name||
data->params->title||"(?)"}))
})),
"",
Sgml.Tag(
"font",(["color":"#000030"]),
data->pos,
((data->params->name &&
data->params->title)
?({Sgml.Tag("i",([]),data->pos,
({data->params->title+" "}))})
:({}))
// +({"("+data->tag+")"})
)
})),
})+convert(data->data))
}))
});
continue;
}
ret+=::convert(({data}));
}
}
return ret;
}
array clean_up_item(array in)
{
array res=({});
array buf=({});
int mode=0;
int got;
foreach (in,object|string s)
{
if (stringp(s)) got=1;
else if (s->tag!="man_title") got=1;
else got=0;
if (mode!=got)
{
if (mode==0 && stringp(s) && s-" "-"\n"-"\t"-"\r"=="")
continue; // ignore white
if (mode==0) // man_title's
res+=buf;
else
res+= ({ Sgml.Tag("man_title",(["title":"specdesc"]),0,buf) });
mode=got;
}
buf+=({s});
}
if (mode==0) // man_title's
res+=buf;
else
res+= ({ Sgml.Tag("man_title",(["title":"specdesc"]),0,buf) });
return res;
}