Class: ProxyPacRb::BasicConfiguration

Inherits:
Object
  • Object
show all
Includes:
Contracts
Defined in:
lib/proxy_pac_rb/basic_configuration.rb

Overview

Basic configuration for ProxyPacRb

Direct Known Subclasses

CodeConfiguration

Defined Under Namespace

Classes: Option

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBasicConfiguration

Returns a new instance of BasicConfiguration.



58
59
60
# File 'lib/proxy_pac_rb/basic_configuration.rb', line 58

def initialize
  @local_options = self.class.known_options.deep_dup
end

Class Method Details

.known_optionsObject



18
19
20
# File 'lib/proxy_pac_rb/basic_configuration.rb', line 18

def known_options
  @known_options ||= {}
end

.option(name, contract:, default:) ⇒ Object



39
40
41
42
# File 'lib/proxy_pac_rb/basic_configuration.rb', line 39

def option(name, contract:, default:)
  option_writer name, contract: contract, default: default
  option_reader name
end

.option_reader(name, value: nil) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/proxy_pac_rb/basic_configuration.rb', line 31

def option_reader(name, value: nil)
  add_option(name, value)

  define_method(name) { find_option(name).value }

  self
end

.option_writer(name, contract:, default:) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/proxy_pac_rb/basic_configuration.rb', line 22

def option_writer(name, contract:, default:)
  add_option(name, default)

  Contract contract
  define_method("#{name}=") { |v| find_option(name).value = v }

  self
end

Instance Method Details

#configure {|Configuration| ... } ⇒ Object

Yields:

  • (Configuration)

    Yields self



65
66
67
# File 'lib/proxy_pac_rb/basic_configuration.rb', line 65

def configure
  yield self if block_given?
end

#option?(name) ⇒ Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/proxy_pac_rb/basic_configuration.rb', line 69

def option?(name)
  local_options.any? { |_, v| v.name == name }
end

#set_if_option(name, *args) ⇒ Object

Set if name is option



74
75
76
# File 'lib/proxy_pac_rb/basic_configuration.rb', line 74

def set_if_option(name, *args)
  public_send("#{name}=".to_sym, *args) if option? name
end