Class: Indicators::Helper

Inherits:
Object
  • Object
show all
Defined in:
lib/indicators/calculations/helper.rb

Overview

Main helper methods

Defined Under Namespace

Classes: HelperException

Class Method Summary collapse

Class Method Details

.get_parameters(parameters, i = 0, default = 0) ⇒ Object

Indicators::Helper.get_parameters([12, 1, 1], 0, 15)



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/indicators/calculations/helper.rb', line 23

def self.get_parameters parameters, i=0, default=0

  # Single parameter is to choose from.
  if parameters.is_a?(Integer) || parameters.is_a?(NilClass)

    # Set all other to default if only one integer is given instead of an array.
    return default if i != 0

    # Check if no parameters are specified at all, if so => set to default.
    # Parameters 15, 0, 0 are equal to 15 or 15, nil, nil.
    if parameters == nil || parameters == 0
      if default != 0
        return default
      else
        raise HelperException, 'There were no parameters specified and there is no default for it.'
      end
    else
      return parameters
    end
  # Multiple parameters to choose from.
  elsif parameters.is_a?(Array)
    # In case array is given not like [1, 2] but like this ["1", "2"]. This usually happens when getting data from input forms.
    parameters = parameters.map(&:to_i)
    if parameters[i] == nil || parameters[i] == 0
      if default != 0
        return default
      else
        raise HelperException, 'There were no parameters specified and there is no default for it.'
      end
    else
      return parameters[i]
    end
  else
    raise HelperException, 'Parameters have to be a integer, an array or nil.'
  end

end

.validate_data(data, column, parameters) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/indicators/calculations/helper.rb', line 8

def self.validate_data data, column, parameters
  # If this is a hash, choose which column of values to use for calculations.
  if data.is_a?(Hash)
    valid_data = data[column]
  else
    valid_data = data
  end

  if valid_data.length < parameters
    raise HelperException, "Data point length (#{valid_data.length}) must be greater than or equal to the required indicator periods (#{parameters})."
  end
  return valid_data
end