Sha256: 102b2cd911651695668a1a4ac3af7aa5341006442c44fb65add8bffa209432b7
Contents?: true
Size: 989 Bytes
Versions: 2
Compression:
Stored size: 989 Bytes
Contents
module XMP::Convenience def include?(key) key_map.include? key end def [](key) return unless key = key_map[key] @entries ||= {} @entries[key] ||= get(key) end def respond_to_missing?(method_name, include_private = false) include?(method_name) or super end def to_h list.map do |key| result = self[key] result = result.to_h if result.is_a? XMP::Convenience [key, result] end.to_h end private def method_missing(method_name, *arguments, &block) return super unless include? method_name raise ArgumentError, "wrong number of arguments (given #{arguments.size}, expected 0)" if arguments.any? self[method_name] end def key_map @key_map ||= list.inject({}) do |map, key| underscore_key = key.gsub(/([a-z])([^a-z])|(\d)(\D)|(\D)(\d)/, '\1\3\5_\2\4\6').tr('-', '_').downcase map.merge!(key => key, key.to_sym => key, underscore_key => key, underscore_key.to_sym => key) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
xmp-2.0.0 | lib/xmp/convenience.rb |
xmp-1.0.1 | lib/xmp/convenience.rb |