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