quandl_data 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +0 -1
- data/UPGRADE.md +7 -0
- data/lib/quandl/data.rb +5 -4
- data/lib/quandl/data/attributes.rb +51 -0
- data/lib/quandl/data/{babelfisher.rb → cleaning.rb} +2 -18
- data/lib/quandl/data/enumerator.rb +0 -21
- data/lib/quandl/data/format.rb +3 -3
- data/lib/quandl/data/version.rb +1 -1
- data/lib/quandl/{errors → error}/unknown_date_format.rb +1 -1
- data/quandl_data.gemspec +0 -1
- data/spec/lib/quandl/data/format_spec.rb +2 -2
- data/spec/lib/quandl/data_spec.rb +0 -10
- metadata +4 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94ac5c5c76af7dbfef791ad7aacf52abfea27db2
|
4
|
+
data.tar.gz: 5edaf32984dd620b88f44a3cfb8a7ee04c649e9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c149657dabceec4bb7864aafc533bf77482d171625a5290f3788073665994b6a0c42850aa2a72c4dc6bdfc18c0b8bc0ffe40041e328b2bcb30fcdf679874eaaf
|
7
|
+
data.tar.gz: c505d9aa00e19436832d2521a12bfed8fdc6447e9de495ec35394e3babefa3709d66c92e17b14d378f156a369696be54ee597f7b31b30816b78e797d409fa71c
|
data/Gemfile
CHANGED
data/UPGRADE.md
CHANGED
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/
|
10
|
+
require 'quandl/error/unknown_date_format'
|
12
11
|
|
13
|
-
require 'quandl/data/
|
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
|
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
|
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.
|
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
|
data/lib/quandl/data/format.rb
CHANGED
@@ -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::
|
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::
|
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::
|
210
|
+
raise Quandl::Error::UnknownDateFormat, message
|
211
211
|
end
|
212
212
|
|
213
213
|
end
|
data/lib/quandl/data/version.rb
CHANGED
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::
|
75
|
-
expect { Quandl::Data::Format.parse( self.send(type) ) }.to raise_error Quandl::
|
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.
|
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/
|
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/
|
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
|