scala-extensions icon indicating copy to clipboard operation
scala-extensions copied to clipboard

Useful extensions for the Scala standard library

scala-extensions: Useful extensions for the Scala standard library http://cvogt.org/scala-extensions/

Contents:

Type-level helpers

  • EnumerateSingletons - listing all objects extending a sealed trait
  • Defaults - object giving names access to a class's default values

Collection extensions (org.cvogt.collection)

  • distinctBy - remove duplicates by key
  • foldWhile / reduceWhile - stoppable accumulation
  • concat - type-safe alternative to mkString
  • containsTyped

String extensions

  • stripIndent - alternative to stripMargin not requiring |
  • indent/indent(n) - indents each line
  • commonLinePrefix, trimLeft, trimRight, trimLinesLeft, trimLinesRight
  • containsTyped

Debug (org.cvogt.scala.debug)

  • printCodeAfterTyper(...) - Prints code after implicits, macros and code desugaring have been applied.
  • (t: Throwable).showStackTrace that returns stack tract as string

Type safety

  • safe"..." alternative to s"..." that requires explicit toString conversions rather than implicit

Type-level constraints (org.cvogt.constraints)

  • CaseClass and SingletonObject type classes
  • Comparisons: <:<, =:=, >:>, !=:=, !<:<, !>:>, e.g. String !=:= And
  • Boolean Algebra: True, False, ==, !, &&, ||, Implies, Xor
  • Subset tests: In, NotIn, e.g. Int NotIn (Any,AnyRef,AnyVal)

Others

  • alternative -> that works as constructor, extractor, type

For usage see: src/test/scala/*

Sbt setup:

libraryDependencies += "org.cvogt" %% "scala-extensions" % "0.5.3"