module Opal::Config

def compiler_options

Returns:
  • (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

Returns:
  • (Hash) - the current configuration, defaults to #default_config
def config
  @config ||= default_config
end

def config_option(name, default_value, options = {})

Parameters:
  • 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

Returns:
  • (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!

Returns:
  • (void) -
def reset!
  @config = nil
end