No description
Find a file
Tiffany Bennett 01be58b5cb
Date range checking (#160)
Dates have no range checking which makes parsing them slightly
unreliable and causes weird error messages like this:

```
> #25:00#
Most likely pattern `hour12:min[:sec] meridiem[ offset]` failed: Expected ` `, got eof
```

Additionally, large numbers cause a panic:
```
> #9999999999#
Panic: The application panicked (crashed).
Message:  called `Result::unwrap()` on an `Err` value: ParseIntError { kind: PosOverflow }
Location: core/src/parsing/datetime.rs:117

Backtrace omitted.
Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.
```

This PR adds range checks. I also cleaned up the code a little.
2024-03-29 21:30:21 -07:00
.github/workflows Add --no-fail-fast to coverage build 2022-12-13 18:08:56 -08:00
cli Better packaging (#158) 2024-03-29 19:15:53 -07:00
core Date range checking (#160) 2024-03-29 21:30:21 -07:00
docs Better packaging (#158) 2024-03-29 19:15:53 -07:00
irc Update dependencies (#89) 2021-04-01 16:13:17 -07:00
rink-js Better packaging (#158) 2024-03-29 19:15:53 -07:00
sandbox Add an integration test to rink-sandbox (#128) 2022-04-16 15:58:03 -07:00
web Update live currency fetching (#153) 2024-01-06 18:57:29 -08:00
.codecov.yml Add Travis and Codecov configuration 2018-11-15 18:55:45 +01:00
.gitignore Cache currency data in a file for better reliability 2021-02-14 16:46:17 -08:00
.tokeignore Add tokei ignore file 2022-04-03 21:10:38 -07:00
.travis.yml Fix pattern in kcov invocation 2018-11-20 22:26:35 +01:00
Cargo.lock Run cargo update and fix resulting warnings (#159) 2024-03-27 21:28:54 -07:00
Cargo.toml Move cli to member of workspace 2022-03-24 19:25:38 -07:00
LICENSE-GPL Switch to MPL 2016-08-22 10:46:22 -04:00
LICENSE-MPL Switch to MPL 2016-08-22 10:46:22 -04:00
Makefile Better packaging (#158) 2024-03-29 19:15:53 -07:00
PACKAGING.md Better packaging (#158) 2024-03-29 19:15:53 -07:00
README.md Update README.md 2024-03-29 19:19:49 -07:00

Rink

codecov crates.io downloads

Rink is a unit-aware calculator. It can be used for physics and engineering calculations, as well as dimensionality analysis.

Rink supports most systems of measurements including SI, CGS, natural, international customary, US customary, UK customary, as well as historical measurements. In addition, Rink supports currency conversions.

Unique features:

  • High-precision bignum rational arithmetic
  • Detailed error messages
  • Shows SI physical quantities
  • Finds applicable SI derived units automatically
  • Helps with dimensionality analysis, such as by offering unit factorizations and finding units for quantities.
  • Open source
  • First-class support for non-absolute temperature scales

Manual

Describes (hopefully) everything you need to know to use Rink's expression language.

Web Interface: rinkcalc.app

Rink is available via a web interface in addition to the terminal-based interface. Useful for doing calculations on mobile.

Install

The most common version of Rink is the command line interface rink.

Package Manager Command
Cargo cargo install rink
Pacman pacman -S rink
Nix nix-env -i rink
Scoop scoop install rink

Examples

> kWh/year -> W
0.1140795 watt (power)
> W -> J
Conformance error: 1 watt (power) != 1 joule (energy)
Suggestions: multiply left side by time, multiply right side by frequency
> gallon gasoline -> kWh
approx. 36.63388 kWh (energy)
> googol^100
1.0e10000 (dimensionless)

Library Usage

docs.rs

[dependencies]
rink-core = "0.6"

License

Rink source code is licensed under the Mozilla Public License, version 2. See LICENSE-MPL for details.

The data file definitions.units is licensed under the GNU General Public License, version 3. See LICENSE-GPL for details.

Contribution

Contribution guide can be found on the wiki: https://github.com/tiffany352/rink-rs/wiki#contribution-guide

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work will grant the rights lined out in the MPL, including larger works with secondary licenses.

Changelog

See here: https://github.com/tiffany352/rink-rs/releases