Class: DummyVariables::Calendar

Inherits:
Object
  • Object
show all
Defined in:
lib/dummy_variables/calendar.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(start_date, end_date, date_format = "%Y-%m-%d", config_data: {}, config_file: "") ⇒ Calendar

Returns a new instance of Calendar.



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/dummy_variables/calendar.rb', line 12

def initialize(start_date, end_date, date_format="%Y-%m-%d", config_data: {}, config_file: "")
  custom_dates = config_file.to_s.empty? ? {} : load_config_file(config_file)
  custom_dates.deep_merge! config_data if config_data.is_a?(Hash)
  @dates = (Date.parse(start_date)..Date.parse(end_date)).map do |date|
    vars = {}
    custom_dates.each do |k, v|
      next unless v.key? "dates"
      vars[k] = v["dates"].map { |d| d.is_a?(Date) ? d : Date.parse(d) }.include?(date) ? 1 : 0
    end
    DummyVariables::DataDate.new(date.strftime(date_format), vars)
  end
end

Instance Attribute Details

#datesObject (readonly)

Returns the value of attribute dates.



10
11
12
# File 'lib/dummy_variables/calendar.rb', line 10

def dates
  @dates
end

Instance Method Details

#to_csv_str(columns = nil, encoding: "Shift_JIS", options: {}) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/dummy_variables/calendar.rb', line 25

def to_csv_str(columns=nil, encoding: "Shift_JIS", options: {})
  options[:headers] = @dates.size == 0 ? [] : @dates[0].to_hash(columns).keys
  options[:write_headers] = true unless options.key?(:write_headers)
  CSV.generate(options) { |csv|
    @dates.each { |data_date| csv << data_date.to_hash(columns).values }
  }.encode(encoding, invalid: :replace, undef: :replace)
end