arc-furnace 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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