got a basic set of templates working to generate javadoc like output from a simple model of packages/classes/methods etc
This commit is contained in:
@@ -9,8 +9,8 @@ import java.io.File
|
|||||||
class KDocProcessor(val model: KModel, val outputDir: File) {
|
class KDocProcessor(val model: KModel, val outputDir: File) {
|
||||||
|
|
||||||
fun execute(): Unit {
|
fun execute(): Unit {
|
||||||
run("allclasses-frame.html", AllClassesFrameTemplate(model))
|
run("allclasses-frame.html", AllClassesFrameTemplate(model, " target=\"classFrame\""))
|
||||||
run("allclasses-noframe.html", AllClassesFrameTemplate(model, " target=\"classFrame\""))
|
run("allclasses-noframe.html", AllClassesFrameTemplate(model))
|
||||||
// run("constant-values.html", ConstantValuesTemplate(model))
|
// run("constant-values.html", ConstantValuesTemplate(model))
|
||||||
// run("deprecated-list.html", DeprecatedListTemplate(model))
|
// run("deprecated-list.html", DeprecatedListTemplate(model))
|
||||||
run("help-doc.html", HelpDocTemplate(model))
|
run("help-doc.html", HelpDocTemplate(model))
|
||||||
@@ -29,6 +29,9 @@ class KDocProcessor(val model: KModel, val outputDir: File) {
|
|||||||
run("${p.nameAsPath}/package-summary.html", PackageSummaryTemplate(model, p))
|
run("${p.nameAsPath}/package-summary.html", PackageSummaryTemplate(model, p))
|
||||||
//run("${p.nameAsPath}/package-tree.html", PackageTreeTemplate(model, p))
|
//run("${p.nameAsPath}/package-tree.html", PackageTreeTemplate(model, p))
|
||||||
//run("${p.nameAsPath}/package-use.html", PackageUseTemplate(model, p))
|
//run("${p.nameAsPath}/package-use.html", PackageUseTemplate(model, p))
|
||||||
|
for (c in p.classes) {
|
||||||
|
run("${c.nameAsPath}.html", ClassTemplate(model, p, c))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -7,7 +7,7 @@ import std.util.*
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import org.jetbrains.kotlin.model.KModel
|
import org.jetbrains.kotlin.model.KModel
|
||||||
|
|
||||||
class AllClassesFrameTemplate(val model: KModel, val classAttributes: String = "") : TextTemplate() {
|
class AllClassesFrameTemplate(val model: KModel, val classAttributes: String = "") : KDocTemplate() {
|
||||||
override fun render() {
|
override fun render() {
|
||||||
// TODO could really do with templates in multi-line strings :)
|
// TODO could really do with templates in multi-line strings :)
|
||||||
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
@@ -16,7 +16,8 @@ class AllClassesFrameTemplate(val model: KModel, val classAttributes: String = "
|
|||||||
<HEAD>""")
|
<HEAD>""")
|
||||||
|
|
||||||
println("<!-- Generated by kdoc (${model.version}) on ${Date()} -->")
|
println("<!-- Generated by kdoc (${model.version}) on ${Date()} -->")
|
||||||
println("""<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
println("""<META http-equiv="Content-Type"
|
||||||
|
content="text/html; charset=UTF-8">
|
||||||
<TITLE>""")
|
<TITLE>""")
|
||||||
println("All Classes (${model.title})")
|
println("All Classes (${model.title})")
|
||||||
print("""</TITLE>
|
print("""</TITLE>
|
||||||
|
|||||||
@@ -0,0 +1,394 @@
|
|||||||
|
package org.jetbrains.kotlin.doc.templates
|
||||||
|
|
||||||
|
import std.*
|
||||||
|
import org.jetbrains.kotlin.template.*
|
||||||
|
import std.io.*
|
||||||
|
import std.util.*
|
||||||
|
import java.util.*
|
||||||
|
import org.jetbrains.kotlin.model.KModel
|
||||||
|
import org.jetbrains.kotlin.model.KPackage
|
||||||
|
import org.jetbrains.kotlin.model.KClass
|
||||||
|
import org.jetbrains.kotlin.model.KMethod
|
||||||
|
import org.jetbrains.kotlin.model.KAnnotation
|
||||||
|
|
||||||
|
class ClassTemplate(val model: KModel, pkg: KPackage, val klass: KClass) : PackageTemplateSupport(pkg) {
|
||||||
|
override fun render() {
|
||||||
|
// TODO could really do with templates in multi-line strings :)
|
||||||
|
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<!--NewPage-->
|
||||||
|
<HTML>
|
||||||
|
<HEAD>""")
|
||||||
|
println("<!-- Generated by kdoc (${model.version}) on ${Date()} -->")
|
||||||
|
println("""<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<TITLE>""")
|
||||||
|
println("${klass.name} (${model.title})")
|
||||||
|
println("""</TITLE>
|
||||||
|
|
||||||
|
<META NAME="date" CONTENT="2012-01-09">
|
||||||
|
<META NAME="date" CONTENT="2012-01-09">""")
|
||||||
|
println("<LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\"${pkg.nameAsRelativePath}stylesheet.css\" TITLE=\"Style\">")
|
||||||
|
println("""
|
||||||
|
<SCRIPT type="text/javascript">
|
||||||
|
function windowTitle()
|
||||||
|
{
|
||||||
|
if (location.href.indexOf('is-external=true') == -1) {""")
|
||||||
|
println(" parent.document.title=\"${klass.name} (${model.title})\";")
|
||||||
|
println(""" }
|
||||||
|
}
|
||||||
|
</SCRIPT>
|
||||||
|
<NOSCRIPT>
|
||||||
|
</NOSCRIPT>
|
||||||
|
|
||||||
|
</HEAD>
|
||||||
|
|
||||||
|
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||||
|
<HR>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||||
|
<A NAME="navbar_top"><!-- --></A>
|
||||||
|
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
||||||
|
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||||
|
<TR>
|
||||||
|
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||||
|
<A NAME="navbar_top_firstrow"><!-- --></A>
|
||||||
|
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||||
|
<TR ALIGN="center" VALIGN="top">""")
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}overview-summary.html\"><FONT CLASS=\"NavBarFont1\"><B>Overview</B></FONT></A> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"package-summary.html\"><FONT CLASS=\"NavBarFont1\"><B>Package</B></FONT></A> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#FFFFFF\" CLASS=\"NavBarCell1Rev\"> <FONT CLASS=\"NavBarFont1Rev\"><B>Class</B></FONT> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"class-use/${klass.simpleName}.html\"><FONT CLASS=\"NavBarFont1\"><B>Use</B></FONT></A> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"package-tree.html\"><FONT CLASS=\"NavBarFont1\"><B>Tree</B></FONT></A> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}deprecated-list.html\"><FONT CLASS=\"NavBarFont1\"><B>Deprecated</B></FONT></A> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}index-all.html\"><FONT CLASS=\"NavBarFont1\"><B>Index</B></FONT></A> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}help-doc.html\"><FONT CLASS=\"NavBarFont1\"><B>Help</B></FONT></A> </TD>")
|
||||||
|
println(""" </TR>
|
||||||
|
</TABLE>
|
||||||
|
</TD>
|
||||||
|
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||||
|
</EM>
|
||||||
|
</TD>
|
||||||
|
</TR>
|
||||||
|
|
||||||
|
<TR>
|
||||||
|
""")
|
||||||
|
|
||||||
|
printPrevNextClass()
|
||||||
|
println("""<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">""")
|
||||||
|
println(" <A HREF=\"${pkg.nameAsRelativePath}index.html?${klass.nameAsPath}.html\" target=\"_top\"><B>FRAMES</B></A> ")
|
||||||
|
println(" <A HREF=\"${klass.simpleName}.html\" target=\"_top\"><B>NO FRAMES</B></A> ")
|
||||||
|
println(""" <SCRIPT type="text/javascript">
|
||||||
|
<!--
|
||||||
|
if(window==top) {""")
|
||||||
|
println(" document.writeln('<A HREF=\"${pkg.nameAsRelativePath}allclasses-noframe.html\"><B>All Classes</B></A>');")
|
||||||
|
println(""" }
|
||||||
|
//-->
|
||||||
|
</SCRIPT>
|
||||||
|
<NOSCRIPT>""")
|
||||||
|
println(" <A HREF=\"${pkg.nameAsRelativePath}allclasses-noframe.html\"><B>All Classes</B></A>")
|
||||||
|
println("""</NOSCRIPT>
|
||||||
|
|
||||||
|
|
||||||
|
</FONT></TD>
|
||||||
|
</TR>
|
||||||
|
<TR>
|
||||||
|
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||||
|
SUMMARY: <A HREF="#nested_class_summary">NESTED</A> | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||||
|
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||||
|
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||||
|
</TR>
|
||||||
|
</TABLE>
|
||||||
|
<A NAME="skip-navbar_top"></A>
|
||||||
|
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||||
|
|
||||||
|
<HR>
|
||||||
|
<!-- ======== START OF CLASS DATA ======== -->
|
||||||
|
<H2>
|
||||||
|
<FONT SIZE="-1">""")
|
||||||
|
println("${pkg.name}</FONT>")
|
||||||
|
println("<BR>")
|
||||||
|
println("Class ${klass.simpleName}</H2>")
|
||||||
|
println("<PRE>")
|
||||||
|
|
||||||
|
// TODO base class...
|
||||||
|
val bc = klass.baseClass
|
||||||
|
if (bc != null) {
|
||||||
|
println(link(bc, true))
|
||||||
|
}
|
||||||
|
println(" <IMG SRC=\"${pkg.nameAsRelativePath}resources/inherit.gif\" ALT=\"extended by \"><B>${klass.name}</B>")
|
||||||
|
println("""</PRE>
|
||||||
|
<HR>
|
||||||
|
<DL>""")
|
||||||
|
print("<DT><PRE><FONT SIZE=\"-1\">")
|
||||||
|
printAnnotations(klass.annotations)
|
||||||
|
print("</FONT>public class <A HREF=\"${pkg.nameAsRelativePath}src-html/${klass.nameAsPath}.html#line.${klass.sourceLine}\"><B>${klass.simpleName}</B></A><DT>")
|
||||||
|
if (bc != null) {
|
||||||
|
print("extends ")
|
||||||
|
println(link(bc))
|
||||||
|
}
|
||||||
|
println("</DL>")
|
||||||
|
println("""</PRE>
|
||||||
|
|
||||||
|
<P>""")
|
||||||
|
println(klass.detailedDescription)
|
||||||
|
if (klass.since.size > 0 || klass.authors.size > 0) {
|
||||||
|
println("<P>")
|
||||||
|
println("<DL>")
|
||||||
|
if (klass.since.size > 0) {
|
||||||
|
println("<DT><B>Since:</B></DT>")
|
||||||
|
println(" <DD>${klass.since}</DD>")
|
||||||
|
}
|
||||||
|
for (author in klass.authors) {
|
||||||
|
println("<DT><B>Author:</B></DT>")
|
||||||
|
println(" <DD>${author}</DD>")
|
||||||
|
}
|
||||||
|
println("</DL>")
|
||||||
|
}
|
||||||
|
|
||||||
|
println("""<HR>
|
||||||
|
|
||||||
|
<P>""")
|
||||||
|
val nestedClasses = klass.nestedClasses
|
||||||
|
if (!nestedClasses.isEmpty()) {
|
||||||
|
println("""<!-- ======== NESTED CLASS SUMMARY ======== -->
|
||||||
|
|
||||||
|
<A NAME="nested_class_summary"><!-- --></A>
|
||||||
|
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||||
|
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||||
|
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||||
|
<B>Nested Class Summary</B></FONT></TH>
|
||||||
|
</TR>""")
|
||||||
|
for (nc in nestedClasses) {
|
||||||
|
println("""<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||||
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||||
|
<CODE>static class</CODE></FONT></TD>""")
|
||||||
|
println("<TD><CODE><B><A HREF=\"${pkg.nameAsRelativePath}${nc.nameAsPath}.html\" title=\"class in ${nc.packageName}\">${klass.simpleName}.${nc.simpleName}</A></B></CODE>")
|
||||||
|
println("<BR>")
|
||||||
|
println(" ${nc.description}")
|
||||||
|
println("</TD>")
|
||||||
|
}
|
||||||
|
println("""</TR>
|
||||||
|
</TABLE>
|
||||||
|
""")
|
||||||
|
}
|
||||||
|
|
||||||
|
println("""<!-- ========== METHOD SUMMARY =========== -->
|
||||||
|
|
||||||
|
<A NAME="method_summary"><!-- --></A>
|
||||||
|
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||||
|
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||||
|
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||||
|
<B>Method Summary</B></FONT></TH>
|
||||||
|
</TR>""")
|
||||||
|
|
||||||
|
for (method in klass.methods) {
|
||||||
|
printMethodSummary(method)
|
||||||
|
}
|
||||||
|
|
||||||
|
println("""</TABLE>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
|
||||||
|
<!-- ============ METHOD DETAIL ========== -->
|
||||||
|
|
||||||
|
<A NAME="method_detail"><!-- --></A>
|
||||||
|
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||||
|
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||||
|
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||||
|
<B>Method Detail</B></FONT></TH>
|
||||||
|
</TR>
|
||||||
|
</TABLE>
|
||||||
|
""")
|
||||||
|
for (method in klass.methods) {
|
||||||
|
printMethodDetail(method)
|
||||||
|
}
|
||||||
|
|
||||||
|
println("""<!-- ========= END OF CLASS DATA ========= -->
|
||||||
|
<HR>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||||
|
<A NAME="navbar_bottom"><!-- --></A>
|
||||||
|
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
||||||
|
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||||
|
<TR>
|
||||||
|
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||||
|
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||||||
|
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||||
|
<TR ALIGN="center" VALIGN="top">""")
|
||||||
|
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}overview-summary.html\"><FONT CLASS=\"NavBarFont1\"><B>Overview</B></FONT></A> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"package-summary.html\"><FONT CLASS=\"NavBarFont1\"><B>Package</B></FONT></A> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#FFFFFF\" CLASS=\"NavBarCell1Rev\"> <FONT CLASS=\"NavBarFont1Rev\"><B>Class</B></FONT> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"class-use/${klass.simpleName}.html\"><FONT CLASS=\"NavBarFont1\"><B>Use</B></FONT></A> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"package-tree.html\"><FONT CLASS=\"NavBarFont1\"><B>Tree</B></FONT></A> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}deprecated-list.html\"><FONT CLASS=\"NavBarFont1\"><B>Deprecated</B></FONT></A> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}index-all.html\"><FONT CLASS=\"NavBarFont1\"><B>Index</B></FONT></A> </TD>")
|
||||||
|
println(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}help-doc.html\"><FONT CLASS=\"NavBarFont1\"><B>Help</B></FONT></A> </TD>")
|
||||||
|
|
||||||
|
println(""" </TR>
|
||||||
|
</TABLE>
|
||||||
|
</TD>
|
||||||
|
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||||
|
</EM>
|
||||||
|
</TD>
|
||||||
|
</TR>
|
||||||
|
|
||||||
|
<TR>""")
|
||||||
|
printPrevNextClass()
|
||||||
|
println("""<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">""")
|
||||||
|
println(" <A HREF=\"${pkg.nameAsRelativePath}index.html?${klass.nameAsPath}.html\" target=\"_top\"><B>FRAMES</B></A> ")
|
||||||
|
println(" <A HREF=\"${klass.simpleName}.html\" target=\"_top\"><B>NO FRAMES</B></A> ")
|
||||||
|
println(""" <SCRIPT type="text/javascript">
|
||||||
|
<!--
|
||||||
|
if(window==top) {""")
|
||||||
|
println(" document.writeln('<A HREF=\"${pkg.nameAsRelativePath}allclasses-noframe.html\"><B>All Classes</B></A>');")
|
||||||
|
println(""" }
|
||||||
|
//-->
|
||||||
|
</SCRIPT>
|
||||||
|
<NOSCRIPT>""")
|
||||||
|
println(" <A HREF=\"${pkg.nameAsRelativePath}allclasses-noframe.html\"><B>All Classes</B></A>")
|
||||||
|
println("""</NOSCRIPT>
|
||||||
|
|
||||||
|
|
||||||
|
</FONT></TD>
|
||||||
|
</TR>
|
||||||
|
<TR>
|
||||||
|
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||||
|
SUMMARY: <A HREF="#nested_class_summary">NESTED</A> | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||||
|
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||||
|
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||||
|
</TR>
|
||||||
|
</TABLE>
|
||||||
|
<A NAME="skip-navbar_bottom"></A>
|
||||||
|
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||||
|
|
||||||
|
<HR>
|
||||||
|
Copyright © 2010-2012. All Rights Reserved.
|
||||||
|
</BODY>
|
||||||
|
</HTML>""")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun printPrevNextClass(): Unit {
|
||||||
|
println("""<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">""")
|
||||||
|
val prev = pkg.previous(klass)
|
||||||
|
if (prev != null) {
|
||||||
|
println(" <A HREF=\"${pkg.nameAsRelativePath}${prev.nameAsPath}.html\" title=\"class in ${prev.packageName}\"><B>PREV CLASS</B></A> ")
|
||||||
|
|
||||||
|
}
|
||||||
|
val next = pkg.next(klass)
|
||||||
|
if (next != null) {
|
||||||
|
println(" <A HREF=\"${pkg.nameAsRelativePath}${next.nameAsPath}.html\" title=\"class in ${next.packageName}\"><B>NEXT CLASS</B></A>")
|
||||||
|
}
|
||||||
|
println("""</FONT></TD>""")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun printMethodSummary(method: KMethod): Unit {
|
||||||
|
val deprecated = if (method.deprecated) "<B>Deprecated.</B>" else ""
|
||||||
|
println("""<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||||
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||||
|
<CODE>
|
||||||
|
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
|
||||||
|
<TR ALIGN="right" VALIGN="">
|
||||||
|
<TD NOWRAP><FONT SIZE="-1">
|
||||||
|
<CODE>""")
|
||||||
|
printTypeParameters(method)
|
||||||
|
|
||||||
|
println("<BR>")
|
||||||
|
print(link(method.returnType))
|
||||||
|
println("""</CODE></FONT></TD>
|
||||||
|
</TR>
|
||||||
|
</TABLE>
|
||||||
|
</CODE></FONT></TD>""")
|
||||||
|
print("<TD><CODE><B><A HREF=\"${pkg.nameAsRelativePath}${klass.nameAsPath}.html#${method.link}\">${method.name}</A></B>")
|
||||||
|
printParameters(method)
|
||||||
|
println("</CODE>")
|
||||||
|
println("")
|
||||||
|
println("<BR>")
|
||||||
|
println(" ${deprecated} ${method.detailedDescription}</TD>")
|
||||||
|
println("</TR>")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun printMethodDetail(method: KMethod): Unit {
|
||||||
|
println("<A NAME=\"${method.name}{${method.parameters.map{it.klass.name}})\"><!-- --></A><A NAME=\"${method.name}(${method.typeParametersText})\"><!-- --></A><H3>")
|
||||||
|
println("${method.name}</H3>")
|
||||||
|
println("<PRE>")
|
||||||
|
println("<FONT SIZE=\"-1\">")
|
||||||
|
printAnnotations(method.annotations)
|
||||||
|
print("</FONT>${method.modifiers.join(" ")} ")
|
||||||
|
|
||||||
|
printTypeParameters(method)
|
||||||
|
print(link(method.returnType))
|
||||||
|
print(" <A HREF=\"${pkg.nameAsRelativePath}src-html/${klass.nameAsPath}.html#line.${klass.sourceLine}\"><B>${method.name}</B></A>")
|
||||||
|
printParameters(method)
|
||||||
|
val exlist = method.exceptions
|
||||||
|
var first = true
|
||||||
|
if (!exlist.isEmpty()) {
|
||||||
|
println(" throws ");
|
||||||
|
for (ex in exlist) {
|
||||||
|
if (first) first = false else print(", ")
|
||||||
|
print(link(ex))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println("</PRE>")
|
||||||
|
|
||||||
|
/* TODO
|
||||||
|
println("""<DL>
|
||||||
|
<DD><B>Deprecated.</B> TODO text
|
||||||
|
<P>
|
||||||
|
<DD><b>Deprecated.</b>
|
||||||
|
<P>
|
||||||
|
<DD>
|
||||||
|
<DL>
|
||||||
|
<DT><B>Throws:</B>
|
||||||
|
<DD><CODE>${link(ex}</CODE><DT><B>Since:</B></DT>
|
||||||
|
<DD>${since}</DD>
|
||||||
|
</DL>
|
||||||
|
</DD>
|
||||||
|
</DL>
|
||||||
|
*/
|
||||||
|
println("<HR>")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun printTypeParameters(method: KMethod): Unit {
|
||||||
|
val typeParameters = method.typeParameters
|
||||||
|
if (!typeParameters.isEmpty()) {
|
||||||
|
print("<")
|
||||||
|
var separator = ""
|
||||||
|
for (t in typeParameters) {
|
||||||
|
print(separator)
|
||||||
|
separator = ", "
|
||||||
|
print(t.name)
|
||||||
|
val elist = t.extends
|
||||||
|
if (!elist.isEmpty()) {
|
||||||
|
print(" extends ")
|
||||||
|
var esep = ""
|
||||||
|
for (e in elist) {
|
||||||
|
print(esep)
|
||||||
|
esep = " & "
|
||||||
|
print(link(e))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print(">")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun printParameters(method: KMethod): Unit {
|
||||||
|
print("(")
|
||||||
|
var first = true
|
||||||
|
for (p in method.parameters) {
|
||||||
|
if (first) first = false else print(", ")
|
||||||
|
print("${p.name}: ")
|
||||||
|
print(link(p.klass))
|
||||||
|
}
|
||||||
|
print(")")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun printAnnotations(annotations: Collection<KAnnotation>): Unit {
|
||||||
|
for (a in annotations) {
|
||||||
|
println(link(a))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@ import std.util.*
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import org.jetbrains.kotlin.model.KModel
|
import org.jetbrains.kotlin.model.KModel
|
||||||
|
|
||||||
class HelpDocTemplate(val model: KModel) : TextTemplate() {
|
class HelpDocTemplate(val model: KModel) : KDocTemplate() {
|
||||||
override fun render() {
|
override fun render() {
|
||||||
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
||||||
<!--NewPage-->
|
<!--NewPage-->
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package org.jetbrains.kotlin.doc.templates
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.model.KClass
|
||||||
|
import org.jetbrains.kotlin.model.KAnnotation
|
||||||
|
import org.jetbrains.kotlin.model.KPackage
|
||||||
|
import org.jetbrains.kotlin.template.TextTemplate
|
||||||
|
|
||||||
|
abstract class KDocTemplate() : TextTemplate() {
|
||||||
|
fun href(pkg: KPackage): String {
|
||||||
|
return if (pkg.external) {
|
||||||
|
// TODO deal with external classes
|
||||||
|
""
|
||||||
|
} else relativePrefix()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun href(c: KClass): String {
|
||||||
|
val postfix = if (c.pkg.external) "?is-external=true" else ""
|
||||||
|
return "${href(c.pkg)}${c.nameAsPath}.html$postfix"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun link(c: KClass, fullName: Boolean = false): String {
|
||||||
|
// TODO if a class is a generic type parameter, just return the name...
|
||||||
|
val prefix = if (c.isAnnotation()) "@" else ""
|
||||||
|
val name = if (fullName) c.name else c.simpleName
|
||||||
|
return "<A HREF=\"${href(c)}\" title=\"${c.kind} in ${c.packageName}\">$prefix$name</A>"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun link(a: KAnnotation): String {
|
||||||
|
val c = a.klass
|
||||||
|
return "<A HREF=\"${href(c)}\" title=\"annotation in ${c.packageName}\">@${c.simpleName}</A>"
|
||||||
|
}
|
||||||
|
|
||||||
|
protected open fun relativePrefix(): String = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class PackageTemplateSupport(private val _pkg: KPackage) : KDocTemplate() {
|
||||||
|
|
||||||
|
// TODO this verbosity is to work around this bug: http://youtrack.jetbrains.com/issue/KT-1398
|
||||||
|
public val pkg: KPackage
|
||||||
|
get() = _pkg
|
||||||
|
|
||||||
|
protected override fun relativePrefix(): String = pkg.nameAsRelativePath
|
||||||
|
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@ import std.util.*
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import org.jetbrains.kotlin.model.KModel
|
import org.jetbrains.kotlin.model.KModel
|
||||||
|
|
||||||
class IndexTemplate(val model: KModel) : TextTemplate() {
|
class IndexTemplate(val model: KModel) : KDocTemplate() {
|
||||||
override fun render() {
|
override fun render() {
|
||||||
print("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
print("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
||||||
<!--NewPage-->
|
<!--NewPage-->
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ import std.util.*
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import org.jetbrains.kotlin.model.KModel
|
import org.jetbrains.kotlin.model.KModel
|
||||||
|
|
||||||
class OverviewFrameTemplate(val model: KModel) : TextTemplate() {
|
class OverviewFrameTemplate(val model: KModel) : KDocTemplate() {
|
||||||
override fun render() {
|
override fun render() {
|
||||||
// TODO could really do with templates in multi-line strings :)
|
// TODO could really do with templates in multi-line strings :)
|
||||||
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ import std.util.*
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import org.jetbrains.kotlin.model.KModel
|
import org.jetbrains.kotlin.model.KModel
|
||||||
|
|
||||||
class OverviewSummaryTemplate(val model: KModel) : TextTemplate() {
|
class OverviewSummaryTemplate(val model: KModel) : KDocTemplate() {
|
||||||
override fun render() {
|
override fun render() {
|
||||||
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
||||||
<!--NewPage-->
|
<!--NewPage-->
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ import std.util.*
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import org.jetbrains.kotlin.model.KModel
|
import org.jetbrains.kotlin.model.KModel
|
||||||
|
|
||||||
class OverviewTreeTemplate(val model: KModel) : TextTemplate() {
|
class OverviewTreeTemplate(val model: KModel) : KDocTemplate() {
|
||||||
override fun render() {
|
override fun render() {
|
||||||
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
||||||
<!--NewPage-->
|
<!--NewPage-->
|
||||||
|
|||||||
+4
-4
@@ -8,7 +8,7 @@ import java.util.*
|
|||||||
import org.jetbrains.kotlin.model.KModel
|
import org.jetbrains.kotlin.model.KModel
|
||||||
import org.jetbrains.kotlin.model.KPackage
|
import org.jetbrains.kotlin.model.KPackage
|
||||||
|
|
||||||
class PackageFrameTemplate(val model: KModel, val pkg: KPackage) : TextTemplate() {
|
class PackageFrameTemplate(val model: KModel, p: KPackage) : PackageTemplateSupport(p) {
|
||||||
override fun render() {
|
override fun render() {
|
||||||
// TODO could really do with templates in multi-line strings :)
|
// TODO could really do with templates in multi-line strings :)
|
||||||
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
@@ -22,13 +22,13 @@ class PackageFrameTemplate(val model: KModel, val pkg: KPackage) : TextTemplate(
|
|||||||
println("""</TITLE>
|
println("""</TITLE>
|
||||||
|
|
||||||
<META NAME="date" CONTENT="2012-01-09">""")
|
<META NAME="date" CONTENT="2012-01-09">""")
|
||||||
println("<LINK REL =\"stylesheet\" TYPE=\"text/css\" HREF=\"${pkg.nameAsRelativePath}/stylesheet.css\" TITLE=\"Style\">")
|
println("<LINK REL =\"stylesheet\" TYPE=\"text/css\" HREF=\"${pkg.nameAsRelativePath}stylesheet.css\" TITLE=\"Style\">")
|
||||||
println("""
|
println("""
|
||||||
</HEAD>
|
</HEAD>
|
||||||
|
|
||||||
<BODY BGCOLOR="white">
|
<BODY BGCOLOR="white">
|
||||||
<FONT size="+1" CLASS="FrameTitleFont">""")
|
<FONT size="+1" CLASS="FrameTitleFont">""")
|
||||||
println("<A HREF=\"${pkg.nameAsRelativePath}/${pkg.nameAsPath}/package-summary.html\" target=\"classFrame\">${pkg.name}</A></FONT>")
|
println("<A HREF=\"${pkg.nameAsRelativePath}${pkg.nameAsPath}/package-summary.html\" target=\"classFrame\">${pkg.name}</A></FONT>")
|
||||||
|
|
||||||
printClasses("interface", "Interfaces")
|
printClasses("interface", "Interfaces")
|
||||||
printClasses("class", "Classes")
|
printClasses("class", "Classes")
|
||||||
@@ -52,7 +52,7 @@ println("""
|
|||||||
<BR>""")
|
<BR>""")
|
||||||
for (c in classes) {
|
for (c in classes) {
|
||||||
val formatted = if (kind == "interface") "<I>${c.simpleName}</I>" else c.simpleName
|
val formatted = if (kind == "interface") "<I>${c.simpleName}</I>" else c.simpleName
|
||||||
println("<A HREF=\"${c.simpleName}\" title=\"$kind in ${pkg.name}\" target=\"classFrame\">$formatted</A>")
|
println("<A HREF=\"${c.simpleName}.html\" title=\"$kind in ${pkg.name}\" target=\"classFrame\">$formatted</A>")
|
||||||
println("<BR>")
|
println("<BR>")
|
||||||
}
|
}
|
||||||
println("""</TR>
|
println("""</TR>
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ import std.util.*
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import org.jetbrains.kotlin.model.KModel
|
import org.jetbrains.kotlin.model.KModel
|
||||||
|
|
||||||
class PackageListTemplate(val model: KModel) : TextTemplate() {
|
class PackageListTemplate(val model: KModel) : KDocTemplate() {
|
||||||
override fun render() {
|
override fun render() {
|
||||||
for (p in model.packages) {
|
for (p in model.packages) {
|
||||||
println(p.name)
|
println(p.name)
|
||||||
|
|||||||
+20
-20
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.model.KModel
|
|||||||
import org.jetbrains.kotlin.model.KPackage
|
import org.jetbrains.kotlin.model.KPackage
|
||||||
import org.jetbrains.kotlin.model.KClass
|
import org.jetbrains.kotlin.model.KClass
|
||||||
|
|
||||||
class PackageSummaryTemplate(val model: KModel, val pkg: KPackage) : TextTemplate() {
|
class PackageSummaryTemplate(val model: KModel, pkg: KPackage) : PackageTemplateSupport(pkg) {
|
||||||
override fun render() {
|
override fun render() {
|
||||||
// TODO could really do with templates in multi-line strings :)
|
// TODO could really do with templates in multi-line strings :)
|
||||||
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
println("""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
@@ -24,7 +24,7 @@ class PackageSummaryTemplate(val model: KModel, val pkg: KPackage) : TextTemplat
|
|||||||
|
|
||||||
<META NAME="date" CONTENT="2012-01-09">
|
<META NAME="date" CONTENT="2012-01-09">
|
||||||
<META NAME="date" CONTENT="2012-01-09">""")
|
<META NAME="date" CONTENT="2012-01-09">""")
|
||||||
println("<LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\"${pkg.nameAsRelativePath}/stylesheet.css\" TITLE=\"Style\">")
|
println("<LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\"${pkg.nameAsRelativePath}stylesheet.css\" TITLE=\"Style\">")
|
||||||
println("""
|
println("""
|
||||||
<SCRIPT type="text/javascript">
|
<SCRIPT type="text/javascript">
|
||||||
function windowTitle()
|
function windowTitle()
|
||||||
@@ -53,15 +53,15 @@ function windowTitle()
|
|||||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||||
<TR ALIGN="center" VALIGN="top">""")
|
<TR ALIGN="center" VALIGN="top">""")
|
||||||
|
|
||||||
println("<TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}/overview-summary.html\"><FONT CLASS=\"NavBarFont1\"><B>Overview</B></FONT></A> </TD>")
|
println("<TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}overview-summary.html\"><FONT CLASS=\"NavBarFont1\"><B>Overview</B></FONT></A> </TD>")
|
||||||
println("""<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD>
|
println("""<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD>
|
||||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
|
||||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-use.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-use.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
|
||||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>""")
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>""")
|
||||||
|
|
||||||
println("<TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}/deprecated-list.html\"><FONT CLASS=\"NavBarFont1\"><B>Deprecated</B></FONT></A> </TD>")
|
println("<TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}deprecated-list.html\"><FONT CLASS=\"NavBarFont1\"><B>Deprecated</B></FONT></A> </TD>")
|
||||||
println("<TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}/index-all.html\"><FONT CLASS=\"NavBarFont1\"><B>Index</B></FONT></A> </TD>")
|
println("<TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}index-all.html\"><FONT CLASS=\"NavBarFont1\"><B>Index</B></FONT></A> </TD>")
|
||||||
println("<TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}/help-doc.html\"><FONT CLASS=\"NavBarFont1\"><B>Help</B></FONT></A> </TD>")
|
println("<TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"${pkg.nameAsRelativePath}help-doc.html\"><FONT CLASS=\"NavBarFont1\"><B>Help</B></FONT></A> </TD>")
|
||||||
println(""" </TR>
|
println(""" </TR>
|
||||||
</TABLE>
|
</TABLE>
|
||||||
</TD>
|
</TD>
|
||||||
@@ -74,17 +74,17 @@ function windowTitle()
|
|||||||
|
|
||||||
printNextPrevPackages()
|
printNextPrevPackages()
|
||||||
println("""<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">""")
|
println("""<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">""")
|
||||||
println(" <A HREF=\"${pkg.nameAsRelativePath}/index.html?${pkg.nameAsPath}/package-summary.html\" target=\"_top\"><B>FRAMES</B></A> ")
|
println(" <A HREF=\"${pkg.nameAsRelativePath}index.html?${pkg.nameAsPath}/package-summary.html\" target=\"_top\"><B>FRAMES</B></A> ")
|
||||||
println(""" <A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>
|
println(""" <A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>
|
||||||
<SCRIPT type="text/javascript">
|
<SCRIPT type="text/javascript">
|
||||||
<!--
|
<!--
|
||||||
if(window==top) {""")
|
if(window==top) {""")
|
||||||
println(" document.writeln('<A HREF=\"${pkg.nameAsRelativePath}/allclasses-noframe.html\"><B>All Classes</B></A>');")
|
println(" document.writeln('<A HREF=\"${pkg.nameAsRelativePath}allclasses-noframe.html\"><B>All Classes</B></A>');")
|
||||||
println(""" }
|
println(""" }
|
||||||
//-->
|
//-->
|
||||||
</SCRIPT>
|
</SCRIPT>
|
||||||
<NOSCRIPT>""")
|
<NOSCRIPT>""")
|
||||||
println(" <A HREF=\"${pkg.nameAsRelativePath}/allclasses-noframe.html\"><B>All Classes</B></A>")
|
println(" <A HREF=\"${pkg.nameAsRelativePath}allclasses-noframe.html\"><B>All Classes</B></A>")
|
||||||
println("""</NOSCRIPT>
|
println("""</NOSCRIPT>
|
||||||
|
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ function windowTitle()
|
|||||||
println("""
|
println("""
|
||||||
<ul>""")
|
<ul>""")
|
||||||
for (c in list) {
|
for (c in list) {
|
||||||
println(" <li><A HREF=\"${pkg.nameAsRelativePath}/${c.nameAsPath}.html\" title=\"class in ${pkg.name}\"><CODE>${c.simpleName}</CODE></A>")
|
println(" <li><A HREF=\"${pkg.nameAsRelativePath}${c.nameAsPath}.html\" title=\"class in ${pkg.name}\"><CODE>${c.simpleName}</CODE></A>")
|
||||||
}
|
}
|
||||||
println("""
|
println("""
|
||||||
</ul>""")
|
</ul>""")
|
||||||
@@ -167,14 +167,14 @@ function windowTitle()
|
|||||||
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||||
<TR ALIGN="center" VALIGN="top">
|
<TR ALIGN="center" VALIGN="top">
|
||||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="${pkg.nameAsRelativePath}/overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="${pkg.nameAsRelativePath}overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
|
||||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD>
|
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD>
|
||||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
|
||||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-use.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-use.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
|
||||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="${pkg.nameAsRelativePath}/deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="${pkg.nameAsRelativePath}deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="${pkg.nameAsRelativePath}/index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="${pkg.nameAsRelativePath}index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="${pkg.nameAsRelativePath}/help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="${pkg.nameAsRelativePath}help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||||
</TR>
|
</TR>
|
||||||
</TABLE>
|
</TABLE>
|
||||||
</TD>
|
</TD>
|
||||||
@@ -188,17 +188,17 @@ function windowTitle()
|
|||||||
printNextPrevPackages()
|
printNextPrevPackages()
|
||||||
|
|
||||||
println("""<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">""")
|
println("""<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">""")
|
||||||
println(") <A HREF=\"${pkg.nameAsRelativePath}/index.html?${pkg.nameAsPath}/package-summary.html\" target=\"_top\"><B>FRAMES</B></A> ")
|
println(") <A HREF=\"${pkg.nameAsRelativePath}index.html?${pkg.nameAsPath}/package-summary.html\" target=\"_top\"><B>FRAMES</B></A> ")
|
||||||
println(""" <A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>
|
println(""" <A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>
|
||||||
<SCRIPT type="text/javascript">
|
<SCRIPT type="text/javascript">
|
||||||
<!--
|
<!--
|
||||||
if(window==top) {
|
if(window==top) {
|
||||||
document.writeln('<A HREF="${pkg.nameAsRelativePath}/allclasses-noframe.html"><B>All Classes</B></A>');
|
document.writeln('<A HREF="${pkg.nameAsRelativePath}allclasses-noframe.html"><B>All Classes</B></A>');
|
||||||
}
|
}
|
||||||
//-->
|
//-->
|
||||||
</SCRIPT>
|
</SCRIPT>
|
||||||
<NOSCRIPT>
|
<NOSCRIPT>
|
||||||
<A HREF="${pkg.nameAsRelativePath}/allclasses-noframe.html"><B>All Classes</B></A>
|
<A HREF="${pkg.nameAsRelativePath}allclasses-noframe.html"><B>All Classes</B></A>
|
||||||
</NOSCRIPT>
|
</NOSCRIPT>
|
||||||
|
|
||||||
|
|
||||||
@@ -227,7 +227,7 @@ Copyright © 2010-2012. All Rights Reserved.
|
|||||||
|
|
||||||
for (c in classes) {
|
for (c in classes) {
|
||||||
println("""<TR BGCOLOR="white" CLASS="TableRowColor">""")
|
println("""<TR BGCOLOR="white" CLASS="TableRowColor">""")
|
||||||
println("<TD WIDTH=\"15%\"><B><A HREF=\"${pkg.nameAsRelativePath}/${c.nameAsPath}.html\" title=\"$kind in ${pkg.name}\">${c.simpleName}</A></B></TD>")
|
println("<TD WIDTH=\"15%\"><B><A HREF=\"${pkg.nameAsRelativePath}${c.nameAsPath}.html\" title=\"$kind in ${pkg.name}\">${c.simpleName}</A></B></TD>")
|
||||||
println("<TD>${c.description}</TD>")
|
println("<TD>${c.description}</TD>")
|
||||||
println("</TR>")
|
println("</TR>")
|
||||||
}
|
}
|
||||||
@@ -244,11 +244,11 @@ Copyright © 2010-2012. All Rights Reserved.
|
|||||||
println("""<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">""")
|
println("""<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">""")
|
||||||
val prev = model.previous(pkg)
|
val prev = model.previous(pkg)
|
||||||
if (prev != null) {
|
if (prev != null) {
|
||||||
println(" <A HREF=\"${prev.nameAsRelativePath}/${prev.nameAsPath}/package-summary.html\"><B>PREV PACKAGE</B></A> ")
|
println(" <A HREF=\"${prev.nameAsRelativePath}${prev.nameAsPath}/package-summary.html\"><B>PREV PACKAGE</B></A> ")
|
||||||
}
|
}
|
||||||
val next = model.next(pkg)
|
val next = model.next(pkg)
|
||||||
if (next != null) {
|
if (next != null) {
|
||||||
println(" <A HREF=\"${next.nameAsRelativePath}/${next.nameAsPath}/package-summary.html\"><B>NEXT PACKAGE</B></A>")
|
println(" <A HREF=\"${next.nameAsRelativePath}${next.nameAsPath}/package-summary.html\"><B>NEXT PACKAGE</B></A>")
|
||||||
}
|
}
|
||||||
println("""</FONT></TD>""")
|
println("""</FONT></TD>""")
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class KModel(var title: String = "Documentation", var version: String = "TODO")
|
|||||||
|
|
||||||
/* Returns the package for the given name, creating one if its not already been create yet */
|
/* Returns the package for the given name, creating one if its not already been create yet */
|
||||||
fun getPackage(name: String): KPackage {
|
fun getPackage(name: String): KPackage {
|
||||||
return packageMap.getOrPut(name){ KPackage(name) }
|
return packageMap.getOrPut(name){ KPackage(this, name) }
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns the class for the given qualified name, creating one if its not already been created yet */
|
/* Returns the class for the given qualified name, creating one if its not already been created yet */
|
||||||
@@ -32,15 +32,18 @@ class KModel(var title: String = "Documentation", var version: String = "TODO")
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun previous(pkg: KPackage): KPackage? {
|
fun previous(pkg: KPackage): KPackage? {
|
||||||
|
// TODO
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
fun next(pkg: KPackage): KPackage? {
|
fun next(pkg: KPackage): KPackage? {
|
||||||
|
// TODO
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class KPackage(val name: String, var description: String = "", var detailedDescription: String = "") : Comparable<KPackage> {
|
class KPackage(val model: KModel, val name: String, var external: Boolean = false,
|
||||||
|
var description: String = "", var detailedDescription: String = "") : Comparable<KPackage> {
|
||||||
override fun compareTo(other: KPackage): Int = name.compareTo(other.name)
|
override fun compareTo(other: KPackage): Int = name.compareTo(other.name)
|
||||||
|
|
||||||
fun equals(other: KPackage) = name == other.name
|
fun equals(other: KPackage) = name == other.name
|
||||||
@@ -65,7 +68,10 @@ class KPackage(val name: String, var description: String = "", var detailedDescr
|
|||||||
|
|
||||||
/** Returns a relative path like ../.. for each path in the name */
|
/** Returns a relative path like ../.. for each path in the name */
|
||||||
public val nameAsRelativePath: String
|
public val nameAsRelativePath: String
|
||||||
get() = namePaths.map{ ".." }.join("/")
|
get() {
|
||||||
|
val answer = namePaths.map{ ".." }.join("/")
|
||||||
|
return if (answer.length == 0) "" else answer + "/"
|
||||||
|
}
|
||||||
|
|
||||||
// TODO generates java.lang.NoSuchMethodError: std.util.namespace.hashMap(Ljet/TypeInfo;Ljet/TypeInfo;)Ljava/util/HashMap;
|
// TODO generates java.lang.NoSuchMethodError: std.util.namespace.hashMap(Ljet/TypeInfo;Ljet/TypeInfo;)Ljava/util/HashMap;
|
||||||
//val classes = sortedMap<String,KClass>()
|
//val classes = sortedMap<String,KClass>()
|
||||||
@@ -78,7 +84,9 @@ class KPackage(val name: String, var description: String = "", var detailedDescr
|
|||||||
|
|
||||||
/* Returns the class for the given name, creating one if its not already been create yet */
|
/* Returns the class for the given name, creating one if its not already been create yet */
|
||||||
fun getClass(simpleName: String): KClass {
|
fun getClass(simpleName: String): KClass {
|
||||||
return classMap.getOrPut(simpleName){ KClass(this, simpleName) }
|
return classMap.getOrPut(simpleName) {
|
||||||
|
val base = if (simpleName == "Object" && name == "java.lang") null else model.getClass("java.lang.Object")
|
||||||
|
KClass(this, simpleName, base) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun qualifiedName(simpleName: String): String {
|
fun qualifiedName(simpleName: String): String {
|
||||||
@@ -89,13 +97,33 @@ class KPackage(val name: String, var description: String = "", var detailedDescr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun previous(pkg: KClass): KClass? {
|
||||||
|
// TODO
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
fun next(pkg: KClass): KClass? {
|
||||||
|
// TODO
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
fun groupClassMap(): Map<String,List<KClass>> {
|
fun groupClassMap(): Map<String,List<KClass>> {
|
||||||
return classes.groupBy(TreeMap<String,List<KClass>>()){it.group}
|
return classes.groupBy(TreeMap<String,List<KClass>>()){it.group}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class KClass(val kpackage: KPackage, val simpleName: String,
|
class KClass(val pkg: KPackage, val simpleName: String,
|
||||||
var kind: String = "class", var group: String = "Other", var description: String = "") : Comparable<KClass> {
|
var baseClass: KClass? = null,
|
||||||
|
var kind: String = "class", var group: String = "Other",
|
||||||
|
var description: String = "", var detailedDescription: String = "",
|
||||||
|
var annotations: List<KAnnotation> = arrayList<KAnnotation>(),
|
||||||
|
var since: String = "",
|
||||||
|
var authors: List<String> = arrayList<String>(),
|
||||||
|
var methods: List<KMethod> = arrayList<KMethod>(),
|
||||||
|
var nestedClasses: List<KClass> = arrayList<KClass>(),
|
||||||
|
var sourceLine: Int = 2) : Comparable<KClass> {
|
||||||
|
|
||||||
override fun compareTo(other: KClass): Int = name.compareTo(other.name)
|
override fun compareTo(other: KClass): Int = name.compareTo(other.name)
|
||||||
|
|
||||||
fun equals(other: KClass) = name == other.name
|
fun equals(other: KClass) = name == other.name
|
||||||
@@ -109,11 +137,63 @@ class KClass(val kpackage: KPackage, val simpleName: String,
|
|||||||
return $url
|
return $url
|
||||||
}
|
}
|
||||||
|
|
||||||
public val name: String = kpackage.qualifiedName(simpleName)
|
public val name: String = pkg.qualifiedName(simpleName)
|
||||||
public val packageName: String = kpackage.name
|
public val packageName: String = pkg.name
|
||||||
|
|
||||||
/** Returns the name as a directory using '/' instead of '.' */
|
/** Returns the name as a directory using '/' instead of '.' */
|
||||||
public val nameAsPath: String
|
public val nameAsPath: String
|
||||||
get() = name.replace('.', '/')
|
get() = name.replace('.', '/')
|
||||||
|
|
||||||
|
|
||||||
|
fun isAnnotation() = kind == "annotation"
|
||||||
|
fun isInterface() = kind == "interface"
|
||||||
|
}
|
||||||
|
|
||||||
|
class KMethod(val name: String,
|
||||||
|
var returnType: KClass,
|
||||||
|
var description: String = "", var detailedDescription: String = "",
|
||||||
|
var deprecated: Boolean = false,
|
||||||
|
var modifiers: List<String> = arrayList<String>(),
|
||||||
|
var typeParameters: List<KTypeParameter> = arrayList<KTypeParameter>(),
|
||||||
|
var parameters: List<KParameter> = arrayList<KParameter>(),
|
||||||
|
var exceptions: List<KClass> = arrayList<KClass>(),
|
||||||
|
var annotations: List<KAnnotation> = arrayList<KAnnotation>()) : Comparable<KMethod> {
|
||||||
|
// TODO compare other things than just name :)
|
||||||
|
|
||||||
|
override fun compareTo(other: KMethod): Int = name.compareTo(other.name)
|
||||||
|
|
||||||
|
fun equals(other: KMethod) = name == other.name
|
||||||
|
|
||||||
|
fun toString() = "fun ($name)"
|
||||||
|
|
||||||
|
/** TODO generate a link with the argument type names */
|
||||||
|
public val link: String = name
|
||||||
|
|
||||||
|
/** Returns a list of generic type parameter names kinds like "A, I" */
|
||||||
|
public val typeParametersText: String
|
||||||
|
get() = typeParameters.map{ it.name }.join(", ")
|
||||||
|
}
|
||||||
|
|
||||||
|
class KParameter(val name: String,
|
||||||
|
var klass: KClass,
|
||||||
|
var description: String = "", var detailedDescription: String = "") {
|
||||||
|
|
||||||
|
fun toString() = "$name: ${klass.name}"
|
||||||
|
}
|
||||||
|
|
||||||
|
class KTypeParameter(val name: String,
|
||||||
|
var klass: KClass,
|
||||||
|
var extends: List<KClass> = arrayList<KClass>()) {
|
||||||
|
|
||||||
|
fun toString() = if (extends.isEmpty()) name else {
|
||||||
|
"$name extends ${extends.map{it.name}.join(" & ")}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class KAnnotation(var klass: KClass,
|
||||||
|
var description: String = "", var detailedDescription: String = "") {
|
||||||
|
|
||||||
|
// TODO add some parameter values?
|
||||||
|
|
||||||
|
fun toString() = "@$klass.simpleName"
|
||||||
}
|
}
|
||||||
@@ -37,9 +37,14 @@ class ModelTest : TestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun testModelWalk() {
|
fun testModelWalk() {
|
||||||
model.getClass("something.else.Aaa")
|
val a = model.getClass("something.else.Aaa")
|
||||||
model.getClass("something.else.Zzz")
|
val z = model.getClass("something.else.Zzz")
|
||||||
model.getClass("another.Cheese")
|
val c = model.getClass("another.Cheese")
|
||||||
|
|
||||||
|
c.methods.add(KMethod("addFoo", a, "add some foos"))
|
||||||
|
val m1 = KMethod("addZzzz", z, "add some zzz")
|
||||||
|
m1.parameters.add(KParameter("myz", z))
|
||||||
|
c.methods.add(m1)
|
||||||
|
|
||||||
// now lets iterate through the model
|
// now lets iterate through the model
|
||||||
println("Walking the model...")
|
println("Walking the model...")
|
||||||
|
|||||||
Reference in New Issue
Block a user