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 +4 -4
- data/lib/arc-furnace.rb +1 -0
- data/lib/arc-furnace/abstract_join.rb +6 -3
- data/lib/arc-furnace/all_fields_csv_sink.rb +0 -4
- data/lib/arc-furnace/filter.rb +8 -3
- data/lib/arc-furnace/inner_join.rb +2 -2
- data/lib/arc-furnace/outer_join.rb +2 -2
- data/lib/arc-furnace/stdout_error_handler.rb +27 -0
- data/lib/arc-furnace/transform.rb +0 -4
- data/lib/arc-furnace/unfold.rb +7 -5
- data/lib/arc-furnace/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ddf02e39df88f030eaa1f02618454af0915adb8
|
4
|
+
data.tar.gz: cf08e1ff2e0744c3bfb278ba1a673b92403468ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb37ff1cfee0910462cdcf1bcacfdda0420766ccd1626b1829b5958eec7a4825bb140c922d66b7769bdaa7389f17e533fc33832705d37c15229db04e66a3485e
|
7
|
+
data.tar.gz: f93278f6ffd3c89bc77bb34993180cc6b1d04ddc0f1e2dcc71640fb0561ca723010d56a731a2fe3f9a118c9dbd337bdcf883932ae6b6376242334d70b1c6c18a
|
data/lib/arc-furnace.rb
CHANGED
@@ -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
|
22
|
-
|
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
|
data/lib/arc-furnace/filter.rb
CHANGED
@@ -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
|
-
|
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
|
@@ -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
|
data/lib/arc-furnace/unfold.rb
CHANGED
@@ -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
|
-
|
13
|
+
@value = nil
|
15
14
|
end
|
16
15
|
|
17
|
-
def
|
18
|
-
|
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
|
data/lib/arc-furnace/version.rb
CHANGED
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.
|
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-
|
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
|