Module: WrapIt::Enums::ClassMethods

Defined in:
lib/wrap_it/enums.rb

Overview

Class methods to include

Instance Method Summary collapse

Instance Method Details

#enum(name, values, opts = {}) {|value| ... } ⇒ void

This method returns an undefined value.

Adds ‘enum`. When element created, creation arguments will be scanned for `Symbol`, that included contains in `values`. If it founded, enum takes this value. Also creation options inspected. If its contains `name: value` key-value pair with valid value, this pair removed from options and enum takes this value.

If you set ‘html_class` option to `true`, with each enum change, HTML class, composed from `html_class_prefix` and enum `value` will be added to element. If you want to override this prefix, specify it with `html_class_prefix` option. By default, enum changes are not affected to html classes.

This method also adds getter and setter for this enum.

Parameters:

  • name (String, Symbol)

    Enum name. Converted to ‘Symbol`.

  • options (Hash)

    Enum options

Yields:

  • (value)

    Runs block when enum value changed, gives it to block.

Yield Parameters:

  • value (Symbol)

    New enum value.

Yield Returns:

  • (void)


79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/wrap_it/enums.rb', line 79

def enum(name, values, opts = {}, &block)
  opts.symbolize_keys!
  name = name.to_sym
  opts.merge!(block: block, name: name, values: values)
  opts.key?(:default) && opts[:default] = opts[:default].to_sym
  if opts.delete(:html_class) == true || opts.key?(:html_class_prefix)
    opts[:html_class_prefix].is_a?(Symbol) &&
      opts[:html_class_prefix] = opts[:html_class_prefix].to_s
    prefix = html_class_prefix
    opts[:html_class_prefix].is_a?(String) &&
      prefix = opts[:html_class_prefix]
    opts[:regexp] = /\A#{prefix}(?:#{values.join('|')})\z/
    opts[:html_class_prefix] = prefix
  end
  define_method("#{name}") { @enums[name] }
  define_method("#{name}=", &Enums.setter(name, &block))
  @enums ||= {}
  @enums[name] = opts
end