Sha256: 2676828d7c460e47292d0e5b5fa6af7c4f6cfe62c6c77d23c050061d59bf2f51
Contents?: true
Size: 1.44 KB
Versions: 4
Compression:
Stored size: 1.44 KB
Contents
module Vedeu # Converts an options Hash into a class containing methods for each of the # keys, which when called returns the value associated. When the value is # either true or false, an additional predicate method is created. # class Options # @!attribute [r] _defined # @return [Array<Symbol>] attr_reader :_defined # @param options [Hash] # @return [Vedeu::Options] def self.build(options = {}) new(options)._build end # @param options [Hash] # @return [Vedeu::Options] def initialize(options = {}) @_options = options @_defined = [] end # @return [Vedeu::Options] def _build _options.each do |name, value| _create_method(name) { value } if value.is_a?(TrueClass) || value.is_a?(FalseClass) _create_alias("#{name}?", name) end end self end private # @!attribute [r] _options # @return [Hash] attr_reader :_options # @param alias_name [String|Symbol] # @param method_name [String|Symbol] # @return [void] def _create_alias(alias_name, method_name) @_defined << alias_name.to_sym define_singleton_method(alias_name, method(method_name)) end # @param name [String|Symbol] # @param block [Proc] # @return [void] def _create_method(name, &block) @_defined << name.to_sym self.class.send(:define_method, name, &block) end end # Option end # Vedeu
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
vedeu-0.4.18 | lib/vedeu/support/options.rb |
vedeu-0.4.17 | lib/vedeu/support/options.rb |
vedeu-0.4.16 | lib/vedeu/support/options.rb |
vedeu-0.4.15 | lib/vedeu/support/options.rb |