# Rink
A unit conversion tool in Rust. The name is a subset of `frink`,
another unit conversion tool, to indicate that this tool implements a
subset of frink's features.
Select features:
- High-precision bignum rational arithmetic
- Detailed error messages
- IRC bot
## Install
`cargo install rink`
## Examples
```
> kWh/year -> W
approx. 0.1140795 W (power)
```
```
> W -> J
Conformance error
Left side: 1 watt (power)
Right side: 1 joule (energy)
Suggestion: 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
Add this to your `Cargo.toml`:
```toml
[dependencies]
rink = "0.3"
```
and this to your crate root:
```rust
extern crate rink;
```
## License
Rink source code is licensed under the Mozilla Public License, version
2. See [LICENSE-MPL](./LICENSE-MPL) for details.
The data file `definitions.units` is licensed under the GNU General
Public License, version 3. See [LICENSE-GPL](./LICENSE-GPL) for details.
### Contribution
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
### 0.3.0
- Use GNU units database instead of frink's
- Relicense under MPL
- Web interface
- Multi-server IRC in bot
- Date arithmetic
- Exact fraction printing
- Sandboxing
- Add temperature scale suffixes
- Factorize query
- Function call syntax
- Errors on division by zero
- Errors on unimplemented imaginary roots
- Inline unit definitions
- Bot name prefix is optional in private message
- Fix associativity of addition
- Rename commonly confused units
- Unit lists (hr;min;sec) in conversions
- "Units for" query
- Show unit definitions when they are the only term
- Make / lower precedence than multiplication, add | which is higher
precedence
- Unit tests
- Output token symbols instead of internal names
- Canonicalize output units
- Try to find a matching derived unit for queries
### 0.2.0
- Errors for division by zero
- Better conversion (->) output
- Bignum arithmetic
- API docs
- IRC bot
- Addition
### 0.1.1
- Search for units.txt in standard directories
- Rustyline
### 0.1.0
- Initial release