From 6f70a9f61c3e4e540dd4a6d1afebe3578501a8dd Mon Sep 17 00:00:00 2001 From: Gilles Dubochet Date: Thu, 26 Nov 2009 14:13:15 +0000 Subject: Fixed some Scaladoc issues: dangerous character... Fixed some Scaladoc issues: dangerous characters in file names are encoded, each owner template is a link, type bounds are printed as "<:" and ">:". --- src/compiler/scala/tools/nsc/doc/TODO.txt | 19 ------------------- src/compiler/scala/tools/nsc/doc/html/HtmlPage.scala | 18 ++++++++++++------ .../scala/tools/nsc/doc/html/page/Template.scala | 12 +++++++++--- 3 files changed, 21 insertions(+), 28 deletions(-) delete mode 100644 src/compiler/scala/tools/nsc/doc/TODO.txt diff --git a/src/compiler/scala/tools/nsc/doc/TODO.txt b/src/compiler/scala/tools/nsc/doc/TODO.txt deleted file mode 100644 index dbdca88eb5..0000000000 --- a/src/compiler/scala/tools/nsc/doc/TODO.txt +++ /dev/null @@ -1,19 +0,0 @@ -= TODO in Scaladoc = - -== Model extractor == - - - -== Parser == - - * Report more than one error per Scaladoc comment. This is caused by the reporter being used, and the fact that all errors are positioned on the documented symbol. - * Maintain position information, and use it in error messages (currently all positions are on symbol being documented) - * Parse wiki list syntax - * Parse wiki table syntax - * Parse URL links - * Parse symbol (class or method) links - -== HTML generator == - - - \ No newline at end of file diff --git a/src/compiler/scala/tools/nsc/doc/html/HtmlPage.scala b/src/compiler/scala/tools/nsc/doc/html/HtmlPage.scala index 8773c0f2c0..48073f8e59 100644 --- a/src/compiler/scala/tools/nsc/doc/html/HtmlPage.scala +++ b/src/compiler/scala/tools/nsc/doc/html/HtmlPage.scala @@ -10,9 +10,11 @@ package html import model._ import comment._ -import java.io.File -import scala.xml.dtd.{DocType, PublicID} import xml.{Unparsed, XML, NodeSeq} +import xml.dtd.{DocType, PublicID} +import scala.collection._ +import scala.util.NameTransformer +import java.io.File /** An html page that is part of a Scaladoc site. * @author David Bernard @@ -37,7 +39,7 @@ abstract class HtmlPage { thisPage => * also defined by the generator. * @param generator The generator that is writing this page. */ def writeFor(site: SiteFactory): Unit = { - val pageFile = new File(site.siteRoot, thisPage.path.reverse.mkString("/")) + val pageFile = new File(site.siteRoot, absoluteLinkTo(thisPage.path)) val pageFolder = pageFile.getParentFile if (!pageFolder.exists) pageFolder.mkdirs() val doctype = @@ -56,16 +58,16 @@ abstract class HtmlPage { thisPage => } def templateToPath(tpl: TemplateEntity): List[String] = { + def doName(tpl: TemplateEntity): String = + NameTransformer.encode(tpl.name) + (if (tpl.isObject) "$" else "") def downPacks(pack: Package): List[String] = - if (pack.isRootPackage) Nil else (pack.name :: downPacks(pack.inTemplate)) + if (pack.isRootPackage) Nil else (doName(pack) :: downPacks(pack.inTemplate)) def downInner(nme: String, tpl: TemplateEntity): (String, Package) = { tpl.inTemplate match { case inPkg: Package => (nme + ".html", inPkg) case inTpl => downInner(doName(inTpl) + "$" + nme, inTpl) } } - def doName(tpl: TemplateEntity): String = - tpl.name + (if (tpl.isObject) "$" else "") val (file, pack) = tpl match { case p: Package => ("package.html", p) @@ -97,6 +99,10 @@ abstract class HtmlPage { thisPage => relativize(thisPage.path.reverse, destPath.reverse).mkString("/") } + def absoluteLinkTo(destPath: List[String]): String = { + destPath.reverse.mkString("/") + } + /** Transforms an optional comment into an styled HTML tree representing its body if it is defined, or into an empty * node sequence if it is not. */ def commentToHtml(comment: Option[Comment]): NodeSeq = diff --git a/src/compiler/scala/tools/nsc/doc/html/page/Template.scala b/src/compiler/scala/tools/nsc/doc/html/page/Template.scala index 8dd46952da..47f2d4abed 100644 --- a/src/compiler/scala/tools/nsc/doc/html/page/Template.scala +++ b/src/compiler/scala/tools/nsc/doc/html/page/Template.scala @@ -42,8 +42,14 @@ class Template(tpl: DocTemplateEntity) extends HtmlPage { val body = - { if (tpl.isRootPackage || tpl.inTemplate.isRootPackage) NodeSeq.Empty - else

{ tpl.inTemplate.qualifiedName }

+ { def ownerLinks(otl: DocTemplateEntity): NodeSeq = + if (otl.inTemplate.isRootPackage) + { otl.name } + else ownerLinks(otl.inTemplate) ++ .{ otl.name } + if (tpl.isRootPackage || tpl.inTemplate.isRootPackage) + NodeSeq.Empty + else +

{ ownerLinks(tpl.inTemplate) }

}
@@ -136,7 +142,7 @@ class Template(tpl: DocTemplateEntity) extends HtmlPage { case None => "" case Some(tpe) => pre + typeToHtml(tpe) } - bound0(hi, " ⊲ ") + bound0(lo, " ⊳ ") + bound0(hi, " <: ") + bound0(lo, " >: ") } /** name, tparams, params, result */ -- cgit v1.2.3