chanoma 0.1.2

chanoma is Characters Normalization library. 文字列正規化処理用のライブラリです。
Documentation
# chanoma

[![crates.io](https://img.shields.io/crates/v/chanoma?label=latest)](https://crates.io/crates/chanoma)
[![Documentation](https://docs.rs/chanoma/badge.svg?version=0.1.2)](https://docs.rs/chanoma/0.1.2)

chanoma is Characters Normalization library.
文字列正規化処理用のライブラリです。

## 使い方

### for CLI

```sh
chanoma -p ハンカクカナは全角カタカナに変換されます
```

### for Rust

```rust
use chanoma::Chanoma;

fn main() {
    let chanoma = Chanoma::new();
    chanoma.use_preset();
    println!("{}", chanoma.normalize("ハンカクカナは全角カタカナに変換されます"));
}
```

## インストール

### for CLI

```sh
cargo install --git https://github.com/booink/chanoma
```

### for Rust

```toml:Cargo.toml
[dependencies]
chanoma = { version = "0.1.1", git = "https://github.com/booink/chanoma" }
```

## 設定ファイル

chanoma は設定ファイルを配置することで、結果を調整することが可能です。
設定ファイルを読み込ませるための方法は二種類あります。

- 環境変数 `CHANOMARC` に設定ファイルのパスを指定する。
- 以下のパスのうちのどこかにファイルを配置する。
  - `$HOME/.config/chanoma/chanomarc.{ext}`
  - `$HOME/.config/chanoma/.chanomarc.{ext}`
  - `$HOME/chanomarc.{ext}`
  - `$HOME/.chanomarc.{ext}`
  - `$PWD/chanomarc.{ext}`
  - `$PWD/.chanomarc.{ext}`

上記のどちらの場合でも、`.{ext}` に指定可能な拡張子は `.csv`, `.yaml` (`.yml`) のどれかです。

### CSV ファイルの場合のフォーマット

CSV ファイルでは、一文字から一文字の置換のみ設定が可能です。
最初の列に **置換したい文字**、次の列に **置換後の文字** を記述します。

```csv
from,to
&,&
```

### YAML ファイルの場合のフォーマット

Yaml ファイルでは、一文字から一文字の置換と、Modifier を指定する二種類の方法があります。

#### 一文字から一文字の置換

ルートキーに `items` を記述し、配列指定で `from` キーの値に **置換したい文字**、`to` キーの値に **置換後の文字** を記述します。

```yaml
items:
  - from: "a"
    to: "A"
```

#### Modifier を指定する

ルートキーに `modifiers` を記述し、一段インデントして Modifier をキーとして記述します。
指定できる Modifire は以下です。

- `character_converter` : 一文字から一文字の置換を設定します。キーに **置換したい文字**、値に **置換後の文字** を記述します。( `items` と同様の処理になります。)
- `character_eliminator` : 指定した文字を削除します。
- `consecutive_character_reducer` : 指定した連続する同じ文字を一つにします。
- `dotted_space_eliminator` : 『「半角英数字」と「半角英数字」の間の半角スペース』以外の半角スペースを削除します。
- `ligature_translator` : 指定した合字をくっつけて一文字にします。
- `trim` : 先頭と末尾の半角スペースを削除します。
- `neologdn` : [neologdn](https://github.com/ikegami-yukino/neologdn) と同様の結果になる処理をします。

```yaml
modifiers:
  character_converter:
    a: A
    b: B
  character_eliminator: ["~", ∼, ∾, 〜, 〰, ~]
  consecutive_character_reducer: ー
  dotted_space_eliminator:
  ligature_translator:
    ハ゜: パ
  trim:
  neologdn:
```