arc-furnace 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ab49afa557ed851dd866c6dd1486bde91062890
4
- data.tar.gz: f66fa651a0e3ac6df2c3824d5daecfe1244859c6
3
+ metadata.gz: 6ddf02e39df88f030eaa1f02618454af0915adb8
4
+ data.tar.gz: cf08e1ff2e0744c3bfb278ba1a673b92403468ef
5
5
  SHA512:
6
- metadata.gz: 236b5f55f9914dc37a89579cc543304880af745d49096186e94397e6eca5ea41024437bb16461e5c457786e47fbc3db67fed268a424f72b7c7c057be026d796e
7
- data.tar.gz: 6833e0e9e9e84442ce686cdd68e55efdd3c8535ec57b7fe225c10f2811e390e5af02525086ab90cac8ee158533fe619f7984f4f0cb834fda25f2dd57670ae694
6
+ metadata.gz: fb37ff1cfee0910462cdcf1bcacfdda0420766ccd1626b1829b5958eec7a4825bb140c922d66b7769bdaa7389f17e533fc33832705d37c15229db04e66a3485e
7
+ data.tar.gz: f93278f6ffd3c89bc77bb34993180cc6b1d04ddc0f1e2dcc71640fb0561ca723010d56a731a2fe3f9a118c9dbd337bdcf883932ae6b6376242334d70b1c6c18a
data/lib/arc-furnace.rb CHANGED
@@ -10,3 +10,4 @@ require 'arc-furnace/dsl'
10
10
  require 'arc-furnace/error_handler'
11
11
  require 'arc-furnace/nodes'
12
12
  require 'arc-furnace/pipeline'
13
+ require 'arc-furnace/stdout_error_handler'
@@ -3,7 +3,6 @@ require 'arc-furnace/source'
3
3
  module ArcFurnace
4
4
  class AbstractJoin < Source
5
5
  private_attr_reader :hash, :source, :key_column
6
- attr_reader :value
7
6
 
8
7
  # The source is a source, the hash is a hash, and one can optionally
9
8
  # pass the key column to get the primary key for each source entity, the
@@ -18,10 +17,14 @@ module ArcFurnace
18
17
  end
19
18
  end
20
19
 
21
- def prepare
22
- advance
20
+ def value
21
+ if @value.nil? && !empty?
22
+ advance
23
+ end
24
+ @value
23
25
  end
24
26
 
27
+
25
28
  def advance
26
29
  raise "Unimplemented!"
27
30
  end
@@ -12,10 +12,6 @@ module ArcFurnace
12
12
  @fields = {}
13
13
  end
14
14
 
15
- def prepare(fields = nil)
16
-
17
- end
18
-
19
15
  def finalize
20
16
  packer.flush
21
17
  tmp_file.rewind
@@ -7,13 +7,18 @@ module ArcFurnace
7
7
  class Filter < Source
8
8
 
9
9
  private_attr_reader :source
10
- attr_reader :value
11
10
 
12
11
  def initialize(source:)
13
12
  @source = source
14
- advance
13
+ @value = nil
15
14
  end
16
15
 
16
+ def value
17
+ if @value.nil? && !empty?
18
+ advance
19
+ end
20
+ @value
21
+ end
17
22
  # Given a row from the source, tell if it should be passed down to the next
18
23
  # node downstream from this node.
19
24
  #
@@ -23,7 +28,7 @@ module ArcFurnace
23
28
  end
24
29
 
25
30
  def empty?
26
- value.nil? && source.empty?
31
+ @value.nil? && source.empty?
27
32
  end
28
33
 
29
34
  def advance
@@ -16,8 +16,8 @@ module ArcFurnace
16
16
  def advance
17
17
  loop do
18
18
  @value = source.row
19
- break if value.nil?
20
- if merge_source_row(value)
19
+ break if @value.nil?
20
+ if merge_source_row(@value)
21
21
  break
22
22
  end
23
23
  end
@@ -5,8 +5,8 @@ module ArcFurnace
5
5
 
6
6
  def advance
7
7
  @value = source.row
8
- unless value.nil?
9
- merge_source_row(value)
8
+ unless @value.nil?
9
+ merge_source_row(@value)
10
10
  end
11
11
  end
12
12
 
@@ -0,0 +1,27 @@
1
+ require 'arc-furnace/error_handler'
2
+
3
+ module ArcFurnace
4
+ class StdoutErrorHandler < ErrorHandler
5
+
6
+ # Called during a join operation when a source row is missing a value for the join key.
7
+ def missing_join_key(source_row:, node_id:)
8
+ puts "Missing join key in #{source_row} for #{node_id}"
9
+ end
10
+
11
+ # Called during a join operation when the hash is missing a value for the join key.
12
+ def missing_hash_key(key:, source_row:, node_id:)
13
+ puts "Missing hash key '#{key}' in join for #{node_id}"
14
+ end
15
+
16
+ # Called when a hash node is missing a primary key during the build process.
17
+ def missing_primary_key(source_row:, node_id:)
18
+ puts "Missing primary key in '#{source_row}' for #{node_id}"
19
+ end
20
+
21
+ # Called when a hash node has duplicate source rows
22
+ def duplicate_primary_key(duplicate_row:, key:, node_id:)
23
+ puts "Duplicate primary key in '#{duplicate_row}' for key '#{key}' in #{node_id}"
24
+ end
25
+
26
+ end
27
+ end
@@ -9,10 +9,6 @@ module ArcFurnace
9
9
  @source = source
10
10
  end
11
11
 
12
- def prepare
13
- source.prepare
14
- end
15
-
16
12
  def value
17
13
  value = source.value.deep_dup
18
14
  transform(value) if value
@@ -7,15 +7,17 @@ module ArcFurnace
7
7
  class Unfold < Source
8
8
 
9
9
  private_attr_reader :source, :unfolded
10
- attr_reader :value
11
10
 
12
11
  def initialize(source:)
13
12
  @source = source
14
- advance
13
+ @value = nil
15
14
  end
16
15
 
17
- def prepare
18
- source.prepare
16
+ def value
17
+ if @value.nil? && !empty?
18
+ advance
19
+ end
20
+ @value
19
21
  end
20
22
 
21
23
  # Given a row from the source, produce the unfolded rows as a result. This method must return
@@ -25,7 +27,7 @@ module ArcFurnace
25
27
  end
26
28
 
27
29
  def empty?
28
- value.nil? && source.empty?
30
+ @value.nil? && source.empty?
29
31
  end
30
32
 
31
33
  def advance
@@ -1,3 +1,3 @@
1
1
  module ArcFurnace
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arc-furnace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Spangenberger
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2015-10-22 00:00:00.000000000 Z
12
+ date: 2015-10-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: msgpack
@@ -153,6 +153,7 @@ files:
153
153
  - lib/arc-furnace/private_attr.rb
154
154
  - lib/arc-furnace/sink.rb
155
155
  - lib/arc-furnace/source.rb
156
+ - lib/arc-furnace/stdout_error_handler.rb
156
157
  - lib/arc-furnace/suffixed_fixed_column_csv_sink.rb
157
158
  - lib/arc-furnace/transform.rb
158
159
  - lib/arc-furnace/unfold.rb