scalasbtscaladoc

How do I link variables inside another object in scaladocs?


To link another class, I can use [[package.Classname]]. Linking functions defined by def works as well, but trying to link variables doesn't work.

What I've tried:

object Foo {

  val BAR = 0
}

object Example {

  /**
  * Does the thing with [[Foo.BAR]]
  */
  def doTheThing(): Unit = {

  }
}

I've also tried [[Foo#BAR]] (from another post) instead of [[Foo.BAR]], which fails as well.

What's the proper way to link variables in scaladoc?


Solution

  • The right way to go is what you have already tried:

    /**
    * Does the thing with [[Foo.BAR]]
    */
    

    Please note that if this is just an example to a more complicated scenario, you need to include the whole package path of Foo.BAR. For example, if Foo is under:

    package a.b.c.d
    

    Then you need to do:

    /**
    * Does the thing with [[a.b.c.d.Foo.BAR]]
    */
    

    You can find in the scaladocs docs:

    Create links to referenced Scala Library classes using the square-bracket syntax, e.g. [[scala.Option]]

    For more information you can read SCALADOC FOR LIBRARY AUTHORS

    You can see here and example how the akka library is using it.