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.
-
#inverse_conversion_amount ⇒ Object
readonly
Returns the value of attribute inverse_conversion_amount.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#names ⇒ Object
readonly
Returns the value of attribute names.
-
#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
- #to_s(with_conversion_string: true) ⇒ Object
- #with(name: nil, unit_system: nil, aliases: nil, value: nil) ⇒ Object
Constructor Details
#initialize(name, aliases: [], value: nil, unit_system: nil) ⇒ Unit
Returns a new instance of Unit.
7 8 9 10 11 12 13 14 15 |
# File 'lib/measured/unit.rb', line 7 def initialize(name, aliases: [], value: nil, unit_system: nil) @name = name.to_s.freeze @aliases = aliases.map(&:to_s).map(&:freeze).freeze @names = ([@name] + @aliases).sort!.freeze @conversion_amount, @conversion_unit = parse_value(value) if value @inverse_conversion_amount = (1 / conversion_amount if conversion_amount) @conversion_string = ("#{conversion_amount} #{conversion_unit}" if conversion_amount || conversion_unit) @unit_system = unit_system end |
Instance Attribute Details
#aliases ⇒ Object (readonly)
Returns the value of attribute aliases.
5 6 7 |
# File 'lib/measured/unit.rb', line 5 def aliases @aliases end |
#conversion_amount ⇒ Object (readonly)
Returns the value of attribute conversion_amount.
5 6 7 |
# File 'lib/measured/unit.rb', line 5 def conversion_amount @conversion_amount end |
#conversion_unit ⇒ Object (readonly)
Returns the value of attribute conversion_unit.
5 6 7 |
# File 'lib/measured/unit.rb', line 5 def conversion_unit @conversion_unit end |
#inverse_conversion_amount ⇒ Object (readonly)
Returns the value of attribute inverse_conversion_amount.
5 6 7 |
# File 'lib/measured/unit.rb', line 5 def inverse_conversion_amount @inverse_conversion_amount end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
5 6 7 |
# File 'lib/measured/unit.rb', line 5 def name @name end |
#names ⇒ Object (readonly)
Returns the value of attribute names.
5 6 7 |
# File 'lib/measured/unit.rb', line 5 def names @names end |
#unit_system ⇒ Object (readonly)
Returns the value of attribute unit_system.
5 6 7 |
# File 'lib/measured/unit.rb', line 5 def unit_system @unit_system end |
Instance Method Details
#<=>(other) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/measured/unit.rb', line 41 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 |
# File 'lib/measured/unit.rb', line 34 def inspect pieces = [name] pieces << "(#{aliases.join(", ")})" if aliases.any? pieces << @conversion_string if @conversion_string "#<#{self.class.name}: #{pieces.join(" ")}>".freeze end |
#to_s(with_conversion_string: true) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/measured/unit.rb', line 26 def to_s(with_conversion_string: true) if with_conversion_string && @conversion_string "#{name} (#{@conversion_string})".freeze else name end end |
#with(name: nil, unit_system: nil, aliases: nil, value: nil) ⇒ Object
17 18 19 20 21 22 23 24 |
# File 'lib/measured/unit.rb', line 17 def with(name: nil, unit_system: nil, aliases: nil, value: nil) self.class.new( name || self.name, aliases: aliases || self.aliases, value: value || @conversion_string, unit_system: unit_system || self.unit_system ) end |