Module: Quandl::Data::Cleaning

Extended by:
ActiveSupport::Concern
Included in:
Quandl::Data
Defined in:
lib/quandl/data/cleaning.rb

Instance Method Summary collapse

Instance Method Details

#clean(data) ⇒ Object (protected)



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/quandl/data/cleaning.rb', line 9

def clean(data)
  data = data.dup if data.is_a?(Array) &&data.respond_to?(:dup)
  # check if data is dirty
  requires_cleaning = ensure_data_requires_cleaning(data)
  # short ciruit unless data is dirty
  return requires_cleaning unless requires_cleaning == true
  # ensure we're dealing with an array
  data = ensure_data_is_an_array(data)
  # clean with either format or babelfish
  known_format?( data ) ? clean_with_format(data) : clean_with_babelfish(data)
end

#clean_with_babelfish(data) ⇒ Object (protected)



48
49
50
51
52
# File 'lib/quandl/data/cleaning.rb', line 48

def clean_with_babelfish(data)
  data, self.headers = Quandl::Babelfish.clean(data)
  cleaned!
  data
end

#clean_with_format(data) ⇒ Object (protected)



42
43
44
45
46
# File 'lib/quandl/data/cleaning.rb', line 42

def clean_with_format(data)
  data = Format.parse( data )
  cleaned!
  data
end

#cleaned!Object (protected)



54
55
56
# File 'lib/quandl/data/cleaning.rb', line 54

def cleaned!
  self.cleaned = true
end

#ensure_data_is_an_array(data) ⇒ Object (protected)



30
31
32
33
34
35
36
# File 'lib/quandl/data/cleaning.rb', line 30

def ensure_data_is_an_array(data)
  # Hash needs conversion to array
  data = Quandl::Data::Format.hash_to_array( data )
  # String needs conversion to array
  data = Quandl::Data::Format.csv_to_array( data )
  data
end

#ensure_data_requires_cleaning(data) ⇒ Object (protected)



21
22
23
24
25
26
27
28
# File 'lib/quandl/data/cleaning.rb', line 21

def ensure_data_requires_cleaning(data)
  # skip cleaning if already clean
  return data if data.kind_of?(Array) && cleaned?
  # Return empty array if given empty string, nil, etc.
  return [] if data.blank?
  # data requires cleaning
  true
end

#known_format?(data) ⇒ Boolean (protected)

Returns:

  • (Boolean)


38
39
40
# File 'lib/quandl/data/cleaning.rb', line 38

def known_format?( data )
  Format.recognized_date?( data[0][0] )
end