Skip to content

Commit

Permalink
Add option to specify modifier in the worksheet API
Browse files Browse the repository at this point in the history
  • Loading branch information
tgodzik committed May 11, 2021
1 parent 7962b62 commit c6807f1
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 9 deletions.
1 change: 0 additions & 1 deletion cli/src/main/scala/mdoc/internal/cli/CliEnrichments.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import scala.meta.Input
import scala.meta.Position
import scala.meta.io.AbsolutePath
import scala.meta.io.RelativePath
import mdoc.internal.cli.Settings
import scala.meta.internal.io.PathIO
import scala.util.control.NonFatal
import coursierapi.Dependency
Expand Down
1 change: 1 addition & 0 deletions mdoc-interfaces/src/main/scala/mdoc/interfaces/Mdoc.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
public abstract class Mdoc {

public abstract EvaluatedWorksheet evaluateWorksheet(String filename, String text);
public abstract EvaluatedWorksheet evaluateWorksheet(String filename, String text, String modifier);
public abstract Mdoc withWorkingDirectory(Path workingDirectory);
public abstract Mdoc withClasspath(List<Path> classpath);
public abstract Mdoc withScalacOptions(List<String> options);
Expand Down
14 changes: 12 additions & 2 deletions mdoc/src/main/scala/mdoc/internal/worksheets/Mdoc.scala
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import scala.meta.inputs.Input
import mdoc.internal.worksheets.Compat._
import mdoc.MainSettings
import coursierapi.Logger
import mdoc.internal.markdown.Modifier

class Mdoc(settings: MainSettings) extends i.Mdoc {

Expand Down Expand Up @@ -46,10 +47,19 @@ class Mdoc(settings: MainSettings) extends i.Mdoc {
}
}

def evaluateWorksheet(filename: String, text: String): EvaluatedWorksheet =
def evaluateWorksheet(filename: String, text: String): i.EvaluatedWorksheet = {
new WorksheetProvider(settings.settings).evaluateWorksheet(
Input.VirtualFile(filename, text),
context()
context(),
modifier = None
)
}

def evaluateWorksheet(filename: String, text: String, modifier: String): i.EvaluatedWorksheet =
new WorksheetProvider(settings.settings).evaluateWorksheet(
Input.VirtualFile(filename, text),
context(),
Modifier(modifier)
)

private def context(): Context = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,10 @@ class WorksheetProvider(settings: Settings) {

def evaluateWorksheet(
input: Input.VirtualFile,
ctx: Context
ctx: Context,
modifier: Option[Modifier]
): EvaluatedWorksheet = {
val sectionInput = SectionInput(input, ctx)
val sectionInput = SectionInput(input, modifier.getOrElse(Modifier.Default()), ctx)
val sectionInputs = List(sectionInput)
val file = InputFile.fromRelativeFilename(input.path, settings)
val instrumented = Instrumenter.instrument(file, sectionInputs, settings, reporter)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,27 @@ class WorksheetSuite extends BaseSuite {
|""".stripMargin
)

checkDiagnostics(
"value-class",
"""|object Foo {
| case class Bar(b: Int) extends AnyVal
|}""".stripMargin,
"",
modifier = Some("reset-object")
)

checkDecorations(
"multi-mods",
"""|object Foo {
| case class Bar(b: Int) extends AnyVal
|}
|
|Foo.Bar(1)
|""".stripMargin,
"",
modifier = Some("reset-object:compile-only")
)

checkDecorations(
"lazy",
"""
Expand Down Expand Up @@ -404,11 +425,12 @@ class WorksheetSuite extends BaseSuite {
options: TestOptions,
original: String,
expected: String,
compat: Map[String, String] = Map.empty
compat: Map[String, String] = Map.empty,
modifier: Option[String] = None
): Unit = {
test(options) {
val filename = options.name + ".scala"
val worksheet = mdoc.evaluateWorksheet(filename, original)
val worksheet = evaluateWorksheet(filename, original, modifier)
val input = Input.VirtualFile(options.name, original)
val out = new StringBuilder()
var i = 0
Expand All @@ -435,11 +457,12 @@ class WorksheetSuite extends BaseSuite {
options: TestOptions,
original: String,
expected: String,
compat: Map[String, String] = Map.empty
compat: Map[String, String] = Map.empty,
modifier: Option[String] = None
): Unit = {
test(options) {
val filename = options.name + ".scala"
val worksheet = mdoc.evaluateWorksheet(filename, original)
val worksheet = evaluateWorksheet(filename, original, modifier)
val statements = worksheet.statements().asScala.sortBy(_.position().startLine())
val input = Input.VirtualFile(options.name, original)
val out = new StringBuilder()
Expand Down Expand Up @@ -468,4 +491,13 @@ class WorksheetSuite extends BaseSuite {
assertNoDiff(obtained, Compat(expected, compat))
}
}

private def evaluateWorksheet(filename: String, original: String, modifier: Option[String]) = {
modifier match {
case Some(mod) =>
mdoc.evaluateWorksheet(filename, original, mod)
case None =>
mdoc.evaluateWorksheet(filename, original)
}
}
}

0 comments on commit c6807f1

Please sign in to comment.