Class: LazierData

Inherits:
Object
  • Object
show all
Defined in:
lib/lazier_data.rb,
lib/lazier_data/child.rb,
lib/lazier_data/version.rb,
lib/lazier_data/processor.rb,
lib/lazier_data/item_store.rb,
lib/lazier_data/processor/root_each.rb,
lib/lazier_data/processor/child_each.rb,
lib/lazier_data/processor/root_each_slice.rb,
lib/lazier_data/processor/child_each_slice.rb

Direct Known Subclasses

Child

Defined Under Namespace

Classes: Child, ItemStore, Processor

Constant Summary collapse

VERSION =
'0.1.2'

Instance Method Summary collapse

Constructor Details

#initialize(inputs) ⇒ LazierData

Returns a new instance of LazierData.



12
13
14
15
16
# File 'lib/lazier_data.rb', line 12

def initialize(inputs)
  @initial_processor_builder = proc { Processor.root(inputs) }
  @processor_builders = []
  @children = {}
end

Instance Method Details

#[](path_part) ⇒ Object



42
43
44
# File 'lib/lazier_data.rb', line 42

def [](path_part)
  @children.fetch(path_part)
end

#each_slice(batch_size) ⇒ Object



38
39
40
# File 'lib/lazier_data.rb', line 38

def each_slice(batch_size, &)
  enum_slice(batch_size, &)
end

#enumObject



30
31
32
# File 'lib/lazier_data.rb', line 30

def enum(&)
  enum_slice(nil, &)
end

#enum_slice(batch_size, &block) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/lazier_data.rb', line 18

def enum_slice(batch_size, &block)
  output_path_parts = block.parameters[1..].map(&:last)

  output_path_parts.each do |output_path_part|
    @children[output_path_part] = Child.new(self, output_path_part)
  end

  parent.add do |upstream|
    Processor.new(upstream, batch_size, my_path, &block).call
  end
end

#goObject



46
47
48
49
50
51
52
# File 'lib/lazier_data.rb', line 46

def go
  upstream = @initial_processor_builder.call
  processors = @processor_builders.map do |processor_builder|
    upstream = processor_builder.call(upstream)
  end
  processors.last.each {} # rubocop:disable Lint/EmptyBlock
end

#go_stepwiseObject



54
55
56
57
58
59
60
61
62
63
# File 'lib/lazier_data.rb', line 54

def go_stepwise
  stepwise_results = []
  results = @initial_processor_builder.call.to_a
  stepwise_results << results
  @processor_builders.each do |processor_builder|
    results = processor_builder.call(results).to_a
    stepwise_results << results
  end
  stepwise_results
end

#splitObject



34
35
36
# File 'lib/lazier_data.rb', line 34

def split(&)
  enum(&)
end