Class: J8::Comparator

Inherits:
Object show all
Includes:
Common
Defined in:
lib/j8/comparator.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Common

callable_from_proc, from_callable, from_callable_class, initialize, lambda?, make_lambda, raise_unless_lambda

Class Method Details

.comparing(extractor, comparator) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/j8/comparator.rb', line 7

def self.comparing(extractor, comparator)
  extractor = from_callable_class(extractor, nil, J8::Function)
  comparator = from_callable_class(comparator, nil, J8::Comparator)

  J8::Comparataor.new(
    lambda do |o1, o2|
      comparator.compare(extractor.apply(o1), extractor.apply(o2))
    end
  )
end

Instance Method Details

#compare(o1, o2) ⇒ Object

Raises:



18
19
20
21
22
23
# File 'lib/j8/comparator.rb', line 18

def compare(o1, o2)
  raise J8::NilException if o1.nil?
  raise J8::NilException if o2.nil?

  @callable.call(o1, o2)
end