quandl_data 1.1.4 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/Gemfile +7 -0
- data/UPGRADE.md +5 -0
- data/lib/quandl/data/enumerator.rb +8 -0
- data/lib/quandl/data/operations.rb +42 -59
- data/lib/quandl/data/version.rb +1 -1
- data/lib/quandl/fabricate/data.rb +1 -1
- data/quandl_data.gemspec +1 -1
- data/spec/lib/fabricate/data_spec.rb +1 -1
- data/spec/lib/quandl/data/enumerator_spec.rb +5 -0
- data/spec/lib/quandl/data/operations_spec.rb +20 -8
- data/spec/lib/quandl/data_spec.rb +48 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 531239319943ec14302a42ec95e37051f12245b1
|
4
|
+
data.tar.gz: c39862a0af85567a8ebf362d72e788ad4985ef7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a15374a806251b64c00a543bffc1fbcc4c097f6e2276a547c04f628e0f02bd223a89507a16d5c191f454b53c240fec1fff79bc9e8f68967b14ef98013aa7675
|
7
|
+
data.tar.gz: 6607ba39d562621fa5df10156142724669bfa72574260eb2bbf038ebd5db448764b3045300f07cf47618605c79c18cd1f8bd24dee94a0b67aaee48bdd7706b1e
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/UPGRADE.md
CHANGED
@@ -10,10 +10,8 @@ module Quandl::Data::Operations
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def operations
|
13
|
-
[
|
14
|
-
:
|
15
|
-
:sort_descending, :transform, :collapse, :frequency, :parse
|
16
|
-
]
|
13
|
+
[ :to_csv, :to_jd, :to_date, :sort_order, :sort_ascending,
|
14
|
+
:sort_descending, :transform, :collapse, :frequency, :parse ]
|
17
15
|
end
|
18
16
|
|
19
17
|
end
|
@@ -32,64 +30,38 @@ module Quandl::Data::Operations
|
|
32
30
|
return ''
|
33
31
|
end
|
34
32
|
|
35
|
-
def to_jd
|
36
|
-
Quandl::Data.new( Parse.date_to_julian( data_array ), frequency: frequency )
|
37
|
-
end
|
38
33
|
def to_jd!
|
39
|
-
@data_array = Parse.
|
40
|
-
self
|
34
|
+
@data_array = Parse.to_jd( data_array ); self
|
41
35
|
end
|
42
|
-
|
36
|
+
|
43
37
|
def to_date!
|
44
|
-
@data_array = to_date
|
45
|
-
self
|
46
|
-
end
|
47
|
-
def to_date
|
48
|
-
Quandl::Data.new( Parse.julian_to_date( data_array ) )
|
38
|
+
@data_array = Parse.to_date( data_array ); self
|
49
39
|
end
|
50
40
|
|
51
|
-
def trim_start!(
|
52
|
-
@data_array = trim_start(trim_date).data_array
|
53
|
-
self
|
54
|
-
end
|
55
|
-
def trim_start(trim_date)
|
41
|
+
def trim_start!(date)
|
56
42
|
# date format
|
57
|
-
|
58
|
-
trim_date = trim_date.jd if trim_date.respond_to?(:jd)
|
59
|
-
# find index
|
60
|
-
return self unless trim_date.is_a?(Integer)
|
43
|
+
date = Quandl::Operation::QDate.parse(date)
|
61
44
|
# reject rows with dates less than
|
62
|
-
|
45
|
+
@data_array = to_date!.sort_descending!.delete_if do |row|
|
63
46
|
row_date = row[0]
|
64
|
-
row_date <
|
47
|
+
row_date < date
|
65
48
|
end
|
66
|
-
Quandl::Data.new(data)
|
67
|
-
end
|
68
|
-
|
69
|
-
def trim_end!(trim_date)
|
70
|
-
@data_array = trim_end(trim_date).data_array
|
71
49
|
self
|
72
50
|
end
|
73
|
-
|
51
|
+
|
52
|
+
def trim_end!(date)
|
74
53
|
# date format
|
75
|
-
|
76
|
-
trim_date = trim_date.jd if trim_date.respond_to?(:jd)
|
77
|
-
# find index
|
78
|
-
return self unless trim_date.is_a?(Integer)
|
54
|
+
date = Quandl::Operation::QDate.parse(date)
|
79
55
|
# reject rows with dates less than
|
80
|
-
|
56
|
+
@data_array = to_date!.sort_descending!.delete_if do |row|
|
81
57
|
row_date = row[0]
|
82
|
-
row_date >
|
58
|
+
row_date > date
|
83
59
|
end
|
84
|
-
|
60
|
+
self
|
85
61
|
end
|
86
62
|
|
87
63
|
def limit!(amount)
|
88
|
-
@data_array =
|
89
|
-
self
|
90
|
-
end
|
91
|
-
def limit(amount)
|
92
|
-
Quandl::Data.new( data_array[0..( amount.to_i - 1 )] )
|
64
|
+
@data_array = data_array[0..( amount.to_i - 1 )]; self
|
93
65
|
end
|
94
66
|
|
95
67
|
def sort_order(dir)
|
@@ -97,19 +69,11 @@ module Quandl::Data::Operations
|
|
97
69
|
end
|
98
70
|
|
99
71
|
def sort_ascending!
|
100
|
-
@data_array =
|
101
|
-
self
|
102
|
-
end
|
103
|
-
def sort_ascending
|
104
|
-
Quandl::Data.new( Parse.sort( data_array.dup, :asc ), frequency: frequency )
|
72
|
+
@data_array = Parse.sort_asc( data_array ); self
|
105
73
|
end
|
106
74
|
|
107
75
|
def sort_descending!
|
108
|
-
@data_array =
|
109
|
-
self
|
110
|
-
end
|
111
|
-
def sort_descending
|
112
|
-
Quandl::Data.new( Parse.sort( data_array.dup, :desc ), frequency: frequency )
|
76
|
+
@data_array = Parse.sort_desc( data_array ); self
|
113
77
|
end
|
114
78
|
|
115
79
|
def transform(*args)
|
@@ -139,13 +103,32 @@ module Quandl::Data::Operations
|
|
139
103
|
@frequency ||= Collapse.frequency?( data_array )
|
140
104
|
end
|
141
105
|
def frequency=(value)
|
142
|
-
@frequency = value.to_sym
|
106
|
+
@frequency = value.to_sym if value.present?
|
143
107
|
end
|
144
108
|
|
145
|
-
def
|
146
|
-
|
147
|
-
data = Parse.perform( data )
|
148
|
-
data
|
109
|
+
def clone
|
110
|
+
Quandl::Data.new( data_array.dup )
|
149
111
|
end
|
150
112
|
|
113
|
+
def to_jd
|
114
|
+
clone.to_jd!
|
115
|
+
end
|
116
|
+
def to_date
|
117
|
+
clone.to_date!
|
118
|
+
end
|
119
|
+
def trim_start(date)
|
120
|
+
clone.trim_start!(date)
|
121
|
+
end
|
122
|
+
def trim_end(date)
|
123
|
+
clone.trim_end!(date)
|
124
|
+
end
|
125
|
+
def limit(amount)
|
126
|
+
clone.limit!(amount)
|
127
|
+
end
|
128
|
+
def sort_ascending
|
129
|
+
clone.sort_ascending!
|
130
|
+
end
|
131
|
+
def sort_descending
|
132
|
+
clone.sort_descending!
|
133
|
+
end
|
151
134
|
end
|
data/lib/quandl/data/version.rb
CHANGED
data/quandl_data.gemspec
CHANGED
@@ -24,6 +24,11 @@ describe Quandl::Data::Enumerator do
|
|
24
24
|
}
|
25
25
|
subject{ Quandl::Data.new(raw.clone) }
|
26
26
|
|
27
|
+
it "subject.to_jd.first.first" do
|
28
|
+
# binding.pry if date_format == nil && format == :to_csv
|
29
|
+
puts subject.to_jd.first.first
|
30
|
+
end
|
31
|
+
|
27
32
|
its('to_jd.first.first'){ should be_a Integer }
|
28
33
|
its('to_date.first.first'){ should be_a Date }
|
29
34
|
|
@@ -54,12 +54,12 @@ describe Quandl::Data::Operations do
|
|
54
54
|
subject.transform(:rdiff).first[1].should_not eq value
|
55
55
|
end
|
56
56
|
it "should rdiff_from" do
|
57
|
-
data = Quandl::Data.new([[
|
58
|
-
data.transform(:rdiff_from).should eq [[
|
57
|
+
data = Quandl::Data.new([[2456624,3,5],[2456625,5,4],[2456626,15,20]])
|
58
|
+
data.transform(:rdiff_from).to_jd.should eq [[2456624,4,3],[2456625,2,4],[2456626,0,0]]
|
59
59
|
end
|
60
60
|
it "should cumul" do
|
61
|
-
data = Quandl::Data.new( [[
|
62
|
-
data.transform(:cumul).should eq [[
|
61
|
+
data = Quandl::Data.new( [[2456624, 10], [2456625, 20], [2456626, 30]] )
|
62
|
+
data.transform(:cumul).to_jd.should eq [[2456624, 10], [2456625, 30], [2456626, 60]]
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
@@ -79,7 +79,7 @@ describe Quandl::Data::Operations do
|
|
79
79
|
|
80
80
|
describe "#as_json" do
|
81
81
|
it "should be a representation of data_array" do
|
82
|
-
subject.as_json.should eq subject.data_array
|
82
|
+
subject.as_json.should eq subject.data_array.as_json
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
@@ -137,9 +137,21 @@ describe Quandl::Data::Operations do
|
|
137
137
|
|
138
138
|
its(:to_csv){ should be_a String }
|
139
139
|
|
140
|
-
it "should output csv that is consistent with subject" do
|
141
|
-
|
142
|
-
data.
|
140
|
+
it "should output jd csv that is consistent with subject" do
|
141
|
+
expected_data = subject.to_jd
|
142
|
+
data = CSV.parse( expected_data.to_csv ).collect{|r| r.collect{|v| v.to_f } }
|
143
|
+
data.should eq expected_data
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should output date csv that is consistent with subject" do
|
147
|
+
expected_data = subject.to_date
|
148
|
+
data = CSV.parse( expected_data.to_csv ).collect{|r|
|
149
|
+
date = Date.parse(r[0])
|
150
|
+
row = r[1..-1].collect{|v| v.to_f }
|
151
|
+
row.unshift(date)
|
152
|
+
row
|
153
|
+
}
|
154
|
+
data.should eq expected_data
|
143
155
|
end
|
144
156
|
|
145
157
|
it "should output csv when initialized with a Quandl::Data" do
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Quandl::Data do
|
5
|
+
|
6
|
+
let(:csv1){"2012-12-31,20.0,10.0,35.0,35.0,20.0,28.0,30.0,25.0,0.0,0.0,27.5,25.0,18.0,33.99,0.0,25.0,0.0,10.0,22.0,34.0,10.0,20.0,26.0,0.0,18.5,25.0,33.0,30.0,20.0,27.5,10.0,19.0,25.0,29.0,23.0,25.0,21.0,30.0,28.0,24.5,33.33,0.0,29.48,10.0,20.0,31.0,0.0,35.0,16.5,19.0,20.0,32.45,25.0,12.5,0.0,25.0,31.4,33.33,38.01,0.0,14.0,20.0,30.0,24.2,15.0,15.0,20.0,12.5,15.0,28.8,12.0,10.0,30.0,25.0,35.0,15.0,30.0,9.0,32.0,34.0,25.0,28.0,30.0,28.0,12.0,35.0,25.0,30.0,10.0,30.0,30.0,19.0,25.0,10.0,16.0,20.0,0.0,27.0,20.0,10.0,17.0,19.0,18.0,34.55,30.0,28.0,0.0,34.5,35.0,26.3,21.17,28.0,17.0,30.0,23.0,25.0,30.0,20.0,30.0,21.0,55.0,24.0,40.0,25.0,0.0,34.0,25.0,20.0,35.0,25.75,29.02,33.0,22.89,20.5,28.3,28.6,22.6,25.25,24.43\n2011-12-31,20.0,10.0,35.0,35.0,20.0,28.0,30.0,25.0,0.0,0.0,27.5,25.0,24.0,33.99,0.0,0.0,0.0,10.0,22.0,34.0,10.0,20.0,28.0,0.0,20.0,25.0,33.0,30.0,20.0,34.5,10.0,19.0,25.0,29.0,24.0,20.0,21.0,0.0,28.0,26.0,33.33,0.0,29.37,10.0,20.0,31.0,0.0,35.0,16.5,19.0,20.0,32.44,25.0,12.5,0.0,24.0,31.4,33.33,40.69,0.0,14.0,20.0,0.0,22.0,15.0,15.0,20.0,12.5,15.0,28.8,12.0,10.0,0.0,25.0,35.0,15.0,30.0,9.0,32.0,34.0,25.0,28.0,30.0,28.0,12.0,35.0,25.0,30.0,10.0,30.0,30.0,19.0,25.0,10.0,16.0,20.0,0.0,27.0,20.0,10.0,17.0,19.0,20.0,34.55,30.0,28.0,0.0,34.5,35.0,26.3,21.17,28.0,17.0,30.0,30.0,0.0,30.0,20.0,30.0,25.0,55.0,26.0,40.0,25.0,0.0,34.0,25.0,20.0,35.0,25.75,28.55,34.0,23.1,20.88,29.02,28.6,22.8,25.5,24.52\n2010-12-31,20.0,10.0,35.0,35.0,20.0,28.0,30.0,25.0,0.0,0.0,27.5,25.0,24.0,33.99,0.0,25.0,0.0,10.0,25.0,34.0,10.0,20.0,31.0,0.0,17.0,25.0,33.0,30.0,20.0,0.0,10.0,19.0,25.0,25.0,25.0,20.0,21.0,0.0,28.0,26.0,33.33,0.0,29.41,22.0,24.0,31.0,0.0,25.0,16.5,19.0,18.0,33.99,25.0,12.5,0.0,25.0,31.4,33.33,40.69,0.0,14.0,20.0,0.0,24.2,15.0,15.0,40.0,0.0,15.0,28.59,12.0,10.0,0.0,25.0,35.0,15.0,30.0,9.0,32.0,0.0,25.5,30.0,30.0,28.0,12.0,35.0,27.5,30.0,10.0,30.0,30.0,19.0,25.0,10.0,16.0,20.0,0.0,27.0,20.0,10.0,17.0,19.0,20.0,34.55,30.0,35.0,0.0,0.0,15.0,26.3,21.17,28.0,17.0,30.0,30.0,0.0,30.0,20.0,30.0,25.0,55.0,28.0,40.0,25.0,0.0,34.0,25.0,35.0,35.0,25.75,28.38,35.5,23.96,21.52,27.52,29.0,23.04,25.79,24.71\n2009-12-31,20.0,10.0,35.0,35.0,20.0,28.0,30.0,25.0,0.0,0.0,27.5,25.0,24.0,33.99,0.0,0.0,0.0,10.0,25.0,34.0,10.0,0.0,33.0,0.0,17.0,25.0,33.0,30.0,20.0,0.0,10.0,20.0,25.0,25.0,25.0,20.0,21.0,0.0,29.0,26.0,33.33,0.0,29.44,27.0,25.0,31.0,0.0,30.0,16.5,16.0,15.0,33.99,28.0,12.5,0.0,26.0,31.4,33.33,40.69,0.0,25.0,20.0,0.0,24.2,15.0,15.0,40.0,0.0,20.0,28.59,12.0,10.0,0.0,25.0,35.0,15.0,28.0,9.0,32.0,0.0,25.5,30.0,30.0,28.0,12.0,35.0,30.0,30.0,10.0,30.0,30.0,19.0,25.0,35.0,16.0,20.0,0.0,27.0,20.0,10.0,18.0,19.0,21.0,34.55,30.0,35.0,0.0,0.0,15.0,26.3,21.17,28.0,25.0,30.0,30.0,0.0,30.0,20.0,30.0,25.0,55.0,28.0,40.0,25.0,0.0,34.0,25.0,35.0,35.0,30.9,28.75,36.5,25.73,21.7,27.96,29.2,23.22,25.73,25.4\n2008-12-31,20.0,10.0,35.0,35.0,20.0,28.0,30.0,25.0,0.0,0.0,30.0,25.0,24.0,33.99,0.0,0.0,0.0,10.0,25.0,34.0,10.0,0.0,33.5,0.0,17.0,25.0,33.0,30.0,20.0,0.0,10.0,21.0,25.0,25.0,25.0,20.0,21.0,0.0,31.0,26.0,33.33,0.0,29.51,33.0,25.0,31.0,0.0,30.0,16.5,16.0,15.0,33.99,30.0,12.5,0.0,27.0,31.4,33.33,40.69,0.0,25.0,30.0,0.0,27.5,55.0,15.0,40.0,0.0,15.0,29.63,12.0,10.0,0.0,26.0,35.0,15.0,28.0,9.0,32.0,0.0,25.5,30.0,30.0,28.0,12.0,35.0,30.0,30.0,10.0,30.0,35.0,19.0,25.0,35.0,16.0,24.0,0.0,27.0,20.0,10.0,18.0,19.0,22.0,34.55,30.0,35.0,0.0,0.0,15.0,28.0,21.17,28.0,25.0,0.0,30.0,0.0,30.0,20.0,30.0,25.0,55.0,30.0,40.0,25.0,0.0,34.0,28.0,35.0,35.0,30.9,28.65,36.75,27.99,22.0,27.96,29.6,23.29,26.08,26.12\n2007-12-31,20.0,20.0,35.0,35.0,20.0,28.0,30.0,25.0,0.0,0.0,30.0,25.0,24.0,33.99,0.0,0.0,0.0,10.0,25.0,34.0,10.0,0.0,36.1,0.0,17.0,33.0,34.0,30.0,20.0,0.0,10.0,24.0,25.0,25.0,25.0,20.0,22.0,0.0,31.0,26.0,33.33,0.0,38.36,35.0,25.0,31.0,0.0,30.0,17.5,16.0,18.0,33.99,30.0,12.5,0.0,29.0,37.25,33.33,40.69,0.0,25.0,30.0,0.0,27.5,55.0,15.0,40.0,0.0,15.0,29.63,12.0,12.0,0.0,27.0,35.0,22.5,28.0,9.0,32.0,0.0,25.5,33.0,30.0,28.0,12.0,35.0,30.0,30.0,10.0,30.0,35.0,19.0,25.0,35.0,16.0,24.0,0.0,27.0,20.0,10.0,20.0,19.0,23.0,36.89,32.5,35.0,0.0,0.0,30.0,28.0,21.32,28.0,25.0,0.0,30.0,0.0,30.0,20.0,30.0,25.0,55.0,30.0,40.0,30.0,0.0,34.0,28.0,35.0,35.0,30.9,30.56,38.05,28.46,23.01,28.3,30.2,24.11,27.08,26.96\n"}
|
7
|
+
let(:csv2) { "2012-03-07,,69.75,69.75,69.75,0.0,0.0,0.0\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" }
|
8
|
+
let(:csv3) { "Date, Column 1, Column 2, C3, C4, C5, C6, C7\n 2012-03-07,,69.75,69.75,69.75,0.0,0.0,0.0\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" }
|
9
|
+
|
10
|
+
let(:data){ Quandl::Data.new(csv2) }
|
11
|
+
subject{ data }
|
12
|
+
|
13
|
+
describe "#clone" do
|
14
|
+
subject{ data.clone }
|
15
|
+
it{ should be_a Quandl::Data }
|
16
|
+
it "should not alter original data" do
|
17
|
+
subject.collapse(:annual).to_a.should_not eq data.to_a
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "csv" do
|
22
|
+
[:csv1, :csv2].each do |csv|
|
23
|
+
|
24
|
+
let(:data){ Quandl::Data.new( self.send(csv) ) }
|
25
|
+
subject{ data }
|
26
|
+
|
27
|
+
it "should have Float data" do
|
28
|
+
data.to_h.each do |date, values|
|
29
|
+
values.each do |value|
|
30
|
+
next if value.nil?
|
31
|
+
value.should be_a Float
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
it "csv3 should raise Quandl::Operation::Errors::UnknownDateFormat" do
|
39
|
+
expect { Quandl::Data.new( csv3 ).to_jd }.to raise_error Quandl::Operation::Errors::UnknownDateFormat
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
[:to_jd, :sort_ascending, :sort_descending].each do |o1|
|
44
|
+
its("to_jd.#{o1}!"){ should_not eq subject }
|
45
|
+
its("#{o1}!"){ should eq subject }
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quandl_data
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Blake Hilscher
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -128,14 +128,14 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '0.
|
131
|
+
version: '0.2'
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - ~>
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '0.
|
138
|
+
version: '0.2'
|
139
139
|
description: Data will be interfaced
|
140
140
|
email:
|
141
141
|
- blake@hilscher.ca
|
@@ -164,6 +164,7 @@ files:
|
|
164
164
|
- spec/lib/fabricate/data_spec.rb
|
165
165
|
- spec/lib/quandl/data/enumerator_spec.rb
|
166
166
|
- spec/lib/quandl/data/operations_spec.rb
|
167
|
+
- spec/lib/quandl/data_spec.rb
|
167
168
|
- spec/spec_helper.rb
|
168
169
|
homepage: http://blake.hilscher.ca/
|
169
170
|
licenses:
|
@@ -193,4 +194,5 @@ test_files:
|
|
193
194
|
- spec/lib/fabricate/data_spec.rb
|
194
195
|
- spec/lib/quandl/data/enumerator_spec.rb
|
195
196
|
- spec/lib/quandl/data/operations_spec.rb
|
197
|
+
- spec/lib/quandl/data_spec.rb
|
196
198
|
- spec/spec_helper.rb
|