Skip to content

Commit

Permalink
initial commit.
Browse files Browse the repository at this point in the history
  • Loading branch information
tukinami committed Apr 22, 2024
0 parents commit 038097b
Show file tree
Hide file tree
Showing 16 changed files with 3,953 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[build]
target = "i686-pc-windows-msvc"
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/target
48 changes: 48 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 29 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
[package]
name = "saori-calcs"
version = "1.0.0"
edition = "2021"
authors = [ "tukinami seika" ]
license = "MIT"
readme = "README.md"
description = "SAORI to calculate four arithmetic operations."

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

[target.'cfg(windows)'.dependencies]
winapi = {version = "0.3.9", features = ["winbase", "libloaderapi", "stringapiset"]}

[dev-dependencies]
encoding_rs = "0.8.33"

[lib]
name = "calcs"
path = "src/lib.rs"
crate-type = ["rlib", "cdylib"]

[profile.release]
strip = true
opt-level = "z"
lto = true
codegen-units = 1
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2024 月波 清火

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
141 changes: 141 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# Calcs

[GitHub repository](https://github.com/tukinami/saori-calcs)

## これは何?

デスクトップマスコット、「伺か」で使用できるSAORIの一種です。

与えられた四則演算+剰余の式を評価し、値を返します。

SHIORI「里々」での使用を意図しており、全角文字が使えます。
また、整数計算で値が溢れた際、里々の限界値まで値を丸めます。

「伺か」「SAORI」等の用語については詳しく説明いたしませんのでご了承下さい。

## 使い方

SAORI自体の使い方は、使用するSHIORIなどによって異なりますので、ご自身でお調べ下さい。

ここではこのSAORIの使い方について説明いたします。

里々で使用する場合は、**特殊変数「SAORI引数の計算」を一時的に無効にして使用してください**
このSAORIに届く前に式が計算され、期待した値がでないことがあります。

以下の引数を指定して使用します。

+ Argument0: 計算モード文字列(後述)、もしくは空
+ Argument1: 四則演算+剰余からなる式の文字列(書式は後述)

### 失敗したとき

Resultに`Error_`という文字列のあと、失敗理由が`|`区切りで返ります。
主に、式の書き方が間違っているときや、計算できなかったときに返ります。

失敗例は以下。

```
(calcs、前切り捨て、aaa)→Error_字句解析エラー: 解析できない文字があります 1文字目|字句解析エラー: 解析できない文字があります 2文字目|字句解析エラー: 解析できない文字があります 3文字目
```

### 成功したとき

Resultに結果の数字が半角で返ります。

## 計算モード文字列

小数点数値を扱いを指定できます。省略した場合は何もせず、小数点数値のまま計算します。

扱いには大きく分けて2つあり、計算前に整数に直すか、全ての計算が終わった後に整数に直すか選べます。

例として、「前切り捨て」モードと「後切り捨て」モードでは以下のような違いがでます。

```
(calcs、前切り捨て、1.8+1.2)→2
(calcs、後切り捨て、1.8+1.2)→3
(calcs、前切り捨て、1.5÷0.3)→Error_実行時エラー: 計算結果がオーバーフローしました 計算: 1.5(小数)/0.3(小数)
(calcs、後切り捨て、1.5÷0.3)→5
```

| モード名(日本語) | モード名(英語) | 動作 |
|------------------|----------------|--------------------------------------------|
| 前切り捨て | before\_floor | 計算前に小数点以下を切り捨てます。 |
| 後切り捨て | after\_floor | 計算した後に、小数点以下を切り捨てます。 |
| 前切り上げ | before\_ceil | 計算前に、小数点以下を切り上げます。 |
| 後切り上げ | after\_ceil | 計算した後に、小数点以下を切り上げます。 |
| 前丸め | before\_round | 計算前に、小数点以下を四捨五入します。 |
| 後丸め | after\_round | 計算した後に、小数点以下を四捨五入します。 |

## 使える演算子と書式

| 演算 | 該当する文字 |
|------|--------------|
| 括弧 | () |
| 乗算 | **× |
| 除算 | /÷/ |
| 剰余 | %% |
| 加算 | ++ |
| 減算 | -− |

優先順位が高い順に並んでいます。

括弧については、全角括弧も対応していますが、里々の仕様上思わぬ値が入る可能性があるので、半角括弧を推奨いたします。

剰余(割った余り)については、整数同士のときのみ動作します。それ以外の場合はエラーを返します。

数値はアラビア数字(0〜9、0〜9)なら全角・半角どちらでも可能です。
また、小数点も全角(.)・半角(.)どちらでも可能です。

数値と演算子の間には空白を含めることも可能です。

## 内部計算

もし、計算前に整数にするモードでなく、整数と小数点数値同士を計算することがあれば、整数を小数点数値に直してから計算しています。
また、演算は1段階ずつ行なわれています。
よって、数値によっては微細なズレが生じる可能性があります。ご了承ください。

また、前述の通り、里々の限界値である符号付き32bit整数の値に収まるように値が丸められるため、極端に大きい、もしくは小さい値は正確ではありません。
そちらもご了承ください。

## 使用方法の例

### 里々(簡易)

#### satori_conf.txt

```
@SAORI
お好きな登録名,path/to/calcs.dll
```

#### 使用時

```
*テスト
$SAORI引数の計算 無効
#結果: 6
(お好きな登録名、前切り上げ、1.2+3.3)
#結果: 5
(お好きな登録名、後切り上げ、1.2+3.3)
#結果: 4.5
(お好きな登録名、、1.2+3.3)
$SAORI引数の計算 自動
```

## 使用ライブラリ

いずれも敬称略。ありがとうございます。

+ [winapi\_rs](https://github.com/retep998/winapi-rs) / Peter Atashian
+ (テスト実行時) [encoding\_rs](https://github.com/hsivonen/encoding_rs) / Henri Sivonen

## ライセンス

MITにて配布いたします。

## 作成者

月波 清火 (tukinami seika)

[GitHub](https://github.com/tukinami)
Loading

0 comments on commit 038097b

Please sign in to comment.