Class: Quandl::Client::Dataset

Inherits:
Base
  • Object
show all
Includes:
Benchmark, Validations
Defined in:
lib/quandl/client/models/dataset.rb,
lib/quandl/client/models/dataset/benchmark.rb,
lib/quandl/client/models/dataset/validations.rb

Defined Under Namespace

Modules: Benchmark, Validations Classes: Data

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Validations

#ambiguous_code_requires_source_code!, #data_columns_should_not_exceed_column_names!, #data_row_count_should_match_column_count!, #data_rows_should_have_equal_columns!, #data_should_be_valid!, #dataset_data_should_be_valid!, #enforce_required_formats, #inherit_errors, #save_dataset_data, #source_code_should_exist!

Methods inherited from Base

her_api, models, models_use_her_api!, url_with_version, use

Class Method Details

.find(value) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/quandl/client/models/dataset.rb', line 18

def find(value)
  # preformat
  value = format_id(value)
  # short-circuit if value is illegal
  return nil unless value.is_a?(Integer) || value.to_s =~ %r{^#{Quandl::Pattern.full_code}$}
  # search
  super(value)
end

.format_id(value) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/quandl/client/models/dataset.rb', line 27

def format_id(value)
  # enforce code formatting
  if value.is_a?(String)
    # strip extra whitespace
    value = value.strip.rstrip
    # ensure slashes are forward facing
    value = value.gsub("\\","/").gsub(".","/")
    # ensure uppercase
    value = value.upcase
  end
  value
end

.touch_existing(id) ⇒ Object



14
15
16
# File 'lib/quandl/client/models/dataset.rb', line 14

def touch_existing(id)
  put(File.join(Quandl::Client::Base.url_with_version, "datasets/#{id}/touch")).exists?
end

Instance Method Details

#code=(v) ⇒ Object



98
99
100
# File 'lib/quandl/client/models/dataset.rb', line 98

def code=(v)
  write_attribute(:code, sanitize_code(v) )
end

#dataObject

DATA



86
87
88
# File 'lib/quandl/client/models/dataset.rb', line 86

def data
  defined?(@data) ? @data : data_scope
end

#data=(value) ⇒ Object



90
91
92
# File 'lib/quandl/client/models/dataset.rb', line 90

def data=(value)
  @data = Quandl::Data.new(value).sort_descending
end

#data?Boolean

Returns:

  • (Boolean)


94
95
96
# File 'lib/quandl/client/models/dataset.rb', line 94

def data?
  @data.is_a?(Quandl::Data)
end

#data_scopeObject



126
127
128
# File 'lib/quandl/client/models/dataset.rb', line 126

def data_scope
  @data_scope ||= Quandl::Client::Dataset::Data.with_id(id)
end

#dataset_dataObject



130
131
132
# File 'lib/quandl/client/models/dataset.rb', line 130

def dataset_data
  @dataset_data ||= Quandl::Client::Dataset::Data.new( id: id )
end

#dataset_data?Boolean

Returns:

  • (Boolean)


134
135
136
# File 'lib/quandl/client/models/dataset.rb', line 134

def dataset_data?
  @dataset_data.is_a?(Quandl::Client::Dataset::Data)
end

#delete_dataObject



110
111
112
113
114
115
# File 'lib/quandl/client/models/dataset.rb', line 110

def delete_data
  # cant delete unsaved records
  return false if new_record?
  # delete and return success / failure
  self.class.destroy_existing("#{id}/data").saved?
end

#delete_rows(*dates) ⇒ Object



117
118
119
120
121
122
123
124
# File 'lib/quandl/client/models/dataset.rb', line 117

def delete_rows(*dates)
  # cant delete unsaved records
  return false if new_record?
  # collect dates
  query = { dates: Array(dates).flatten }.to_query
  # delete and return success / failure
  self.class.destroy_existing("#{id}/data/rows?#{query}").saved?
end

#full_codeObject



80
81
82
# File 'lib/quandl/client/models/dataset.rb', line 80

def full_code
  File.join(self.source_code.to_s, self.code.to_s)
end

#full_urlObject



76
77
78
# File 'lib/quandl/client/models/dataset.rb', line 76

def full_url
  File.join(Quandl::Client::Base.url.gsub(/api\/?/, ''), full_code)
end

#reference_urlObject



68
69
70
# File 'lib/quandl/client/models/dataset.rb', line 68

def reference_url
  self.display_url
end

#reference_url=(value) ⇒ Object



71
72
73
74
# File 'lib/quandl/client/models/dataset.rb', line 71

def reference_url=(value)
  value = "http://#{value}" if value.present? && !(value =~ /:\/\//)
  self.display_url = value
end

#reloadObject



138
139
140
141
142
# File 'lib/quandl/client/models/dataset.rb', line 138

def reload
  @dataset_data = nil
  @data_scope = nil
  @full_code = nil
end

#sanitize_code(code) ⇒ Object



106
107
108
# File 'lib/quandl/client/models/dataset.rb', line 106

def sanitize_code(code)
  code.to_s.upcase.gsub(',','')
end

#sourceObject

ASSOCIATIONS #



51
52
53
# File 'lib/quandl/client/models/dataset.rb', line 51

def source
  @source ||= Quandl::Client::Source.find(self.source_code)
end

#source_code=(v) ⇒ Object



102
103
104
# File 'lib/quandl/client/models/dataset.rb', line 102

def source_code=(v)
  write_attribute(:source_code, sanitize_code(v) )
end