Class: Quandl::Data::Random

Inherits:
Object
  • Object
show all
Defined in:
lib/quandl/data/random.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Random

Returns a new instance of Random.



18
19
20
# File 'lib/quandl/data/random.rb', line 18

def initialize(*args)
  self.attributes = default_options.merge args.extract_options!
end

Instance Attribute Details

#attributesObject

Returns the value of attribute attributes.



16
17
18
# File 'lib/quandl/data/random.rb', line 16

def attributes
  @attributes
end

#columnsObject

Returns the value of attribute columns.



16
17
18
# File 'lib/quandl/data/random.rb', line 16

def columns
  @columns
end

#dataObject

Returns the value of attribute data.



16
17
18
# File 'lib/quandl/data/random.rb', line 16

def data
  @data
end

#frequencyObject

Returns the value of attribute frequency.



16
17
18
# File 'lib/quandl/data/random.rb', line 16

def frequency
  @frequency
end

#nilsObject

Returns the value of attribute nils.



16
17
18
# File 'lib/quandl/data/random.rb', line 16

def nils
  @nils
end

#offsetObject

Returns the value of attribute offset.



16
17
18
# File 'lib/quandl/data/random.rb', line 16

def offset
  @offset
end

#rowsObject

Returns the value of attribute rows.



16
17
18
# File 'lib/quandl/data/random.rb', line 16

def rows
  @rows
end

Class Method Details

.table(*args) ⇒ Object



10
11
12
# File 'lib/quandl/data/random.rb', line 10

def table(*args)
  new(*args).random
end

Instance Method Details

#assign_attributes(attrs) ⇒ Object

mass assignment protection



92
93
94
95
96
# File 'lib/quandl/data/random.rb', line 92

def assign_attributes(attrs)
  attrs.each do |name, value|
    self.send("#{name}=", value) if self.respond_to?("#{name}=")
  end
end

#date(index) ⇒ Object



47
48
49
# File 'lib/quandl/data/random.rb', line 47

def date(index)
  (Date.today - ( index * ( frequencies[frequency] ) - offset )).jd
end

#default_optionsObject



72
73
74
75
76
77
78
79
80
# File 'lib/quandl/data/random.rb', line 72

def default_options
  {
    offset:     1,
    rows:       20 + rand(100),
    columns:    2 + rand(4),
    frequency:  :daily,
    monkey:     6
  }
end

#frequenciesObject



68
69
70
# File 'lib/quandl/data/random.rb', line 68

def frequencies
  {daily: 1, weekly: 7, monthly: 30, quarterly: 90, annual: 365}
end

#point(row_index, column_index) ⇒ Object



51
52
53
54
55
56
57
58
# File 'lib/quandl/data/random.rb', line 51

def point(row_index, column_index)
  percent = ( (rand(10).to_f / 1000) ) - ( (rand(10).to_f / 850) ) + 1
  # increase the value
  trending_point[column_index] ||= column_index * column_index + 10
  trending_point[column_index] = trending_point[column_index] * percent
  # increase
  nils ? nil : trending_point[column_index]
end

#randomObject



31
32
33
34
35
36
37
38
39
# File 'lib/quandl/data/random.rb', line 31

def random
  data = []
  index = 0
  until data.count >= rows
    data << row(index) unless nils
    index += 1
  end
  Quandl::Data::Table.new( data ).sort_descending
end

#random_columnObject



26
27
28
29
# File 'lib/quandl/data/random.rb', line 26

def random_column
  self.columns = 1
  random
end

#row(index) ⇒ Object



41
42
43
44
45
# File 'lib/quandl/data/random.rb', line 41

def row(index)
  row = [ date(index) ]
  columns.times{|column_index| row << point(index, column_index) }
  row
end

#to_csv(*args) ⇒ Object



22
23
24
# File 'lib/quandl/data/random.rb', line 22

def to_csv(*args)
  data.collect(&:to_csv).join
end


60
61
62
# File 'lib/quandl/data/random.rb', line 60

def trending_point
  @trending_point ||= {}
end