This is another unit system for ruby. It was created since I was not confident about the existing ones.
Features:
- No unit conversions
- No core patches (Especially does not require mathn!)
- Dependency free.
- Functional implementation style.
- No magic coercion from number like strings to numbers.
- Will never loose precision (Uses rational as scalar internally)
- Allows namespacing of unit systems via subclass.
- Well tested (100% mutation coverage via mutant)
The default set of predefined units is minimal as this library should be used in an application
specific subclass. Override: AUOM::Unit.units
Install the gem auom
via your preferred method.
require 'auom'
include AUOM
u = Unit.new(1, :meter) # <AUOM::Unit @scalar=1 meter>
u * 100 # <AUOM::Unit @scalar=100 meter>
u / Unit.new(10, :meter) # <AUOM::Unit @scalar=0.1>
u / Unit.new(10, [ :meter, :meter ]) # <AUOM::Unit @scaler=0.1 1/meter>
u * Unit.new(10, :meter) # <AUOM::Unit @scalar=10 meter^2>
u * Unit.new(1, :euro) # <AUOM::Unit @scalar=1 euro*meter>
u - Unit.new(1, :meter) # <AUOM::Unit @scalar=0 meter>
u + Unit.new(1, :meter) # <AUOM::Unit @scalar=2 meter>
u + Unit.new(1, :euro) # raises error about incompatible units
Room for your name!
- Fork the project.
- Make your feature addition or bug fix.
- Add tests for it. This is important so I don't break it in a future version unintentionally.
- Commit, do not mess with Rakefile or version (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
- Send me a pull request. Bonus points for topic branches.
Copyright (c) 2014 Markus Schirp
See LICENSE
for details