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 5, 2021
1 parent 179c110 commit c7958d5
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 8 deletions.
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
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ object SectionInput {
TokenEditDistance.fromTrees(sections.map(_.source), instrumented)
}

def apply(input: Input, context: MContext): SectionInput = {
def apply(input: Input, context: MContext, mod: Option[Modifier]): SectionInput = {
val source = MdocDialect.scala(input).parse[Source].getOrElse(Source(Nil))
SectionInput(input, source, Modifier.Default())
SectionInput(input, source, mod.getOrElse(Modifier.Default()))
}
}
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): 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, ctx, modifier)
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 @@ -52,6 +52,15 @@ class WorksheetSuite extends BaseSuite {
|""".stripMargin
)

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

checkDecorations(
"lazy",
"""
Expand Down Expand Up @@ -403,11 +412,19 @@ 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 =
modifier match {
case Some(mod) =>
mdoc.evaluateWorksheet(filename, original, mod)
case None =>
mdoc.evaluateWorksheet(filename, original)
}

val input = Input.VirtualFile(options.name, original)
val out = new StringBuilder()
var i = 0
Expand Down

0 comments on commit c7958d5

Please sign in to comment.