alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Scala example source code file (CommentFactoryTest.scala)

This example Scala source code file (CommentFactoryTest.scala) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Scala tags/keywords

chain, chain, commentfactory, factory, htmltag, htmltag, monospace, one, one, some, string, text, text, trac

The Scala CommentFactoryTest.scala source code

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))

  def createBody(s: String) =
    parse(s, "", scala.tools.nsc.util.NoPosition).body
}

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")))
  )

  property("Trac #4361 - ^...^") = parse(
      """
/**
 * hello ^world^ */""",
      Chain(List(Text("hello "), Superscript(Text("world"))))
  )

  property("Trac #4361 - single ^ symbol") = parse(
      """
/**
 * <pre>
 * hello ^world
 * </pre>
 *
 */""",
      Chain(List(Text(""), Text("\n"),


                 HtmlTag("<pre>\nhello ^world\n
"))) ) property("Trac #4366 - body") = { val body = factory.createBody( """ /** * <strong>foo has been deprecated and will be removed in a future version. Please call bar instead. */ """ ) body == Body(List(Paragraph(Chain(List( Summary(Chain(List(HtmlTag("<strong>foo has been deprecated and will be removed in a future version. Please call bar instead."), Text("\n"), Text("")))) ))))) } property("Trac #4366 - summary") = { val body = factory.createBody( """ /** * <strong>foo has been deprecated and will be removed in a future version. Please call bar instead. */ """ ) body.summary == Some(Chain(List(HtmlTag("<strong>foo has been deprecated and will be removed in a future version. Please call bar instead."), Text("\n"), Text("")))) } property("Trac #4358 - body") = { factory.createBody( """ /** * Implicit conversion that invokes the <code>expect method on the EasyMock companion object (i.e., the * static <code>expect method in Java class org.easymock.EasyMock). */ """ ) match { case Body(List(Paragraph(Chain(List(Summary(Chain(List(Chain(List( Text("Implicit conversion that invokes the "), HtmlTag("<code>expect"), Text(" method on the "), HtmlTag("<code>EasyMock"), Text(" companion object ("), HtmlTag("<em>i.e."), Text(", the\nstatic "), HtmlTag("<code>expect"), Text(" method in Java class "), HtmlTag("<code>org.easymock.EasyMock"), Text(")") )), Text(".")))), Text("\n")))))) => true case other => { println(other) false } } } }

Other Scala examples (source code examples)

Here is a short list of links related to this Scala CommentFactoryTest.scala source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.