From 1d0c872cf35392923b11dd718e3e5f6de5576ea8 Mon Sep 17 00:00:00 2001 From: Varunram Date: Thu, 25 May 2017 01:02:07 +0530 Subject: [PATCH 1/2] Prevent mismatches on members name md --- .../staticsite/MarkdownLinkVisitor.scala | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/doc-tool/src/dotty/tools/dottydoc/staticsite/MarkdownLinkVisitor.scala b/doc-tool/src/dotty/tools/dottydoc/staticsite/MarkdownLinkVisitor.scala index 5216ee950675..e030ecb2d7b1 100644 --- a/doc-tool/src/dotty/tools/dottydoc/staticsite/MarkdownLinkVisitor.scala +++ b/doc-tool/src/dotty/tools/dottydoc/staticsite/MarkdownLinkVisitor.scala @@ -7,15 +7,28 @@ import com.vladsch.flexmark.util.sequence.CharSubSequence import model.{ Package, NonEntity, Val, Def, TypeAlias } import dottydoc.util.MemberLookup +import dotty.tools.dotc.core.Contexts.Context +import dotty.tools.dotc.core.Decorators._ + object MarkdownLinkVisitor { private val EntityLink = """([^\.]+)(\.[^\.]+)*""".r - def apply(node: Node, docs: Map[String, Package], params: Map[String, AnyRef]): Unit = + def apply(node: Node, docs: Map[String, Package], params: Map[String, AnyRef])(implicit ctx: Context): Unit = (new NodeVisitor( new VisitHandler(classOf[Link], new Visitor[Link] with MemberLookup { override def visit(node: Link): Unit = { val url = node.getUrl - if (url.endsWith(".md")) node.setUrl { - url.subSequence(0, url.lastIndexOf('.')).append(".html") + + if (url.endsWith(".md")) { + if (url.subSequence(0, url.lastIndexOf('.')).indexOf("/") <0) { + val method = url.subSequence(0, url.lastIndexOf('.')).toString.toTypeName + if (ctx.getClassIfDefined(method).exists) node.setUrl{ + url.subSequence(0, url.lastIndexOf('.')).append(".html") + } else { + ctx.error(s"""Ambiguous reference to "$url"""") + } + } else node.setUrl{ + url.subSequence(0, url.lastIndexOf('.')).append(".html") + } } else if (EntityLink.unapplySeq(url.toString).isDefined) { lookup(NonEntity, docs, url.toString).foreach { ent => From 3716a96fd3979cc62c4c7037a824aabe7bd376e8 Mon Sep 17 00:00:00 2001 From: Varunram Ganesh Date: Tue, 30 May 2017 16:33:55 +0530 Subject: [PATCH 2/2] Minor fixes in spacing and indentation --- .../tools/dottydoc/staticsite/MarkdownLinkVisitor.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc-tool/src/dotty/tools/dottydoc/staticsite/MarkdownLinkVisitor.scala b/doc-tool/src/dotty/tools/dottydoc/staticsite/MarkdownLinkVisitor.scala index e030ecb2d7b1..8b3958766a75 100644 --- a/doc-tool/src/dotty/tools/dottydoc/staticsite/MarkdownLinkVisitor.scala +++ b/doc-tool/src/dotty/tools/dottydoc/staticsite/MarkdownLinkVisitor.scala @@ -19,14 +19,14 @@ object MarkdownLinkVisitor { val url = node.getUrl if (url.endsWith(".md")) { - if (url.subSequence(0, url.lastIndexOf('.')).indexOf("/") <0) { + if (url.subSequence(0, url.lastIndexOf('.')).indexOf("/") < 0) { val method = url.subSequence(0, url.lastIndexOf('.')).toString.toTypeName - if (ctx.getClassIfDefined(method).exists) node.setUrl{ + if (ctx.getClassIfDefined(method).exists) node.setUrl { url.subSequence(0, url.lastIndexOf('.')).append(".html") } else { ctx.error(s"""Ambiguous reference to "$url"""") } - } else node.setUrl{ + } else node.setUrl { url.subSequence(0, url.lastIndexOf('.')).append(".html") } }