quandl_data 1.3.0 → 1.3.1

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: e811fb881ccd062b98502cddce1c7a27d5f53ac2
4
- data.tar.gz: 5f84494fdae5960ebb598c032da19cf9ce342b3d
3
+ metadata.gz: 94ac5c5c76af7dbfef791ad7aacf52abfea27db2
4
+ data.tar.gz: 5edaf32984dd620b88f44a3cfb8a7ee04c649e9f
5
5
  SHA512:
6
- metadata.gz: 514a0425af0aa3af800bb8a0c2f06299bc9a2bce9b825cccc57ad84cd8469107d2da25a5a4be4900bcf6c4d78958edb34a5d496d528467f64489a8f5e8e9d8ac
7
- data.tar.gz: 91ff9683ef3c984c2e7e679178b04848699ede82b7e54b6f36b883d19823697888258d2f9b67fdf2803e72bfbda6ec88c7eab526c39346c6f631321059866f42
6
+ metadata.gz: c149657dabceec4bb7864aafc533bf77482d171625a5290f3788073665994b6a0c42850aa2a72c4dc6bdfc18c0b8bc0ffe40041e328b2bcb30fcdf679874eaaf
7
+ data.tar.gz: c505d9aa00e19436832d2521a12bfed8fdc6447e9de495ec35394e3babefa3709d66c92e17b14d378f156a369696be54ee597f7b31b30816b78e797d409fa71c
data/Gemfile CHANGED
@@ -6,5 +6,4 @@ local_gem_dir = ENV['BUNDLE_LOCAL_DIR']
6
6
 
7
7
  if use_local_gems
8
8
  gem 'quandl_operation', path: "#{local_gem_dir}/quandl/operation"
9
- gem 'quandl_babelfish', path: "#{local_gem_dir}/quandl/babelfish"
10
9
  end
data/UPGRADE.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 1.3.1
2
+
3
+ * add .with_type to Data
4
+ * revise errors to Error for consistency
5
+ * refactor babelfish out of data, remove babelfisher
6
+
7
+
1
8
  ## 1.3.0
2
9
 
3
10
  * string_to_csv will not force values to float
data/lib/quandl/data.rb CHANGED
@@ -6,11 +6,11 @@ require "active_support/core_ext/hash"
6
6
  require "active_support/core_ext/object"
7
7
 
8
8
  require "quandl/operation"
9
- require "quandl/babelfish"
10
9
 
11
- require 'quandl/errors/unknown_date_format'
10
+ require 'quandl/error/unknown_date_format'
12
11
 
13
- require 'quandl/data/babelfisher'
12
+ require 'quandl/data/attributes'
13
+ require 'quandl/data/cleaning'
14
14
  require 'quandl/data/enumerator'
15
15
  require 'quandl/data/operations'
16
16
  require 'quandl/data/format'
@@ -18,7 +18,8 @@ require 'quandl/data/logging'
18
18
 
19
19
  module Quandl
20
20
  class Data
21
- include Babelfisher
21
+ include Attributes
22
+ include Cleaning
22
23
  include Enumerator
23
24
  include Operations
24
25
  include Logging if defined?(QUANDL_LOGGER) && QUANDL_LOGGER == true
@@ -0,0 +1,51 @@
1
+ module Quandl
2
+ class Data
3
+ module Attributes
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ module ClassMethods
8
+
9
+ def with_type(type)
10
+ type = type.to_s.downcase.to_sym
11
+ case type
12
+ when :dirty, :babelfish then Quandl::Babelfish::Data
13
+ else
14
+ Quandl::Data
15
+ end
16
+ end
17
+
18
+ end
19
+
20
+ def initialize(*args)
21
+ self.pristine_data = args.first
22
+ self.attributes = args.extract_options!
23
+ end
24
+
25
+ def headers=(value)
26
+ # only assign arrays
27
+ @headers = value.flatten if value.kind_of?(Array)
28
+ end
29
+ def headers
30
+ @headers
31
+ end
32
+ def headers?
33
+ headers.present?
34
+ end
35
+
36
+ def attributes
37
+ @attributes ||= {}
38
+ end
39
+ def attributes=(attrs)
40
+ assign_attributes(attrs)
41
+ attributes
42
+ end
43
+ def assign_attributes(attrs)
44
+ attrs.each do |name, value|
45
+ self.send("#{name}=", value) if self.respond_to?("#{name}=")
46
+ end
47
+ end
48
+
49
+ end
50
+ end
51
+ end
@@ -1,19 +1,9 @@
1
1
  module Quandl
2
2
  class Data
3
- module Babelfisher
3
+ module Cleaning
4
4
 
5
5
  extend ActiveSupport::Concern
6
6
 
7
- def headers=(value)
8
- @headers = value
9
- end
10
- def headers
11
- @headers ||= data_array.respond_to?(:headers) ? data_array.headers : nil
12
- end
13
- def headers?
14
- headers.present?
15
- end
16
-
17
7
  def cleaned
18
8
  @cleaned
19
9
  end
@@ -31,16 +21,10 @@ module Babelfisher
31
21
  return data if data.kind_of?(Array) && cleaned?
32
22
  # Quandl::Data is already clean, but to avoid errors extract internal array
33
23
  return data.data_array if data.kind_of?(Quandl::Data)
34
- # Quandl::Babelfish::Data is already clean
35
- return data if data.kind_of?(Quandl::Babelfish::Data)
36
24
  # Return empty array if given empty string, nil, etc.
37
25
  return [] if data.blank?
38
26
  # String needs conversion to array
39
- data = Format.csv_to_array( data ) if data.kind_of?(String)
40
- # Hash needs conversion to array
41
- data = Format.hash_to_array( data ) if data.kind_of?(Hash)
42
- # Array needs cleaning
43
- data = Quandl::Babelfish.clean( data )
27
+ data = Format.parse( data )
44
28
  # mark data as clean
45
29
  cleaned!
46
30
  # return data
@@ -9,11 +9,6 @@ module Quandl::Data::Enumerator
9
9
  attr_accessor :pristine_data
10
10
  end
11
11
 
12
- def initialize(*args)
13
- self.pristine_data = args.first
14
- self.attributes = args.extract_options!
15
- end
16
-
17
12
  def data_array
18
13
  @data_array ||= clean( pristine_data )
19
14
  end
@@ -26,20 +21,4 @@ module Quandl::Data::Enumerator
26
21
  @data_array.present?
27
22
  end
28
23
 
29
- def attributes
30
- @attributes ||= {}
31
- end
32
-
33
- def attributes=(attrs)
34
- assign_attributes(attrs)
35
- attributes
36
- end
37
-
38
- # mass assignment protection
39
- def assign_attributes(attrs)
40
- attrs.each do |name, value|
41
- self.send("#{name}=", value) if self.respond_to?("#{name}=")
42
- end
43
- end
44
-
45
24
  end
@@ -185,7 +185,7 @@ class Format
185
185
  row = row.dup
186
186
  row[0] = row[0].to_i
187
187
  # dont allow dates that are before 0000
188
- raise Quandl::Errors::UnknownDateFormat if row[0] <= 1721058
188
+ raise Quandl::Error::UnknownDateFormat if row[0] <= 1721058
189
189
  row
190
190
  end
191
191
 
@@ -196,7 +196,7 @@ class Format
196
196
  # split date into parts
197
197
  date_values = date.split('-').collect(&:to_i)
198
198
  # ensure date is valid
199
- raise Quandl::Errors::UnknownDateFormat unless date_values.count == 3
199
+ raise Quandl::Error::UnknownDateFormat unless date_values.count == 3
200
200
  # add to row
201
201
  row[0] = Date.new( *date_values )
202
202
  row
@@ -207,7 +207,7 @@ class Format
207
207
 
208
208
  def raise_date_format_error!(row, index = 0, type = :none)
209
209
  message = "UnknownDateFormat: '#{row[0]}', index: data[#{index}][0], strategy: '#{type}', row: #{row}"
210
- raise Quandl::Errors::UnknownDateFormat, message
210
+ raise Quandl::Error::UnknownDateFormat, message
211
211
  end
212
212
 
213
213
  end
@@ -1,5 +1,5 @@
1
1
  module Quandl
2
2
  class Data
3
- VERSION = "1.3.0"
3
+ VERSION = "1.3.1"
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Quandl
2
- module Errors
2
+ module Error
3
3
  class UnknownDateFormat < StandardError; end
4
4
  end
5
5
  end
data/quandl_data.gemspec CHANGED
@@ -18,7 +18,6 @@ Gem::Specification.new do |s|
18
18
  s.require_paths = ["lib"]
19
19
 
20
20
  s.add_runtime_dependency "quandl_operation", "~> 0.3.1"
21
- s.add_runtime_dependency "quandl_babelfish", "~> 0.0"
22
21
 
23
22
  s.add_development_dependency "rake", "~> 10.0"
24
23
  s.add_development_dependency "rspec", "~> 2.13"
@@ -71,8 +71,8 @@ describe Quandl::Data::Format do
71
71
  let(:invalid2){ "2012-03-07,,69.75,69.75,69.75,0.0,0.0,0.0\nDate, Column 1, Column 2, C3, C4, C5, C6, C7\n2012-03-06,69.75,69.75,69.75,69.75,0.0,0.0,0.0\n2012-03-05,69.75,69.75,69.75,69.75,0.0,0.0,0.0\n2012-03-04,69.75,69.75,69.75,69.75,0.0,0.0,0.0\n2012-02-29,,69.75,69.75,69.75,0.0,0.0,0.0\n2012-02-28,69.75,69.75,69.75,69.75,0.0,0.0,0.0\n" }
72
72
 
73
73
  [:invalid1, :invalid2].each do |type|
74
- it "#{type} should raise Quandl::Errors::UnknownDateFormat" do
75
- expect { Quandl::Data::Format.parse( self.send(type) ) }.to raise_error Quandl::Errors::UnknownDateFormat
74
+ it "#{type} should raise Quandl::Error::UnknownDateFormat" do
75
+ expect { Quandl::Data::Format.parse( self.send(type) ) }.to raise_error Quandl::Error::UnknownDateFormat
76
76
  end
77
77
  end
78
78
 
@@ -10,16 +10,6 @@ describe Quandl::Data do
10
10
  let(:data){ Quandl::Data.new(csv2) }
11
11
  subject{ data }
12
12
 
13
- describe "#headers" do
14
- subject{ Quandl::Data.new(csv3) }
15
- let(:expectation){ ['Date', 'Column 1', 'Column 2', 'C3', 'C4', 'C5', 'C6', 'C7'] }
16
- its(:headers){ should eq expectation }
17
-
18
- its('clone.headers'){ should eq expectation }
19
- its('to_jd.headers'){ should eq expectation }
20
-
21
- end
22
-
23
13
  describe "#clone" do
24
14
  subject{ data.clone }
25
15
  it{ should be_a Quandl::Data }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quandl_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Hilscher
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.3.1
27
- - !ruby/object:Gem::Dependency
28
- name: quandl_babelfish
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ~>
32
- - !ruby/object:Gem::Version
33
- version: '0.0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ~>
39
- - !ruby/object:Gem::Version
40
- version: '0.0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -154,13 +140,14 @@ files:
154
140
  - Rakefile
155
141
  - UPGRADE.md
156
142
  - lib/quandl/data.rb
157
- - lib/quandl/data/babelfisher.rb
143
+ - lib/quandl/data/attributes.rb
144
+ - lib/quandl/data/cleaning.rb
158
145
  - lib/quandl/data/enumerator.rb
159
146
  - lib/quandl/data/format.rb
160
147
  - lib/quandl/data/logging.rb
161
148
  - lib/quandl/data/operations.rb
162
149
  - lib/quandl/data/version.rb
163
- - lib/quandl/errors/unknown_date_format.rb
150
+ - lib/quandl/error/unknown_date_format.rb
164
151
  - lib/quandl/fabricate.rb
165
152
  - lib/quandl/fabricate/data.rb
166
153
  - quandl_data.gemspec