Skip to content

[Experimental] The Lombok-like tools implemented in scala by macro, includes the supported IntelliJ plugin.

License

Notifications You must be signed in to change notification settings

playcommunity/scala-macro-tools

 
 

Repository files navigation

https://bitlap.org

scala-macro-tools

Project Stage CI Codecov
Stage CI codecov
Scaladex Jetbrains Plugin Nexus Snapshots
scala-macro-tools Scala version support Version Sonatype Nexus (Snapshots)

Motivation

Learn Scala macro and abstract syntax tree.

The project is currently experimental

中文说明 | English

Environment

  • Compile passed in Java 8、11
  • Compile passed in Scala 2.11.12、2.12.14、2.13.6

Module Features

tools

  • @toString
  • @json
  • @builder
  • @log
  • @apply
  • @constructor
  • @equalsAndHashCode
  • @jacksonEnum
  • @elapsed
  • @javaCompatible
  • ProcessorCreator

The intellij plugin named Scala-Macro-Tools in marketplace.

cacheable-core

A cache like Spring @Cacheable and @cacheEvict based on zio. It has no implementation of storage media.

  • @cacheable / Cache.apply
  • @cacheEvict / Cache.evict

cacheable-caffeine

A memory cache based on zio and caffeine. It needs cacheable-core module.

cacheable-redis

A distributed cache based on zio and zio-redis. It needs cacheable-core module.

Document

https://bitlap.org/lab/smt

How to use

Add library dependency

Use smt-tools

"org.bitlap" %% "smt-tools" % "<VERSION>" // named smt-tools since 0.4.0 

Only Usesmt-cacheable-core

// cache API, include dependencies: zio, zio-streams, zio-logging
"org.bitlap" %% "smt-cacheable-core" % "<VERSION>"

Use smt-cacheable-redis

TODO Not unavailable, no distributed lock

// distributed cache, include dependencies: zio-redis, config, zio-schema, zio-schema-json, optional (zio-schema-derivation for case class)
// dependsOn `smt-cacheable-core`(not support Scala2.11.x)
"org.bitlap" %% "smt-cacheable-redis" % "<VERSION>"

Use smt-cacheable-caffeine

// local cache, include dependencies: config, caffeine
// dependsOn `smt-cacheable-core`
"org.bitlap" %% "smt-cacheable-caffeine" % "<VERSION>"

The artefacts have been uploaded to Maven Central. Importing the library into your build system (e.g gradle, sbt), is not enough. You need to follow an extra step.

Scala 2.11 Scala 2.12 Scala 2.13
Import macro paradise plugin Import macro paradise plugin Enable compiler flag -Ymacro-annotations required
addCompilerPlugin("org.scalamacros" % "paradise_<your-scala-version>" % "<plugin-version>")

Where <your-scala-version> must be the full scala version. For example 2.12.13, and not 2.12.

If that doesn't work, google for alternatives.

In version scala2.13.x, the functionality of macro paradise has been included in the scala compiler directly. However, you must still enable the compiler flag -Ymacro-annotations.

About

[Experimental] The Lombok-like tools implemented in scala by macro, includes the supported IntelliJ plugin.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Scala 100.0%