Module: Fairy::Inject::Interface

Defined in:
lib/fairy/client/inject.rb

Instance Method Summary collapse

Instance Method Details

#inject(block_source, opts = nil) ⇒ Object

filter.inject(%…, :init_value = val)



13
14
15
16
17
18
19
# File 'lib/fairy/client/inject.rb', line 13

def inject(block_source, opts = nil)
  block_source = BlockSource.new(block_source) 
  inject = Inject.new(@fairy, opts, block_source)
  inject.input = self
  #DeepConnect::future{inject.value}
  inject
end

#max(block_source = nil, opts = nil) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/fairy/client/inject.rb', line 38

def max(block_source=nil, opts = nil)
  unless block_source
    block_source = %{|e1, e2| e1 <=> e2}
  end
  
  inject(%{|r, v| (proc{#{block_source}}.call(r, v) < 0) ? v : r})
end

#max_by(block_source, opts = nil) ⇒ Object



46
47
48
49
50
51
52
53
# File 'lib/fairy/client/inject.rb', line 46

def max_by(block_source, opts = nil)
  pair = map(%{|v| [proc{#{block_source}}.call(v), v]})
  max_by = pair.inject(%{|r, v| ((r[0] <=> v[0]) < 0) ? v : r})
  def max_by.value
    super[1]
  end
  max_by
end

#min(block_source = nil, opts = nil) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/fairy/client/inject.rb', line 21

def min(block_source=nil, opts = nil)
  unless block_source
    block_source = %{|e1, e2| e1 <=> e2}
  end
  
  inject(%{|r, v| (proc{#{block_source}}.call(r, v) < 0) ? r : v})
end

#min_by(block_source, opts = nil) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/fairy/client/inject.rb', line 29

def min_by(block_source, opts = nil)
  pair = map(%{|v| [proc{#{block_source}}.call(v), v]})
  min_by = pair.inject(%{|r, v| ((r[0] <=> v[0]) < 0) ? r : v})
  def min_by.value
    super[1]
  end
  min_by
end