Class: Yast::Ops::GenericComparable Deprecated
- Inherits:
-
Object
- Object
- Yast::Ops::GenericComparable
- Includes:
- Comparable
- Defined in:
- src/ruby/yast/ops.rb
Overview
Deprecated.
use native ruby comparing, comparing various class usually is not usable.
Generic comparator that can compare various classes together like yast, order is based on yast class order.
Constant Summary collapse
- CLASS_ORDER =
ordered classes from low priority to high
[::NilClass, ::FalseClass, ::TrueClass, ::Integer, ::Float, ::String, Yast::Path, ::Symbol, ::Array, Yast::Term, ::Hash].freeze
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#initialize(value, localized = false) ⇒ GenericComparable
constructor
A new instance of GenericComparable.
Constructor Details
#initialize(value, localized = false) ⇒ GenericComparable
Returns a new instance of GenericComparable.
492 493 494 495 |
# File 'src/ruby/yast/ops.rb', line 492 def initialize(value, localized = false) @value = value @localized = localized end |
Instance Method Details
#<=>(other) ⇒ Object
499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 |
# File 'src/ruby/yast/ops.rb', line 499 def <=>(other) if @value.class == other.class case @value when ::Array ListComparator.new(@value, @localized) <=> other when ::NilClass 0 # comparison of two nils is equality when ::Hash HashComparator.new(@value, @localized) <=> other when ::String @localized ? Yast.strcoll(@value, other) : (@value <=> other) else @value <=> other end else return @value <=> other if @value.is_a?(::Numeric) && other.is_a?(::Numeric) # workaround for older ruby versions which have value.is_a?(Integer) but value.class => Fixnum # No longer problem with ruby 2.4 order = CLASS_ORDER.index(@value.class) || CLASS_ORDER.index(::Integer) other_order = CLASS_ORDER.index(other.class) || CLASS_ORDER.index(::Integer) order <=> other_order end end |