longevityframework / emblem

A reflection-based utility library for Scala

GitHub

emblem

License

A reflection-based utility library for Scala. In brief, emblem provides the following features:

  • A TypeKey is a TypeTag that is suitable for use as a key in a Set or a Map.
  • A TypeKeyMap is a Map from TypeKey to objects with type arguments that match the type indicated by the TypeKey.
  • A TypeBoundMap is a Map where the key and value of each key-value pair is bound to the same type argument.
  • An Extractor is a tool for wrapping and unwrapping simple refinement types. For instance, when you use a case class Uri(uri: String) instead of a raw String. It works as a Scala extractor object, but it is also typed as such.
  • An Emblem is a simple utility for reflecting over nested case class structures.
  • The emblem.traversors package provides a framework for visiting, generating, translating, and transforming networks of Emblems and Extractors.

For more information on how to use emblem, see visit the emblem wiki. The Scaladoc API documention is also more or less complete.

Emblem source code is currently housed as a sub-project in another GitHub repository. At some point I will move the source code over here. I'm setting up this GitHub project now as a place to house user documentation in the meantime.