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
|
import org.scalacheck._
import org.scalacheck.Prop._
import scala.tools.nsc.Global
import scala.tools.nsc.doc
import scala.tools.nsc.doc.model.comment._
class Factory(val g: Global, val s: doc.Settings)
extends doc.model.ModelFactory(g, s) {
thisFactory: Factory with CommentFactory with doc.model.TreeFactory =>
def strip(c: Comment): Option[Inline] = {
c.body match {
case Body(List(Paragraph(Chain(List(Summary(inner)))))) => Some(inner)
case _ => None
}
}
def parseComment(s: String): Option[Inline] =
strip(parse(s, "", scala.tools.nsc.util.NoPosition))
}
object Test extends Properties("CommentFactory") {
val factory = {
val settings = new doc.Settings((str: String) => {})
val reporter = new scala.tools.nsc.reporters.ConsoleReporter(settings)
val g = new Global(settings, reporter)
(new Factory(g, settings) with CommentFactory with doc.model.TreeFactory)
}
def parse(src: String, dst: Inline) = {
factory.parseComment(src) match {
case Some(inline) =>
inline == dst
case _ =>
false
}
}
property("parse") = parse(
"/** One two three */",
Text("One two three")
)
property("parse") = parse(
"/** One `two` three */",
Chain(List(Text("One "), Monospace("two"), Text(" three")))
)
property("parse") = parse(
"""
/** One two
* three */""",
Text("One two\nthree")
)
property("parse") = parse(
"""
/** One `two`
* three */""",
Chain(List(Text("One "), Monospace("two"), Text("\n"), Text("three")))
)
property("parse") = parse(
"""
/** One `two`
* three */""",
Chain(List(Text("One "), Monospace("two"), Text("\n"), Text(" three")))
)
property("parse") = parse(
"""
/** One
* `two` three */""",
Chain(List(Text("One"), Text("\n"), Monospace("two"), Text(" three")))
)
}
|