class Directive::ConfigObject
Constants
- RESERVED_WORDS
Private Class Methods
_ensure_safe_option_name(name)
click to toggle source
# File lib/directive/config_object.rb, line 51 def _ensure_safe_option_name(name) raise ArgumentError, "#{name.inspect} is reserved and cannot be used at a config option" if name.in? RESERVED_WORDS raise ArgumentError, "#{name.inspect} is defined twice" if _nested_options.include?(name) puts "Warning: the config option #{name} is already defined" if _options.include?(name) # rubocop:disable Rails/Output end
inherited(base)
click to toggle source
Calls superclass method
# File lib/directive/config_object.rb, line 58 def inherited(base) base._nested_options = _nested_options.dup base._nested_builders = _nested_builders.dup super end
nested(namespace, &block)
click to toggle source
# File lib/directive/config_object.rb, line 30 def nested(namespace, &block) namespace = namespace.to_sym _ensure_safe_option_name(namespace) nested_config_builder_for(namespace).tap do |builder| builder.instance_exec(&block) _nested_options << namespace define_method(namespace) do |&nested_configure_block| builder.__send__(:configuration).tap do |nested_config| nested_configure_block.call(nested_config) if nested_configure_block.respond_to?(:call) end end end end
nested_config_builder_for(namespace)
click to toggle source
# File lib/directive/config_object.rb, line 47 def nested_config_builder_for(namespace) _nested_builders[namespace.to_sym] ||= ConfigBuilder.new end
option(name, *args, **kwargs)
click to toggle source
Calls superclass method
# File lib/directive/config_object.rb, line 22 def option(name, *args, **kwargs) name = name.to_sym _ensure_safe_option_name(name) super(name, *args, **kwargs) end
Public Instance Methods
inspect()
click to toggle source
# File lib/directive/config_object.rb, line 65 def inspect "#<#{self.class.superclass} #{super}>" end