Skip to content

Commit

Permalink
RunnerSettings: rename from ScalafmtRunner
Browse files Browse the repository at this point in the history
ScalafmtRunner is also a base class in cli package, let's disambiguate.
  • Loading branch information
kitbellew committed Feb 21, 2025
1 parent 4c8d922 commit c619f6c
Show file tree
Hide file tree
Showing 10 changed files with 39 additions and 66 deletions.
Original file line number Diff line number Diff line change
@@ -1,16 +1,9 @@
package org.scalafmt.cli

import org.scalafmt.config.ConfParsed
import org.scalafmt.config.ScalafmtConfig
import org.scalafmt.config.ScalafmtConfigException
import org.scalafmt.sysops.AbsoluteFile
import org.scalafmt.sysops.GitOps
import org.scalafmt.sysops.OsSpecific
import org.scalafmt.sysops.PlatformFileOps

import java.io.InputStream
import java.io.PrintStream
import java.io.PrintWriter
import org.scalafmt.config._
import org.scalafmt.sysops._

import java.io._
import java.nio.file.Path

import scala.io.Codec
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
package org.scalafmt.cli

import org.scalafmt.Error
import org.scalafmt.Formatted
import org.scalafmt.Scalafmt
import org.scalafmt.Versions
import org.scalafmt.config.ProjectFiles
import org.scalafmt.config.ScalafmtConfig
import org.scalafmt.config.ScalafmtConfigException
import org.scalafmt._
import org.scalafmt.config._

import scala.meta.parsers.ParseException
import scala.meta.tokenizers.TokenizeException
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import metaconfig._
* Are we formatting a scala.meta.{Source,Stat,Case,...}? For more details,
* see members of [[scala.meta.parsers]].
*/
case class ScalafmtRunner(
case class RunnerSettings(
debug: Boolean = false,
private val completeCallback: FormatEvent.CompleteFormat => Unit = _ => (),
private val eventCallback: FormatEvent => Unit = null,
Expand All @@ -43,23 +43,19 @@ case class ScalafmtRunner(
private[scalafmt] def getParser = parser.parse

@inline
def withDialect(dialect: sourcecode.Text[Dialect]): ScalafmtRunner =
withDialect(NamedDialect(dialect))

@inline
private[scalafmt] def withDialect(dialect: NamedDialect): ScalafmtRunner =
private[scalafmt] def withDialect(dialect: NamedDialect) =
copy(dialect = dialect)

@inline
private[scalafmt] def withParser(parser: ScalafmtParser): ScalafmtRunner =
private[scalafmt] def withParser(parser: ScalafmtParser) =
copy(parser = parser)

private[scalafmt] def forCodeBlock: ScalafmtRunner =
private[scalafmt] def forCodeBlock =
copy(debug = false, eventCallback = null, parser = ScalafmtParser.Source)

private[scalafmt] def withCompleteCallback(
cb: FormatEvent.CompleteFormat => Unit,
): ScalafmtRunner = copy(completeCallback = cb)
) = copy(completeCallback = cb)

def event(evt: FormatEvent.CompleteFormat): Unit = completeCallback(evt)

Expand All @@ -72,28 +68,27 @@ case class ScalafmtRunner(
@inline
def isDefaultDialect = dialect.name == NamedDialect.defaultName

private[scalafmt] def conservative: ScalafmtRunner =
copy(optimizer = optimizer.conservative)
private[scalafmt] def conservative = copy(optimizer = optimizer.conservative)

private[scalafmt] def getMaxStateVisits: Int = maxStateVisits
.getOrElse(1000000)

}

object ScalafmtRunner {
implicit lazy val surface: generic.Surface[ScalafmtRunner] =
object RunnerSettings {
implicit lazy val surface: generic.Surface[RunnerSettings] =
generic.deriveSurface

implicit def formatEventEncoder[A <: FormatEvent]: ConfEncoder[A => Unit] =
ConfEncoder.StringEncoder.contramap(_ => "<FormatEvent => Unit>")

/** The default runner formats a compilation unit and listens to no events.
*/
val default = ScalafmtRunner()
val default = RunnerSettings()

val sbt = default.withDialect(meta.dialects.Sbt)
val sbt = default.withDialect(NamedDialect(meta.dialects.Sbt))

implicit val encoder: ConfEncoder[ScalafmtRunner] = generic.deriveEncoder
implicit val encoder: ConfEncoder[RunnerSettings] = generic.deriveEncoder

private[config] def overrideDialect[T: ClassTag](
d: Dialect,
Expand All @@ -106,7 +101,7 @@ object ScalafmtRunner {
DialectMacro.dialectMap(methodName)(d, v)
}

implicit val decoder: ConfDecoderEx[ScalafmtRunner] = generic
implicit val decoder: ConfDecoderEx[RunnerSettings] = generic
.deriveDecoderEx(default).noTypos.flatMap { runner =>
val overrides = runner.dialectOverride.values
if (overrides.isEmpty) Configured.Ok(runner)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ case class ScalafmtConfig(
lineEndings: Option[LineEndings] = None,
rewrite: RewriteSettings = RewriteSettings.default,
newlines: Newlines = Newlines(),
runner: ScalafmtRunner = ScalafmtRunner.default,
runner: RunnerSettings = RunnerSettings.default,
assumeStandardLibraryStripMargin: Boolean = false,
danglingParentheses: DanglingParentheses = DanglingParentheses.default,
verticalMultiline: VerticalMultiline = VerticalMultiline(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -392,15 +392,15 @@ object BestFirstSearch {

class StateStats private (
tokens: FormatTokens,
runner: ScalafmtRunner,
runner: RunnerSettings,
pruneSlowStates: ScalafmtOptimizer.PruneSlowStates,
) {
var explored = 0
var deepestYet = State.start
val best = mutable.Map.empty[Int, State]
val visits = new Array[Int](tokens.length)

def this(tokens: FormatTokens, runner: ScalafmtRunner) =
def this(tokens: FormatTokens, runner: RunnerSettings) =
this(tokens, runner, runner.optimizer.pruneSlowStates)

/** Returns true if it's OK to skip over state.
Expand Down
10 changes: 5 additions & 5 deletions scalafmt-docs/src/main/scala/website/package.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import org.scalafmt.Scalafmt
import org.scalafmt.config.RunnerSettings
import org.scalafmt.config.ScalafmtConfig
import org.scalafmt.config.ScalafmtRunner

import java.io.PrintStream
import java.nio.file.Files
Expand Down Expand Up @@ -55,10 +55,10 @@ package object website {
* the unformatted code * @param config the config as an HOCON string
*/
def exampleBlock(code: String, config: String*): Unit =
example(code, config, ScalafmtRunner.sbt)
example(code, config, RunnerSettings.sbt)
def exampleSource(code: String, config: String*): Unit =
example(code, config, ScalafmtRunner.default)
def example(code: String, config: Seq[String], runner: ScalafmtRunner): Unit = {
example(code, config, RunnerSettings.default)
def example(code: String, config: Seq[String], runner: RunnerSettings): Unit = {
val processedCode = preProcess(code)
val parsedConfig1 = ScalafmtConfig.fromHoconString(config.mkString("\n"))
.get.copy(runner = runner)
Expand Down Expand Up @@ -91,7 +91,7 @@ package object website {
*/
def formatExample(code: String, config: String*): Unit = {
val parsedConfig = ScalafmtConfig.fromHoconString(config.mkString("\n")).get
.copy(maxColumn = 40, runner = ScalafmtRunner.sbt)
.copy(maxColumn = 40, runner = RunnerSettings.sbt)
val processedCode = preProcess(code)
val formatted = Scalafmt.format(processedCode, parsedConfig).get
val configString =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class ConfigDialectOverrideTest extends FunSuite {
if (testDirectly)
assertEquals(getter(generatedMap(methodName)(Scala213, flag)), flag)
assertEquals(
getter(ScalafmtRunner.overrideDialect(Scala213, methodName, flag)),
getter(RunnerSettings.overrideDialect(Scala213, methodName, flag)),
flag,
)
assertEquals(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package org.scalafmt

import org.scalafmt.config._
package org.scalafmt.config

import scala.meta._

import munit.FunSuite

class ScalafmtRunnerTest extends FunSuite {
class RunnerSettingsTest extends FunSuite {
test("sbt dialect supports trailing commas")(
ScalafmtRunner.sbt.getDialect(
RunnerSettings.sbt.getDialect(
"""|
|lazy
|val x = project(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package org.scalafmt.util
import org.scalafmt.Error.FormatterChangedAST
import org.scalafmt.Error.FormatterOutputDoesNotParse
import org.scalafmt.Scalafmt
import org.scalafmt.config.ScalafmtRunner
import org.scalafmt.config.RunnerSettings

import org.scalameta.logger
import scala.meta.Dialect
Expand All @@ -23,7 +23,7 @@ trait FormatAssertions {
filename: String,
original: String,
obtained: String,
runner: ScalafmtRunner,
runner: RunnerSettings,
): Unit = assertFormatPreservesAst(filename, original, obtained)(
runner.getParser,
runner.getDialectForParser,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,7 @@ package org.scalafmt.util

import org.scalafmt.Debug
import org.scalafmt.Scalafmt
import org.scalafmt.config.ConfParsed
import org.scalafmt.config.DanglingParentheses
import org.scalafmt.config.FormatEvent._
import org.scalafmt.config.Indents
import org.scalafmt.config.NamedDialect
import org.scalafmt.config.ScalafmtConfig
import org.scalafmt.config.ScalafmtOptimizer
import org.scalafmt.config.ScalafmtParser
import org.scalafmt.config.ScalafmtRunner
import org.scalafmt.config._
import org.scalafmt.sysops.PlatformFileOps
import org.scalafmt.tests.BuildInfo

Expand Down Expand Up @@ -265,17 +257,17 @@ object HasTests {
if (isPrefix(name, prefix)) Some(name.substring(prefix.length).trim)
else None

def scalafmtRunner(sr: ScalafmtRunner, dg: Debug): ScalafmtRunner = sr.copy(
def scalafmtRunner(sr: RunnerSettings, dg: Debug): RunnerSettings = sr.copy(
debug = true,
maxStateVisits = sr.maxStateVisits.orElse(Some(150000)),
completeCallback = dg.completed,
eventCallback = {
case CreateFormatOps(ops) => dg.formatOps = ops
case Routes(routes) => dg.routes = routes
case explored: Explored if explored.n % 10000 == 0 =>
case FormatEvent.CreateFormatOps(ops) => dg.formatOps = ops
case FormatEvent.Routes(routes) => dg.routes = routes
case explored: FormatEvent.Explored if explored.n % 10000 == 0 =>
org.scalafmt.util.LoggerOps.logger.elem(explored)
case Enqueue(split) => dg.enqueued(split)
case x: Written => dg.locations = x.formatLocations
case FormatEvent.Enqueue(split) => dg.enqueued(split)
case x: FormatEvent.Written => dg.locations = x.formatLocations
case _ =>
},
)
Expand Down

0 comments on commit c619f6c

Please sign in to comment.