Class: SmartOptions::Options

Inherits:
Object
  • Object
show all
Defined in:
lib/smart_options/options.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ Options

Returns a new instance of Options.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/smart_options/options.rb', line 16

def initialize(params = {})
  wrong_keys = params.keys - @@__options__.keys

  raise "Wrong options supplied: #{wrong_keys}" if !wrong_keys.empty?

  required_options = @@__options__.select { |k, v| v[:required] }
  missing_options_keys = required_options.keys - params.keys

  raise "Missing required options: #{missing_options_keys}" if !missing_options_keys.empty?

  params.each do |k, v|
    instance_variable_set("@#{k}", v)
  end
end

Class Method Details

.option(name, params) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/smart_options/options.rb', line 3

def self.option(name, params)
  @@__options__ ||= {}
  @@__options__[name] = params

  define_method name do
    instance_variable_get("@#{name}") || params[:default]
  end

  define_method :"#{name}=" do |value|
    instance_variable_set("@#{name}", value)
  end
end