junit
junit
diff --git a/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/PackageTemplateSupport.kt b/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/PackageTemplateSupport.kt
index b0170dd734c..1224d555fc0 100644
--- a/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/PackageTemplateSupport.kt
+++ b/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/templates/PackageTemplateSupport.kt
@@ -63,9 +63,15 @@ abstract class PackageTemplateSupport(open val pkg: KPackage) : KDocTemplate() {
print("""${function.name}""")
printParameters(function)
println("""""")
- println("""""")
- println(""" """)
- println(""" ${deprecated} ${function.detailedDescription} | """)
+ println("")
+ if (true) {
+ val detail = function.detailedDescription
+ println("""${detail}""")
+ } else {
+ println("""
""")
+ println(""" ${deprecated} ${function.detailedDescription}""")
+ }
+ println("""""")
println("""""")
}
diff --git a/kdoc/src/main/kotlin/org/jetbrains/kotlin/model/KotlinModel.kt b/kdoc/src/main/kotlin/org/jetbrains/kotlin/model/KotlinModel.kt
index c7808e5e4ff..2f90ff67d32 100644
--- a/kdoc/src/main/kotlin/org/jetbrains/kotlin/model/KotlinModel.kt
+++ b/kdoc/src/main/kotlin/org/jetbrains/kotlin/model/KotlinModel.kt
@@ -21,6 +21,14 @@ import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor
import org.jetbrains.jet.lang.psi.JetFile
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor
+import org.pegdown.PegDownProcessor
+import org.pegdown.LinkRenderer
+import org.pegdown.ast.WikiLinkNode
+import org.pegdown.LinkRenderer.Rendering
+import org.pegdown.ast.RefLinkNode
+import org.pegdown.ast.AutoLinkNode
+import org.pegdown.ast.ExpLinkNode
+import org.pegdown.Extensions
fun containerName(descriptor: DeclarationDescriptor): String = qualifiedName(descriptor.getContainingDeclaration())
@@ -132,6 +140,8 @@ class KModel(var context: BindingContext, var title: String = "Documentation", v
public val classes: Collection
get() = packages.flatMap{ it.classes }
+ public var markdownProcessor: PegDownProcessor = PegDownProcessor(Extensions.ALL)
+
/** Loads the model from the given set of source files */
fun load(sources: List): Unit {
val allNamespaces = HashSet()
@@ -317,8 +327,8 @@ class KModel(var context: BindingContext, var title: String = "Documentation", v
}
buffer.append(text)
}
- // TODO convert any macros or wiki text!
- return buffer.toString() ?: ""
+ val linkRenderer = CustomLinkRenderer(descriptor)
+ return wikiConvert(buffer.toString() ?: "", linkRenderer)
} else {
return text
}
@@ -326,6 +336,9 @@ class KModel(var context: BindingContext, var title: String = "Documentation", v
return ""
}
+ fun wikiConvert(text: String, linkRenderer: LinkRenderer): String {
+ return markdownProcessor.markdownToHtml(text, linkRenderer).sure()
+ }
fun getType(aType: JetType?): KType? {
if (aType != null) {
@@ -361,6 +374,30 @@ class KModel(var context: BindingContext, var title: String = "Documentation", v
}
}
+class CustomLinkRenderer(descriptor: DeclarationDescriptor) : LinkRenderer() {
+
+ override fun render(node : WikiLinkNode?) : Rendering? {
+ println("LinkRenderer.render(WikiLinkNode): $node")
+ // TODO translate the wiki link to a Class/function/property/extensionFunction etc
+ return super.render(node)
+ }
+
+ override fun render(node : RefLinkNode?, url : String?, title : String?, text : String?) : Rendering? {
+ // println("LinkRenderer.render(RefLinkNode): $node url: $url title: $title text: $text")
+ return super.render(node, url, title, text)
+ }
+
+ override fun render(node : AutoLinkNode?) : Rendering? {
+ // println("LinkRenderer.render(AutoLinkNode): $node")
+ return super.render(node)
+ }
+
+ override fun render(node : ExpLinkNode?, text : String?) : Rendering? {
+ // println("LinkRenderer.render(ExpLinkNode): $node text: $text")
+ return super.render(node, text)
+ }
+}
+
abstract class KAnnotated {
public open var description: String = ""
diff --git a/kdoc/src/test/kotlin/test/kotlin/template/PegdownTest.kt b/kdoc/src/test/kotlin/test/kotlin/template/PegdownTest.kt
new file mode 100644
index 00000000000..0cc52610617
--- /dev/null
+++ b/kdoc/src/test/kotlin/test/kotlin/template/PegdownTest.kt
@@ -0,0 +1,54 @@
+package test.pegdown
+
+import kotlin.*
+import kotlin.util.*
+import kotlin.test.*
+
+import junit.framework.TestCase
+import org.pegdown.*
+import org.pegdown.ast.*
+import org.pegdown.LinkRenderer.Rendering
+
+class PegdownTest() : TestCase() {
+ var markdownProcessor = PegDownProcessor(Extensions.ALL)
+ var linkRenderer = CustomLinkRenderer()
+
+ fun testPegDown() {
+ val markups = arrayList(
+ "hello **there **",
+ "a [[WikiLink]] blah",
+ "a [[WikiLink someText]] blah",
+ "a [[SomeClass.property]] blah",
+ "a [[SomeClass.method()]] blah",
+ "a [Link](somewhere) blah")
+
+ for (text in markups) {
+ val answer = markdownProcessor.markdownToHtml(text, linkRenderer).sure()
+ println("$text = $answer")
+ }
+ }
+}
+
+
+class CustomLinkRenderer() : LinkRenderer() {
+
+ override fun render(node : WikiLinkNode?) : Rendering? {
+ println("LinkRenderer.render(WikiLinkNode): $node")
+ return super.render(node)
+ }
+
+ override fun render(node : RefLinkNode?, url : String?, title : String?, text : String?) : Rendering? {
+ println("LinkRenderer.render(RefLinkNode): $node url: $url title: $title text: $text")
+ return super.render(node, url, title, text)
+ }
+
+ override fun render(node : AutoLinkNode?) : Rendering? {
+ println("LinkRenderer.render(AutoLinkNode): $node")
+ return super.render(node)
+ }
+
+ override fun render(node : ExpLinkNode?, text : String?) : Rendering? {
+ println("LinkRenderer.render(ExpLinkNode): $node text: $text")
+ return super.render(node, text)
+ }
+}
diff --git a/runtests/runtests.iml b/runtests/runtests.iml
index 6676eb47c23..d3512eba98c 100644
--- a/runtests/runtests.iml
+++ b/runtests/runtests.iml
@@ -11,6 +11,7 @@
+
diff --git a/runtests/test/stdlib/testall/PegdownAllTest.java b/runtests/test/stdlib/testall/PegdownAllTest.java
new file mode 100644
index 00000000000..338ae434fd8
--- /dev/null
+++ b/runtests/test/stdlib/testall/PegdownAllTest.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2010-2012 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package stdlib.testall;
+
+import junit.framework.TestSuite;
+import test.pegdown.*;
+
+/**
+ */
+public class PegdownAllTest {
+ public static TestSuite suite() {
+ return new TestSuite(PegdownTest.class);
+ }
+}
diff --git a/stdlib/ktSrc/JavaIterablesSpecial.kt b/stdlib/ktSrc/JavaIterablesSpecial.kt
index 6edbb82e0e4..266593b150c 100644
--- a/stdlib/ktSrc/JavaIterablesSpecial.kt
+++ b/stdlib/ktSrc/JavaIterablesSpecial.kt
@@ -9,7 +9,7 @@ import java.util.Iterator
/**
* Count the number of elements in collection.
*
- * If base collection implements Collection interface method Collection#size() will be used.
+ * If base collection implements [[Collection]] interface method [[Collection.size()]] will be used.
* Otherwise, this method determines the count by iterating through the all items.
*/
fun java.lang.Iterable.count() : Int {