Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace Scalariform with Scalafmt #790

Merged
merged 6 commits into from Jul 12, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Expand Up @@ -20,6 +20,9 @@ jobs:
with:
java-version: ${{ matrix.jdk }}

- name: Check formatting
run: sbt "++${{ matrix.scala }} scalafmtCheckAll"

- name: Compile
run: sbt coverage "++${{ matrix.scala }} compile"

Expand Down
4 changes: 4 additions & 0 deletions .scalafmt.conf
@@ -0,0 +1,4 @@
version = 2.6.2

align.preset = none
maxColumn = 120
1 change: 1 addition & 0 deletions .travis.yml
Expand Up @@ -14,6 +14,7 @@ env:
script:
- >
sbt coverage
"++$TRAVIS_SCALA_VERSION scalafmtCheckAll"
"++$TRAVIS_SCALA_VERSION test"
"++$TRAVIS_SCALA_VERSION doc"
"++$TRAVIS_SCALA_VERSION publishLocal"
Expand Down
6 changes: 1 addition & 5 deletions build.sbt
@@ -1,7 +1,6 @@
import Dependencies.Version._
import Utilities._
import sbtrelease.ReleasePlugin.autoImport.ReleaseTransformations._
import scalariform.formatter.preferences._

organization in ThisBuild := "com.github.pureconfig"

Expand Down Expand Up @@ -101,10 +100,7 @@ lazy val commonSettings = Seq(
scalacOptions in (Test, console) := (scalacOptions in (Compile, console)).value,
scalacOptions in Tut --= Seq("-Ywarn-unused-import", "-Xmacro-settings:materialize-derivations"),

scalariformPreferences := scalariformPreferences.value
.setPreference(DanglingCloseParenthesis, Prevent)
.setPreference(DoubleIndentConstructorArguments, true)
.setPreference(SpacesAroundMultiImports, true),
scalafmtOnCompile := true,

autoAPIMappings := true,

Expand Down
19 changes: 10 additions & 9 deletions core/src/main/scala-2.12-/pureconfig/FactoryCompat.scala
Expand Up @@ -4,18 +4,19 @@ import scala.collection.generic.CanBuildFrom
import scala.collection.mutable

/**
* A compatibility layer for creating `CanBuildFrom`-like generic methods that work both on Scala 2.13 and pre-2.13
* versions.
*
* @tparam A the type of elements that get added to the builder
* @tparam C the type of collection that it produces
*/
* A compatibility layer for creating `CanBuildFrom`-like generic methods that work both on Scala 2.13 and pre-2.13
* versions.
*
* @tparam A the type of elements that get added to the builder
* @tparam C the type of collection that it produces
*/
trait FactoryCompat[-A, +C] {
def newBuilder(): mutable.Builder[A, C]
}

object FactoryCompat {
implicit def fromCanBuildFrom[From, Elem, To](implicit cbf: CanBuildFrom[From, Elem, To]): FactoryCompat[Elem, To] = new FactoryCompat[Elem, To] {
override def newBuilder() = cbf()
}
implicit def fromCanBuildFrom[From, Elem, To](implicit cbf: CanBuildFrom[From, Elem, To]): FactoryCompat[Elem, To] =
new FactoryCompat[Elem, To] {
override def newBuilder() = cbf()
}
}
19 changes: 10 additions & 9 deletions core/src/main/scala-2.13/pureconfig/FactoryCompat.scala
Expand Up @@ -4,18 +4,19 @@ import scala.collection.Factory
import scala.collection.mutable

/**
* A compatibility layer for creating `CanBuildFrom`-like generic methods that work both on Scala 2.13 and pre-2.13
* versions.
*
* @tparam A the type of elements that get added to the builder
* @tparam C the type of collection that it produces
*/
* A compatibility layer for creating `CanBuildFrom`-like generic methods that work both on Scala 2.13 and pre-2.13
* versions.
*
* @tparam A the type of elements that get added to the builder
* @tparam C the type of collection that it produces
*/
trait FactoryCompat[-A, +C] {
def newBuilder(): mutable.Builder[A, C]
}

object FactoryCompat {
implicit def fromFactory[A, C](implicit factory: Factory[A, C]): FactoryCompat[A, C] = new FactoryCompat[A, C] {
override def newBuilder() = factory.newBuilder
}
implicit def fromFactory[A, C](implicit factory: Factory[A, C]): FactoryCompat[A, C] =
new FactoryCompat[A, C] {
override def newBuilder() = factory.newBuilder
}
}
87 changes: 46 additions & 41 deletions core/src/main/scala/pureconfig/BasicReaders.scala
@@ -1,16 +1,16 @@
package pureconfig

import java.io.File
import java.math.{ BigInteger, BigDecimal => JavaBigDecimal }
import java.net.{ URI, URL }
import java.nio.file.{ Path, Paths }
import java.math.{BigInteger, BigDecimal => JavaBigDecimal}
import java.net.{URI, URL}
import java.nio.file.{Path, Paths}
import java.time._
import java.time.{ Duration => JavaDuration }
import java.time.{Duration => JavaDuration}
import java.util.UUID
import java.util.regex.Pattern

import scala.concurrent.duration.{ Duration, FiniteDuration }
import scala.math.{ BigDecimal, BigInt }
import scala.concurrent.duration.{Duration, FiniteDuration}
import scala.math.{BigDecimal, BigInt}
import scala.reflect.ClassTag
import scala.util.matching.Regex
import com.typesafe.config._
Expand All @@ -20,8 +20,8 @@ import pureconfig.error._
import scala.util.Try

/**
* Trait containing `ConfigReader` instances for primitive types.
*/
* Trait containing `ConfigReader` instances for primitive types.
*/
trait PrimitiveReaders {

implicit val stringConfigReader = ConfigReader.fromCursor(_.asString)
Expand All @@ -30,7 +30,8 @@ trait PrimitiveReaders {
s.size match {
case 1 => Right(s.charAt(0))
case len => Left(WrongSizeString(1, len))
})
}
)

implicit val booleanConfigReader = ConfigReader.fromCursor(_.asBoolean)

Expand All @@ -40,8 +41,7 @@ trait PrimitiveReaders {
case v => v.toDouble
})

cur.asString.right.flatMap(s => cur.scopeFailure(asStringReader(s)))
.left.flatMap(_ => cur.asDouble)
cur.asString.right.flatMap(s => cur.scopeFailure(asStringReader(s))).left.flatMap(_ => cur.asDouble)
})

implicit val floatConfigReader = ConfigReader.fromCursor({ cur =>
Expand All @@ -50,8 +50,7 @@ trait PrimitiveReaders {
case v => v.toFloat
})

cur.asString.right.flatMap(s => cur.scopeFailure(asStringReader(s)))
.left.flatMap(_ => cur.asFloat)
cur.asString.right.flatMap(s => cur.scopeFailure(asStringReader(s))).left.flatMap(_ => cur.asFloat)
})

implicit val intConfigReader = ConfigReader.fromCursor(_.asInt)
Expand All @@ -64,8 +63,8 @@ trait PrimitiveReaders {
}

/**
* Trait containing `ConfigReader` instance for Java Enums.
*/
* Trait containing `ConfigReader` instance for Java Enums.
*/
trait JavaEnumReader {

implicit def javaEnumReader[A <: Enum[A]](implicit tag: ClassTag[A]): ConfigReader[A] =
Expand All @@ -76,8 +75,8 @@ trait JavaEnumReader {
}

/**
* Trait containing `ConfigReader` instances for classes related to file system paths and URIs.
*/
* Trait containing `ConfigReader` instances for classes related to file system paths and URIs.
*/
trait UriAndPathReaders {

implicit val urlConfigReader = ConfigReader.fromNonEmptyString[URL](catchReadError(new URL(_)))
Expand All @@ -88,17 +87,17 @@ trait UriAndPathReaders {
}

/**
* Trait containing `ConfigReader` instances for classes related to regular expressions.
*/
* Trait containing `ConfigReader` instances for classes related to regular expressions.
*/
trait RegexReaders {

implicit val patternReader = ConfigReader.fromString[Pattern](catchReadError(Pattern.compile))
implicit val regexReader = ConfigReader.fromString[Regex](catchReadError(new Regex(_)))
}

/**
* Trait containing `ConfigReader` instances for `java.time` classes.
*/
* Trait containing `ConfigReader` instances for `java.time` classes.
*/
trait JavaTimeReaders {

implicit val instantConfigReader: ConfigReader[Instant] =
Expand All @@ -121,9 +120,9 @@ trait JavaTimeReaders {
}

/**
* Trait containing `ConfigReader` instances for [[scala.concurrent.duration.Duration]] and
* [[scala.concurrent.duration.FiniteDuration]].
*/
* Trait containing `ConfigReader` instances for [[scala.concurrent.duration.Duration]] and
* [[scala.concurrent.duration.FiniteDuration]].
*/
trait DurationReaders {

implicit val durationConfigReader: ConfigReader[Duration] =
Expand All @@ -133,17 +132,23 @@ trait DurationReaders {
val fromString: String => Either[FailureReason, FiniteDuration] = { string =>
DurationUtils.fromString(string).right.flatMap {
case d: FiniteDuration => Right(d)
case _ => Left(CannotConvert(string, "FiniteDuration",
s"Couldn't parse '$string' into a FiniteDuration because it's infinite."))
case _ =>
Left(
CannotConvert(
string,
"FiniteDuration",
s"Couldn't parse '$string' into a FiniteDuration because it's infinite."
)
)
jcazevedo marked this conversation as resolved.
Show resolved Hide resolved
}
}
ConfigReader.fromNonEmptyString[FiniteDuration](fromString)
}
}

/**
* Trait containing `ConfigReader` instances for Java and Scala arbitrary-precision numeric types.
*/
* Trait containing `ConfigReader` instances for Java and Scala arbitrary-precision numeric types.
*/
trait NumericReaders {

implicit val javaBigIntegerReader: ConfigReader[BigInteger] =
Expand All @@ -160,8 +165,8 @@ trait NumericReaders {
}

/**
* Trait containing `ConfigReader` instances for Typesafe config models.
*/
* Trait containing `ConfigReader` instances for Typesafe config models.
*/
trait TypesafeConfigReaders {

implicit val configConfigReader: ConfigReader[Config] =
Expand Down Expand Up @@ -192,17 +197,17 @@ trait TypesafeConfigReaders {
}

/**
* Trait containing `ConfigReader` instances for primitive types and simple classes in Java and Scala standard
* libraries.
*/
* Trait containing `ConfigReader` instances for primitive types and simple classes in Java and Scala standard
* libraries.
*/
trait BasicReaders
extends PrimitiveReaders
with JavaEnumReader
with UriAndPathReaders
with RegexReaders
with JavaTimeReaders
with DurationReaders
with NumericReaders
with TypesafeConfigReaders
extends PrimitiveReaders
with JavaEnumReader
with UriAndPathReaders
with RegexReaders
with JavaTimeReaders
with DurationReaders
with NumericReaders
with TypesafeConfigReaders

object BasicReaders extends BasicReaders