summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/doc/model/comment/Comment.scala
blob: e2841e0db1805a2df99365fd5dadf78e9cfbc379 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/* NSC -- new Scala compiler -- Copyright 2007-2010 LAMP/EPFL */

package scala.tools.nsc
package doc
package model
package comment

import scala.collection._

/** A Scaladoc comment and all its tags.
  *
  * '''Note:''' the only instantiation site of this class is in [[CommentFactory]].
  *
  * @author Gilles Dubochet
  * @author Manohar Jonnalagedda */
abstract class Comment {

  /** The main body of the comment that describes what the entity does and is.  */
  def body: Body

  /** A shorter version of the body. Usually, this is the first sentence of the body. */
  def short: Inline = body.summary getOrElse Text("")

  /** A list of authors. The empty list is used when no author is defined. */
  def authors: List[Body]

  /** A list of other resources to see, including links to other entities or to external documentation. The empty list
    * is used when no other resource is mentionned. */
  def see: List[Body]

  /** A description of the result of the entity. Typically, this provides additional information on the domain of the
    * result, contractual post-conditions, etc. */
  def result: Option[Body]

  /** A map of exceptions that the entity can throw when accessed, and a description of what they mean. */
  def throws: Map[String, Body]

  /** A map of value parameters, and a description of what they are. Typically, this provides additional information on
    * the domain of the parameters, contractual pre-conditions, etc. */
  def valueParams: Map[String, Body]

  /** A map of type parameters, and a description of what they are. Typically, this provides additional information on
    * the domain of the parameters. */
  def typeParams: Map[String, Body]

  /** The version number of the entity. There is no formatting or further meaning attached to this value. */
  def version: Option[Body]

  /** A version number of a containing entity where this member-entity was introduced. */
  def since: Option[Body]

  /** An annotation as to expected changes on this entity. */
  def todo: List[Body]

  /** Whether the entity is deprecated. Using the "@deprecated" Scala attribute is prefereable to using this Scaladoc
    * tag. */
  def deprecated: Option[Body]

  /** An additional note concerning the contract of the entity. */
  def note: List[Body]

  /** A usage example related to the entity. */
  def example: List[Body]

  /** The comment as it appears in the source text. */
  def source: Option[String]

  /** A description for the primary constructor */
  def constructor: Option[Body]

  override def toString =
    body.toString + "\n" +
    (authors map ("@author " + _.toString)).mkString("\n") +
    (result map ("@return " + _.toString)).mkString("\n") +
    (version map ("@version " + _.toString)).mkString

}