streamingly 0.0.4 → 0.0.5

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 45d8a9c657e19d5c57d2ac76e894b1c5507fbbe2
4
+ data.tar.gz: 7189cc2394882efacc17854af55ad164d15dc397
5
+ SHA512:
6
+ metadata.gz: ea3e8af5b941d4b24686d25674bc36e6777f37995b422590466e6b6d7edaa73f744fc2f281e02466db54b05fa5a6cd163b6e0a0b16fb3ae8ea54b4387217130e
7
+ data.tar.gz: caa7454fd12f4c5724e6488bbe93dfb567f270e840b4e5772be0382051a4f4016bd780c47190c043008aa4f4732ee10ef41e260086f87dc3c4e1897e67124db5
@@ -1,4 +1,5 @@
1
1
  require 'bigdecimal'
2
+ require 'csv'
2
3
 
3
4
  module Streamingly
4
5
 
@@ -23,7 +24,7 @@ module Streamingly
23
24
 
24
25
  def self.from_csv(string)
25
26
  tokens = CSV.parse_line(string)
26
- klass = Kernel.const_get(tokens.first)
27
+ klass = resolve_class(tokens.first)
27
28
  klass.new(*tokens[1..-1])
28
29
  rescue NameError
29
30
  tokens
@@ -33,6 +34,10 @@ module Streamingly
33
34
  k,v = string.split("\t")
34
35
  KV.new(from_csv(k), from_csv(v))
35
36
  end
37
+
38
+ def self.resolve_class(class_name)
39
+ class_name.split('::').reduce(Kernel) { |parent, element| parent.const_get(element) }
40
+ end
36
41
  end
37
42
 
38
43
  end
@@ -1,3 +1,3 @@
1
1
  module Streamingly
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Streamingly::SerDe do
4
+
5
+ describe ".from_csv" do
6
+ let(:value) { '19' }
7
+ let(:text) { "#{type.name},#{value}" }
8
+
9
+ context "given a namespaced class" do
10
+ before do
11
+ Namespace = Module.new
12
+ Namespace::Namespaced = Struct.new(:value)
13
+ end
14
+
15
+ let(:type) { Namespace::Namespaced }
16
+
17
+ it { expect(described_class.from_csv(text)).to eq(type.new(value)) }
18
+ end
19
+
20
+ context "given a non-namespaced class" do
21
+ before do
22
+ NonNamespaced = Struct.new(:value)
23
+ end
24
+
25
+ let(:type) { NonNamespaced }
26
+
27
+ it { expect(described_class.from_csv(text)).to eq(type.new(value)) }
28
+ end
29
+ end
30
+
31
+ end
data/streamingly.gemspec CHANGED
@@ -20,5 +20,5 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
- spec.add_development_dependency "rspec"
23
+ spec.add_development_dependency "rspec", "~> 2.11"
24
24
  end
metadata CHANGED
@@ -1,49 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: streamingly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
5
- prerelease:
4
+ version: 0.0.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Matt Gillooly
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-12-13 00:00:00.000000000 Z
11
+ date: 2014-02-24 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
- requirement: &70317059709280 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
19
  version: '1.3'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *70317059709280
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: rake
27
- requirement: &70317059724560 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - '>='
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *70317059724560
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: rspec
38
- requirement: &70317059723320 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - ~>
42
46
  - !ruby/object:Gem::Version
43
- version: '0'
47
+ version: '2.11'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *70317059723320
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '2.11'
47
55
  description: Helpful classes for writing streaming Hadoop jobs in Ruby
48
56
  email:
49
57
  - matt@swipely.com
@@ -65,38 +73,33 @@ files:
65
73
  - lib/streamingly/version.rb
66
74
  - spec/spec_helper.rb
67
75
  - spec/streamingly/reducer_spec.rb
76
+ - spec/streamingly/serde_spec.rb
68
77
  - streamingly.gemspec
69
78
  homepage: http://github.com/swipely/streamingly
70
79
  licenses:
71
80
  - MIT
81
+ metadata: {}
72
82
  post_install_message:
73
83
  rdoc_options: []
74
84
  require_paths:
75
85
  - lib
76
86
  required_ruby_version: !ruby/object:Gem::Requirement
77
- none: false
78
87
  requirements:
79
- - - ! '>='
88
+ - - '>='
80
89
  - !ruby/object:Gem::Version
81
90
  version: '0'
82
- segments:
83
- - 0
84
- hash: -3836940608254705733
85
91
  required_rubygems_version: !ruby/object:Gem::Requirement
86
- none: false
87
92
  requirements:
88
- - - ! '>='
93
+ - - '>='
89
94
  - !ruby/object:Gem::Version
90
95
  version: '0'
91
- segments:
92
- - 0
93
- hash: -3836940608254705733
94
96
  requirements: []
95
97
  rubyforge_project:
96
- rubygems_version: 1.8.11
98
+ rubygems_version: 2.0.14
97
99
  signing_key:
98
- specification_version: 3
100
+ specification_version: 4
99
101
  summary: Helpful classes for writing streaming Hadoop jobs in Ruby
100
102
  test_files:
101
103
  - spec/spec_helper.rb
102
104
  - spec/streamingly/reducer_spec.rb
105
+ - spec/streamingly/serde_spec.rb