module Opal::Config
def compiler_options
-
(Hash)
- the configuration for Opal::Compiler
def compiler_options compiler_options = {} config_options.each do |name, options| compiler_option_name = options.fetch(:compiler) compiler_options[compiler_option_name] = config.fetch(name) end compiler_options end
def config
-
(Hash)
- the current configuration, defaults to #default_config
def config @config ||= default_config end
def config_option(name, default_value, options = {})
-
default_value
(Object
) -- the option's default value -
name
(String
) -- the option name
def config_option(name, default_value, options = {}) compiler = options.fetch(:compiler_option, nil) valid_values = options.fetch(:valid_values, [true, false]) config_options[name] = { default: default_value, compiler: compiler } define_singleton_method(name) { config.fetch(name, default_value) } define_singleton_method("#{name}=") do |value| unless valid_values.any? { |valid_value| valid_value === value } raise ArgumentError, "Not a valid value for option #{self}.#{name}, provided #{value.inspect}. "\ "Must be #{valid_values.inspect} === #{value.inspect}" end config[name] = value end end
def config_options
def config_options @config_options ||= {} end
def default_config
-
(Hash)
- the default configuration
def default_config default_config = {} config_options.each do |name, options| default_value = options.fetch(:default) default_value = Proc === default_value ? default_value.call : default_value default_config[name] = default_value end default_config end
def reset!
-
(void)
-
def reset! @config = nil end