summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKato Kazuyoshi <kato.kazuyoshi@gmail.com>2011-04-15 16:12:22 +0000
committerKato Kazuyoshi <kato.kazuyoshi@gmail.com>2011-04-15 16:12:22 +0000
commited52bec270e9ac659638f10c05d1d0efedf4c5cc (patch)
treeb1836ad9cac670bbab41fecbe6a15f9f43293768
parent3c8bc3ab731206f93ad8428b11276237d1397a08 (diff)
downloadscala-ed52bec270e9ac659638f10c05d1d0efedf4c5cc.tar.gz
scala-ed52bec270e9ac659638f10c05d1d0efedf4c5cc.tar.bz2
scala-ed52bec270e9ac659638f10c05d1d0efedf4c5cc.zip
[scaladoc] Strike-through for deprecated symbol...
[scaladoc] Strike-through for deprecated symbols on the reference index. Closes #4471. Review by dubochet.
-rw-r--r--src/compiler/scala/tools/nsc/doc/Index.scala4
-rwxr-xr-xsrc/compiler/scala/tools/nsc/doc/html/page/ReferenceIndex.scala42
-rwxr-xr-xsrc/compiler/scala/tools/nsc/doc/model/IndexModelFactory.scala17
-rw-r--r--test/scaladoc/resources/Trac4471.scala9
-rw-r--r--test/scaladoc/scala/html/HtmlFactoryTest.scala32
5 files changed, 80 insertions, 24 deletions
diff --git a/src/compiler/scala/tools/nsc/doc/Index.scala b/src/compiler/scala/tools/nsc/doc/Index.scala
index e845f8e909..ce44291ade 100644
--- a/src/compiler/scala/tools/nsc/doc/Index.scala
+++ b/src/compiler/scala/tools/nsc/doc/Index.scala
@@ -5,8 +5,8 @@ import scala.collection._
trait Index {
- type SymbolMap = SortedMap[String, SortedSet[model.TemplateEntity]]
+ type SymbolMap = SortedMap[String, SortedSet[model.MemberEntity]]
def firstLetterIndex: Map[Char, SymbolMap]
-} \ No newline at end of file
+}
diff --git a/src/compiler/scala/tools/nsc/doc/html/page/ReferenceIndex.scala b/src/compiler/scala/tools/nsc/doc/html/page/ReferenceIndex.scala
index 25e166a782..3e57f260c3 100755
--- a/src/compiler/scala/tools/nsc/doc/html/page/ReferenceIndex.scala
+++ b/src/compiler/scala/tools/nsc/doc/html/page/ReferenceIndex.scala
@@ -7,7 +7,7 @@ package scala.tools.nsc
package doc
package html
package page
-
+import doc.model._
class ReferenceIndex(letter: Char, index: doc.Index, universe: Universe) extends HtmlPage {
@@ -25,18 +25,34 @@ class ReferenceIndex(letter: Char, index: doc.Index, universe: Universe) extends
<script type="text/javascript" src={ relativeLinkTo{List("jquery.js", "lib")} }></script>
</xml:group>
+
+ private def entry(name: String, methods: Iterable[MemberEntity]) = {
+ val occurrences = methods.map(method => {
+ val html = templateToHtml(method.inDefinitionTemplates.head)
+ if (method.deprecation.isDefined) {
+ <strike>{ html }</strike>
+ } else {
+ html
+ }
+ })
+
+ <div class="entry">
+ <div class="name">{
+ if (methods.find { ! _.deprecation.isDefined } != None)
+ name
+ else
+ <strike>{ name }</strike>
+ }</div>
+ <div class="occurrences">{
+ for (owner <- occurrences) yield owner ++ xml.Text(" ")
+ }</div>
+ </div>
+ }
+
def body =
- <body>
- { for(groups <- index.firstLetterIndex(letter)) yield {
- <div class="entry">
- <div class="name">{ groups._1 }</div>
- <div class="occurrences">
- { for(owner <- groups._2.view) yield {
- templateToHtml(owner) ++ xml.Text(" ")
- } }
- </div>
- </div>
- } }
- </body>
+ <body>{
+ for(groups <- index.firstLetterIndex(letter)) yield
+ entry(groups._1, groups._2.view)
+ }</body>
}
diff --git a/src/compiler/scala/tools/nsc/doc/model/IndexModelFactory.scala b/src/compiler/scala/tools/nsc/doc/model/IndexModelFactory.scala
index 6c599e1a88..3d3d3d7876 100755
--- a/src/compiler/scala/tools/nsc/doc/model/IndexModelFactory.scala
+++ b/src/compiler/scala/tools/nsc/doc/model/IndexModelFactory.scala
@@ -18,7 +18,7 @@ object IndexModelFactory {
val result = new mutable.HashMap[Char,SymbolMap] {
/* Owner template ordering */
- implicit def orderingSet = math.Ordering.String.on { x: TemplateEntity => x.name.toLowerCase }
+ implicit def orderingSet = math.Ordering.String.on { x: MemberEntity => x.name.toLowerCase }
/* symbol name ordering */
implicit def orderingMap = math.Ordering.String.on { x: String => x.toLowerCase }
@@ -27,14 +27,13 @@ object IndexModelFactory {
val ch = d.name.head.toLower
if(ch.isLetterOrDigit) ch else '#'
}
- this(firstLetter) =
- if(this.contains(firstLetter)) {
- val letter = this(firstLetter)
- val value = this(firstLetter).get(d.name).getOrElse(SortedSet.empty[TemplateEntity]) + d.inDefinitionTemplates.head
- letter + ((d.name, value))
- } else {
- immutable.SortedMap( (d.name, SortedSet(d.inDefinitionTemplates.head)) )
+ val letter = this.get(firstLetter).getOrElse {
+ immutable.SortedMap[String, SortedSet[MemberEntity]]()
}
+ val members = letter.get(d.name).getOrElse {
+ SortedSet.empty[MemberEntity](Ordering.by { _.toString })
+ } + d
+ this(firstLetter) = letter + (d.name -> members)
}
}
@@ -63,4 +62,4 @@ object IndexModelFactory {
}
-} \ No newline at end of file
+}
diff --git a/test/scaladoc/resources/Trac4471.scala b/test/scaladoc/resources/Trac4471.scala
new file mode 100644
index 0000000000..2a22887c0d
--- /dev/null
+++ b/test/scaladoc/resources/Trac4471.scala
@@ -0,0 +1,9 @@
+class A {
+ @deprecated def foo = 123
+ @deprecated def bar = 456
+}
+
+class B {
+ def foo = 123
+ @deprecated def bar = 456
+}
diff --git a/test/scaladoc/scala/html/HtmlFactoryTest.scala b/test/scaladoc/scala/html/HtmlFactoryTest.scala
index 15f5249c90..cb31df3fb2 100644
--- a/test/scaladoc/scala/html/HtmlFactoryTest.scala
+++ b/test/scaladoc/scala/html/HtmlFactoryTest.scala
@@ -24,6 +24,7 @@ object Test extends Properties("HtmlFactory") {
import scala.tools.nsc.doc.{DocFactory, Settings}
import scala.tools.nsc.doc.model.IndexModelFactory
import scala.tools.nsc.doc.html.HtmlFactory
+ import scala.tools.nsc.doc.html.page.ReferenceIndex
def getClasspath = {
// these things can be tricky
@@ -59,6 +60,23 @@ object Test extends Properties("HtmlFactory") {
result
}
+ def createReferenceIndex(basename: String) = {
+ createFactory.makeUniverse(List("test/scaladoc/resources/"+basename)) match {
+ case Some(universe) => {
+ val index = IndexModelFactory.makeIndex(universe)
+ val pages = index.firstLetterIndex.map({
+ case (key, value) => {
+ val page = new ReferenceIndex(key, index, universe)
+ page.absoluteLinkTo(page.path) -> page.body
+ }
+ })
+ Some(pages)
+ }
+ case _ =>
+ None
+ }
+ }
+
def createTemplate(scala: String) = {
val html = scala.stripSuffix(".scala") + ".html"
createTemplates(scala)(html)
@@ -274,4 +292,18 @@ object Test extends Properties("HtmlFactory") {
case _ => false
}
}
+
+ property("Trac #4471") = {
+ createReferenceIndex("Trac4471.scala") match {
+ case Some(pages) =>
+ (pages.get("index/index-f.html") match {
+ case Some(node) => node.toString.contains(">A</a></strike>")
+ case _ => false
+ }) && (pages.get("index/index-b.html") match {
+ case Some(node) => node.toString.contains(">bar</strike>")
+ case _ => false
+ })
+ case _ => false
+ }
+ }
}