class Holidays::Definition::Generator::Module

Public Instance Methods

call(module_name, files, regions, month_strings, custom_methods) click to toggle source
# File lib/holidays/definition/generator/module.rb, line 7
        def call(module_name, files, regions, month_strings, custom_methods)
          raise ArgumentError.new("module name cannot be nil") if module_name.nil?
          raise ArgumentError.new("module name cannot be blank") if module_name.empty?

          raise ArgumentError.new("files cannot be nil") if files.nil?
          raise ArgumentError.new("files cannot be empty") if files.empty?
          raise ArgumentError.new("files must all be strings") unless files.all? { |f| f.is_a?(String) }

          raise ArgumentError.new("regions cannot be nil") if regions.nil?
          raise ArgumentError.new("regions cannot be empty") if regions.empty?

          raise ArgumentError.new("month strings cannot be nil") if month_strings.nil?
          raise ArgumentError.new("month strings cannot be empty") if month_strings.empty?

          module_src =<<-EOM

module Holidays
  # This file is generated by the Ruby Holidays gem.
  #
  # Definitions loaded: #{files.join(', ')}
  #
  # All the definitions are available at https://github.com/holidays/holidays
  module #{module_name.to_s.upcase} # :nodoc:
    def self.defined_regions
      [:#{regions.join(', :')}]
    end

    def self.holidays_by_month
      {
          #{month_strings.join(",\n")}
      }
    end

    def self.custom_methods
      {
          #{custom_methods}
      }
    end
  end
end
          EOM

          module_src
        end