class DummyVariables::Calendar
Attributes
dates[R]
Public Class Methods
new(start_date, end_date, date_format="%Y-%m-%d", config_data: {}, config_file: "")
click to toggle source
# 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
Public Instance Methods
to_csv_str(columns=nil, encoding: "Shift_JIS", options: {})
click to toggle source
# 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
Private Instance Methods
load_config_file(config_file)
click to toggle source
# File lib/dummy_variables/calendar.rb, line 35 def load_config_file(config_file) begin case File.extname(config_file) when ".yml", ".yaml" YAML.load_file(config_file) when ".json" File.open(config_file) { |file| JSON.load(file) } else raise "configuration file needs to be formatted as JSON or YAML" end rescue => e p e.message; {} end end