From a18c1441c6c9837f152c0d9c898e4d863837bbcb Mon Sep 17 00:00:00 2001 From: michelou Date: Mon, 13 Nov 2006 20:09:12 +0000 Subject: fixed anchors for Java methods and overriden me... fixed anchors for Java methods and overriden methods --- .../scala/tools/nsc/doc/DocGenerator.scala | 42 +++++++++++++++++----- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/src/compiler/scala/tools/nsc/doc/DocGenerator.scala b/src/compiler/scala/tools/nsc/doc/DocGenerator.scala index 98145bbf34..c4b6cedc22 100644 --- a/src/compiler/scala/tools/nsc/doc/DocGenerator.scala +++ b/src/compiler/scala/tools/nsc/doc/DocGenerator.scala @@ -150,10 +150,39 @@ abstract class DocGenerator extends Models { }) } + private val pat = Pattern.compile( + "scala\\.(Byte|Boolean|Char|Double|Float|Int|Long|Short)") + + def docName(sym: Symbol): String = { + def javaParams(paramTypes: List[Type]): String = { + def javaName(pt: Type): String = { + val s = pt.toString + val mat = pat.matcher(s) + if (mat.matches) mat.group(1).toLowerCase + else s.replaceAll("\\$", ".") + } + paramTypes.map(pt => javaName(pt)).mkString("(", ",", ")") + } + def scalaParams(paramTypes: List[Type]): String = { + def scalaName(pt: Type): String = pt.toString.replaceAll(" ", "") + paramTypes.map(pt => scalaName(pt)).mkString("(", ",", ")") + } + /*Utility.escape*/(sym.nameString + + (sym.tpe match { + case MethodType(paramTypes, _) => + if (sym hasFlag Flags.JAVA) javaParams(paramTypes) + else scalaParams(paramTypes) + case PolyType(_, MethodType(paramTypes, _)) => + if (sym hasFlag Flags.JAVA) javaParams(paramTypes) + else scalaParams(paramTypes) + case _ => "" + })) + } + def urlFor(sym: Symbol): String = sym match { case msym: ModuleSymbol => urlFor0(sym, sym) + FILE_EXTENSION_HTML case csym: ClassSymbol => urlFor0(sym, sym) + FILE_EXTENSION_HTML - case _ => urlFor(sym.owner) + "#" + Utility.escape(sym.nameString) + case _ => urlFor(sym.owner) + "#" + docName(sym) } def hasBody = true @@ -308,7 +337,8 @@ abstract class DocGenerator extends Models { def fullHeader(mmbr: HasTree): NodeSeq = Group( { { if (mmbr.isInstanceOf[ImplMod]) NodeSeq.Empty - else + //else + else } }.concat(
@@ -406,13 +436,9 @@ abstract class DocGenerator extends Models { def aref1(sym: Symbol): NodeSeq = { val isJava = sym hasFlag Flags.JAVA if (isJava || (sym.sourceFile eq null)) { - val name = sym.nameString - val args = - if (isJava) "()" // todo: arguments - else "" {name} + href={"#" + docName(sym)} + target={contentFrame}>{sym.nameString} } else aref(urlFor(sym), contentFrame, sym.nameString) -- cgit v1.2.3