README.md 4.6 KB
Newer Older
1
<img align="right" width="20%" height="30%" src="img.png" alt="https://bitlap.org"/>
梦境迷离's avatar
梦境迷离 已提交
2

梦境迷离's avatar
梦境迷离 已提交
3
# scala-macro-tools
I
IceMimosa 已提交
4

梦境迷离's avatar
梦境迷离 已提交
5
| Project Stage | CI              | Codecov                                   |
梦境迷离's avatar
梦境迷离 已提交
6 7
| ------------- | --------------- | ----------------------------------------- |
| ![Stage]      | ![CI][Badge-CI] | [![codecov][Badge-Codecov]][Link-Codecov] |
8

梦境迷离's avatar
梦境迷离 已提交
9 10 11
| Scaladex                                                                    | Jetbrains Plugin                              | Nexus Snapshots                                                  |
| --------------------------------------------------------------------------- | --------------------------------------------- | ---------------------------------------------------------------- |
| [![scala-macro-tools Scala version support][Badge-Scaladex]][Link-Scaladex] | [![Version][Badge-Jetbrains]][Link-Jetbrains] | [![Sonatype Nexus (Snapshots)][Badge-Snapshots]][Link-Snapshots] |
I
IceMimosa 已提交
12

梦境迷离's avatar
梦境迷离 已提交
13
Motivation
梦境迷离's avatar
梦境迷离 已提交
14
--
梦境迷离's avatar
梦境迷离 已提交
15

梦境迷离's avatar
梦境迷离 已提交
16
Learn Scala macro and abstract syntax tree.
梦境迷离's avatar
梦境迷离 已提交
17

梦境迷离's avatar
梦境迷离 已提交
18
> The project is currently experimental
梦境迷离's avatar
梦境迷离 已提交
19

梦境迷离's avatar
梦境迷离 已提交
20
[中文说明](./README_CN.md) | [English](./README.md)
21

梦境迷离's avatar
梦境迷离 已提交
22
# Environment
23

梦境迷离's avatar
梦境迷离 已提交
24 25
- Compile passed in Java 8、11
- Compile passed in Scala 2.11.12、2.12.14、2.13.6
26

27 28 29
# Module Features

## `tools`
30 31 32 33 34 35

- `@toString`
- `@json`
- `@builder`
- `@log`
- `@apply`
梦境迷离's avatar
梦境迷离 已提交
36
- `@constructor`
梦境迷离's avatar
梦境迷离 已提交
37
- `@equalsAndHashCode`
38
- `@jacksonEnum`
梦境迷离's avatar
梦境迷离 已提交
39
- `@elapsed`
40
- `@javaCompatible`
梦境迷离's avatar
梦境迷离 已提交
41
- `ProcessorCreator`
梦境迷离's avatar
梦境迷离 已提交
42

梦境迷离's avatar
梦境迷离 已提交
43
> The intellij plugin named `Scala-Macro-Tools` in marketplace.
44

45 46 47 48 49 50 51 52 53
## `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`

梦境迷离's avatar
梦境迷离 已提交
54
A memory cache based on zio and caffeine. It needs `cacheable-core` module.
55 56 57

## `cacheable-redis`

梦境迷离's avatar
梦境迷离 已提交
58
A distributed cache based on zio and zio-redis. It needs `cacheable-core` module.
59

梦境迷离's avatar
梦境迷离 已提交
60 61 62
# Document

[https://bitlap.org/lab/smt](https://bitlap.org/lab/smt)
63

梦境迷离's avatar
梦境迷离 已提交
64
# How to use
梦境迷离's avatar
梦境迷离 已提交
65

梦境迷离's avatar
梦境迷离 已提交
66
Add library dependency
梦境迷离's avatar
梦境迷离 已提交
67

梦境迷离's avatar
梦境迷离 已提交
68 69
**Use `smt-tools`**

梦境迷离's avatar
梦境迷离 已提交
70
```scala
71
"org.bitlap" %% "smt-tools" % "<VERSION>" // named smt-tools since 0.4.0 
梦境迷离's avatar
梦境迷离 已提交
72
```
73

梦境迷离's avatar
梦境迷离 已提交
74 75 76 77
**Only Use`smt-cacheable-core`**

```scala
// cache API, include dependencies: zio, zio-streams, zio-logging
梦境迷离's avatar
FIX  
梦境迷离 已提交
78
"org.bitlap" %% "smt-cacheable-core" % "<VERSION>" // not support Scala2.11.x
梦境迷离's avatar
梦境迷离 已提交
79 80 81 82
```

**Use `smt-cacheable-redis`** 

梦境迷离's avatar
梦境迷离 已提交
83
> TODO Not unavailable, no distributed lock
梦境迷离's avatar
梦境迷离 已提交
84 85

```scala
梦境迷离's avatar
梦境迷离 已提交
86
// distributed cache, include dependencies: zio-redis, config, zio-schema, zio-schema-json, optional (zio-schema-derivation for case class)
梦境迷离's avatar
FIX  
梦境迷离 已提交
87 88
// dependsOn `smt-cacheable-core`
"org.bitlap" %% "smt-cacheable-redis" % "<VERSION>" // not support Scala2.11.x
梦境迷离's avatar
梦境迷离 已提交
89 90
```

梦境迷离's avatar
梦境迷离 已提交
91 92 93 94 95
**Use `smt-cacheable-caffeine`**

```scala
// local cache, include dependencies: config, caffeine
// dependsOn `smt-cacheable-core`
梦境迷离's avatar
FIX  
梦境迷离 已提交
96
"org.bitlap" %% "smt-cacheable-caffeine" % "<VERSION>" // not support Scala2.11.x
梦境迷离's avatar
梦境迷离 已提交
97 98
```

梦境迷离's avatar
梦境迷离 已提交
99
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.
梦境迷离's avatar
梦境迷离 已提交
100

梦境迷离's avatar
梦境迷离 已提交
101 102 103
| Scala 2.11                   | Scala 2.12                   | Scala 2.13                                          |
| ---------------------------- | ---------------------------- | --------------------------------------------------- |
| Import macro paradise plugin | Import macro paradise plugin | Enable compiler flag `-Ymacro-annotations` required |
梦境迷离's avatar
梦境迷离 已提交
104 105 106 107 108

```scala
addCompilerPlugin("org.scalamacros" % "paradise_<your-scala-version>" % "<plugin-version>")
```

梦境迷离's avatar
梦境迷离 已提交
109
Where `<your-scala-version>` must be the full scala version. For example 2.12.13, and not 2.12.
梦境迷离's avatar
梦境迷离 已提交
110

梦境迷离's avatar
梦境迷离 已提交
111
If that doesn't work, google for alternatives.
梦境迷离's avatar
梦境迷离 已提交
112

梦境迷离's avatar
梦境迷离 已提交
113
In version scala`2.13.x`, the functionality of macro paradise has been included in the scala compiler directly. However,
梦境迷离's avatar
梦境迷离 已提交
114
you must still enable the compiler flag `-Ymacro-annotations`.
梦境迷离's avatar
梦境迷离 已提交
115 116 117

[Stage]: https://img.shields.io/badge/Project%20Stage-Experimental-yellow.svg
[Badge-CI]: https://github.com/bitlap/scala-macro-tools/actions/workflows/ScalaCI.yml/badge.svg
梦境迷离's avatar
梦境迷离 已提交
118
[Badge-Scaladex]: https://index.scala-lang.org/bitlap/scala-macro-tools/smt-tools/latest-by-scala-version.svg?platform=jvm
梦境迷离's avatar
梦境迷离 已提交
119 120
[Badge-Jetbrains]: https://img.shields.io/jetbrains/plugin/v/17202-scala-macro-tools
[Badge-Codecov]: https://codecov.io/gh/bitlap/scala-macro-tools/branch/master/graph/badge.svg?token=IA596YRTOT
梦境迷离's avatar
梦境迷离 已提交
121
[Badge-Snapshots]: https://img.shields.io/nexus/s/org.bitlap/smt-tools_2.13?server=https%3A%2F%2Fs01.oss.sonatype.org
梦境迷离's avatar
梦境迷离 已提交
122 123 124

[Link-Jetbrains]: https://plugins.jetbrains.com/plugin/17202-scala-macro-tools
[Link-Codecov]: https://codecov.io/gh/bitlap/scala-macro-tools
梦境迷离's avatar
梦境迷离 已提交
125
[Link-Scaladex]: https://index.scala-lang.org/bitlap/scala-macro-tools/smt-tools
梦境迷离's avatar
梦境迷离 已提交
126
[Link-Snapshots]: https://s01.oss.sonatype.org/content/repositories/snapshots/org/bitlap/