README.md 4.3 KB
Newer Older
梦境迷离's avatar
梦境迷离 已提交
1
# smt
I
IceMimosa 已提交
2

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

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

梦境迷离's avatar
梦境迷离 已提交
11
# 环境
12

梦境迷离's avatar
梦境迷离 已提交
13 14
- Java 8+
- Scala 2.11.12、2.12.14、2.13.8
15

梦境迷离's avatar
梦境迷离 已提交
16
# 文档
17

梦境迷离's avatar
梦境迷离 已提交
18
[详细文档 https://bitlap.org/lab/smt](https://bitlap.org/lab/smt)
梦境迷离's avatar
梦境迷离 已提交
19

梦境迷离's avatar
梦境迷离 已提交
20
# 如何使用
梦境迷离's avatar
梦境迷离 已提交
21

梦境迷离's avatar
梦境迷离 已提交
22 23
添加库依赖,下面是如何在 SBT 中使用

梦境迷离's avatar
梦境迷离 已提交
24
> 在gradle,maven中,通常`smt-annotations`被替换为`smt-annotations_2.12`,其中,`2.12`表示Scala版本号。
梦境迷离's avatar
梦境迷离 已提交
25

梦境迷离's avatar
梦境迷离 已提交
26 27
## cache

梦境迷离's avatar
梦境迷离 已提交
28 29
- 一个统一的缓存适配器。
- 零依赖,类型安全。
梦境迷离's avatar
梦境迷离 已提交
30
```scala
梦境迷离's avatar
梦境迷离 已提交
31
"org.bitlap" %% "smt-cache" % "<VERSION>" // 从0.6.0开始 
梦境迷离's avatar
梦境迷离 已提交
32 33 34 35
```

## common

梦境迷离's avatar
梦境迷离 已提交
36 37 38 39 40
- 存放一些很通用的工具类。
- 对象转换器`transform`
    - 零依赖,类型安全。
    - `Transformer` 将样例类`From`的对象转变为样例类`To`的对象。
    - `Transformable` 使用宏派生任意类型的`Transformer`实例。
梦境迷离's avatar
梦境迷离 已提交
41
```scala
梦境迷离's avatar
梦境迷离 已提交
42
"org.bitlap" %% "smt-common" % "<VERSION>" // 从0.6.0开始 
梦境迷离's avatar
梦境迷离 已提交
43 44
```

梦境迷离's avatar
梦境迷离 已提交
45
## csv
梦境迷离's avatar
梦境迷离 已提交
46

梦境迷离's avatar
梦境迷离 已提交
47 48 49 50 51
- `Converter` 基础的CSV转换器。
- `CsvableBuilder` 支持以自定义的方式将Scala`case class`转化为一行CSV字符串。
- `ScalableBuilder` 支持以自定义的方式将一行CSV字符串转化为Scala`case class`
- `CsvFormat` 支持自定义格式和TSV文件。
- 零依赖,类型安全。
梦境迷离's avatar
梦境迷离 已提交
52 53

```scala
梦境迷离's avatar
梦境迷离 已提交
54
"org.bitlap" %% "smt-csv" % "<VERSION>" 
梦境迷离's avatar
梦境迷离 已提交
55 56 57
```

## csv-derive
58

梦境迷离's avatar
梦境迷离 已提交
59
- `DeriveCsvConverter` 为Scala`case class`自动派生`Converter`实例。
梦境迷离's avatar
梦境迷离 已提交
60 61

```scala
梦境迷离's avatar
梦境迷离 已提交
62
"org.bitlap" %% "smt-csv-derive" % "<VERSION>" 
梦境迷离's avatar
梦境迷离 已提交
63 64
```

梦境迷离's avatar
梦境迷离 已提交
65
## annotations
66 67 68 69 70

- `@toString`
- `@builder`
- `@log`
- `@apply`
梦境迷离's avatar
梦境迷离 已提交
71
- `@constructor`
梦境迷离's avatar
梦境迷离 已提交
72
- `@equalsAndHashCode`
梦境迷离's avatar
梦境迷离 已提交
73
- `@elapsed`
74
- `@javaCompatible`
梦境迷离's avatar
梦境迷离 已提交
75

梦境迷离's avatar
梦境迷离 已提交
76
> Intellij插件 `Scala-Macro-Tools`。
77

梦境迷离's avatar
梦境迷离 已提交
78
```scala
梦境迷离's avatar
梦境迷离 已提交
79
"org.bitlap" %% "smt-annotations" % "<VERSION>" 
梦境迷离's avatar
梦境迷离 已提交
80 81
```

梦境迷离's avatar
梦境迷离 已提交
82
该库已发布到maven中央仓库,请使用最新版本。仅将本库导入构建系统(例如gradle、sbt)是不够的。你需要多走一步。
梦境迷离's avatar
梦境迷离 已提交
83

梦境迷离's avatar
梦境迷离 已提交
84 85 86
| Scala 2.11           | Scala 2.12           | Scala 2.13                     |
|----------------------|----------------------|--------------------------------|
| 导入 macro paradise 插件 | 导入 macro paradise 插件 | 开启 编译器标记 `-Ymacro-annotations` |
梦境迷离's avatar
梦境迷离 已提交
87 88 89 90 91

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

梦境迷离's avatar
梦境迷离 已提交
92
`<your-scala-version>`必须是Scala版本号的完整编号,如`2.12.13`,而不是`2.12`
梦境迷离's avatar
梦境迷离 已提交
93

梦境迷离's avatar
梦境迷离 已提交
94
如果这不起作用,可以谷歌寻找替代品。
梦境迷离's avatar
梦境迷离 已提交
95

梦境迷离's avatar
梦境迷离 已提交
96
`scala 2.13.x`版本中,macro paradise的功能直接包含在scala编译器中。然而,仍然必须启用编译器标志`-Ymacro annotations`
梦境迷离's avatar
梦境迷离 已提交
97

梦境迷离's avatar
梦境迷离 已提交
98
# 特别感谢
梦境迷离's avatar
梦境迷离 已提交
99 100 101 102 103 104

<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/IntelliJ_IDEA.svg" alt="IntelliJ IDEA logo.">

This project is developed using JetBrains IDEA.
Thanks to JetBrains for providing me with a free license, which is a strong support for me.

梦境迷离's avatar
梦境迷离 已提交
105
[Stage]: https://img.shields.io/badge/Project%20Stage-Development-yellowgreen.svg
梦境迷离's avatar
梦境迷离 已提交
106
[Badge-CI]: https://github.com/bitlap/smt/actions/workflows/ScalaCI.yml/badge.svg
梦境迷离's avatar
up  
梦境迷离 已提交
107
[Badge-Scaladex]: https://index.scala-lang.org/bitlap/smt/smt-annotations/latest.svg?platform=jvm
梦境迷离's avatar
梦境迷离 已提交
108
[Badge-Jetbrains]: https://img.shields.io/jetbrains/plugin/v/17202-scala-macro-tools
梦境迷离's avatar
梦境迷离 已提交
109 110
[Badge-Codecov]: https://codecov.io/gh/bitlap/smt/branch/master/graph/badge.svg?token=IA596YRTOT
[Badge-Snapshots]: https://img.shields.io/nexus/s/org.bitlap/smt-annotations_2.13?server=https%3A%2F%2Fs01.oss.sonatype.org
梦境迷离's avatar
梦境迷离 已提交
111 112

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