Class: Measured::Unit
- Inherits:
-
Object
- Object
- Measured::Unit
- Includes:
- Comparable
- Defined in:
- lib/measured/unit.rb
Instance Attribute Summary collapse
-
#aliases ⇒ Object
readonly
Returns the value of attribute aliases.
-
#conversion_amount ⇒ Object
readonly
Returns the value of attribute conversion_amount.
-
#conversion_unit ⇒ Object
readonly
Returns the value of attribute conversion_unit.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#unit_system ⇒ Object
readonly
Returns the value of attribute unit_system.
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#initialize(name, aliases: [], value: nil, unit_system: nil) ⇒ Unit
constructor
A new instance of Unit.
- #inspect ⇒ Object
- #inverse_conversion_amount ⇒ Object
- #names ⇒ Object
- #to_s ⇒ Object
- #with_unit_system(unit_system) ⇒ Object
Constructor Details
#initialize(name, aliases: [], value: nil, unit_system: nil) ⇒ Unit
Returns a new instance of Unit.
6 7 8 9 10 11 |
# File 'lib/measured/unit.rb', line 6 def initialize(name, aliases: [], value: nil, unit_system: nil) @name = name.to_s.freeze @aliases = aliases.map(&:to_s).map(&:freeze).freeze @conversion_amount, @conversion_unit = parse_value(value) if value @unit_system = unit_system end |
Instance Attribute Details
#aliases ⇒ Object (readonly)
Returns the value of attribute aliases.
4 5 6 |
# File 'lib/measured/unit.rb', line 4 def aliases @aliases end |
#conversion_amount ⇒ Object (readonly)
Returns the value of attribute conversion_amount.
4 5 6 |
# File 'lib/measured/unit.rb', line 4 def conversion_amount @conversion_amount end |
#conversion_unit ⇒ Object (readonly)
Returns the value of attribute conversion_unit.
4 5 6 |
# File 'lib/measured/unit.rb', line 4 def conversion_unit @conversion_unit end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
4 5 6 |
# File 'lib/measured/unit.rb', line 4 def name @name end |
#unit_system ⇒ Object (readonly)
Returns the value of attribute unit_system.
4 5 6 |
# File 'lib/measured/unit.rb', line 4 def unit_system @unit_system end |
Instance Method Details
#<=>(other) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/measured/unit.rb', line 43 def <=>(other) if self.class == other.class names_comparison = names <=> other.names if names_comparison != 0 names_comparison else conversion_amount <=> other.conversion_amount end else name <=> other end end |
#inspect ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/measured/unit.rb', line 34 def inspect @inspect ||= begin pieces = [name] pieces << "(#{aliases.join(", ")})" if aliases.any? pieces << conversion_string if conversion_string "#<#{self.class.name}: #{pieces.join(" ")}>".freeze end end |
#inverse_conversion_amount ⇒ Object
56 57 58 |
# File 'lib/measured/unit.rb', line 56 def inverse_conversion_amount @inverse_conversion_amount ||= 1 / conversion_amount if conversion_amount end |
#names ⇒ Object
22 23 24 |
# File 'lib/measured/unit.rb', line 22 def names @names ||= ([name] + aliases).sort!.freeze end |
#to_s ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/measured/unit.rb', line 26 def to_s @to_s ||= if conversion_string "#{name} (#{conversion_string})".freeze else name end end |
#with_unit_system(unit_system) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/measured/unit.rb', line 13 def with_unit_system(unit_system) self.class.new( name, aliases: aliases, value: conversion_string, unit_system: unit_system ) end |