Module: Feriados::Rules

Included in:
Loader
Defined in:
lib/feriados/rules.rb,
lib/feriados/rules/easter.rb,
lib/feriados/rules/fix_date.rb,
lib/feriados/rules/function.rb,
lib/feriados/rules/rule_base.rb,
lib/feriados/rules/day_of_week.rb,
lib/feriados/rules/holy_friday.rb,
lib/feriados/rules/day_of_month.rb,
lib/feriados/rules/fix_week_day.rb,
lib/feriados/rules/holy_thursday.rb,
lib/feriados/rules/carnival_monday.rb,
lib/feriados/rules/carnival_tuesday.rb

Defined Under Namespace

Classes: CarnivalMonday, CarnivalTuesday, DayOfMonth, DayOfWeek, Easter, FixDate, FixWeekDay, Function, HolyFriday, HolyThursday, Rule, RuleBase

Class Method Summary collapse

Class Method Details

.create_with(data) ⇒ Object

Raises:



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/feriados/rules.rb', line 57

def self.create_with(data)
  rule = Rule.new(data)
  return DayOfMonth.new(rule.day, rule.month, rule.name) if rule.day_of_month?
  return FixWeekDay.new(rule.week, rule.day, rule.month, rule.name) if rule.week_day?
  return FixDate.new(rule.year, rule.month, rule.day, rule.name) if rule.fix_date?

  raise ArgumentError, "Argument #{rule} is not a valid rule" unless rule.function?

  function_name = rule.function_name
  class_name = "Feriados::Rules::#{function_name}".split('::')
  klass = class_name.inject(Object) { |obj, const| obj.const_get(const) }
  klass.name = rule.name

  klass
end