Sha256: d02747db2509b4f04912a74c8ad72d7aecb0082212adaea34ff69670f37a6747

Contents?: true

Size: 547 Bytes

Versions: 66

Compression:

Stored size: 547 Bytes

Contents

module Ruco
  # Can be used like a hash, but also allows .key access
  class OptionAccessor
    attr_reader :wrapped
    delegate :[], :[]=, :slice, :to => :wrapped

    def initialize(wrapped={})
      @wrapped = wrapped
    end

    def nested(key)
      Hash[wrapped.map do |k,v|
        if k.to_s =~ /^#{key}_(.*)$/
          [$1.to_sym,v]
        end
      end.compact]
    end

    def method_missing(method, *args)
      base = method.to_s.sub('=','').to_sym
      raise if args.size != 1
      @wrapped[base] = args.first
    end
  end
end

Version data entries

66 entries across 66 versions & 1 rubygems

Version Path
ruco-0.4.0 lib/ruco/option_accessor.rb
ruco-0.3.0 lib/ruco/option_accessor.rb
ruco-0.2.23 lib/ruco/option_accessor.rb
ruco-0.2.22 lib/ruco/option_accessor.rb
ruco-0.2.21 lib/ruco/option_accessor.rb
ruco-0.2.20 lib/ruco/option_accessor.rb
ruco-0.2.19 lib/ruco/option_accessor.rb
ruco-0.2.18 lib/ruco/option_accessor.rb
ruco-0.2.17 lib/ruco/option_accessor.rb
ruco-0.2.16 lib/ruco/option_accessor.rb
ruco-0.2.15 lib/ruco/option_accessor.rb
ruco-0.2.14 lib/ruco/option_accessor.rb
ruco-0.2.13 lib/ruco/option_accessor.rb
ruco-0.2.12 lib/ruco/option_accessor.rb
ruco-0.2.11 lib/ruco/option_accessor.rb
ruco-0.2.10 lib/ruco/option_accessor.rb
ruco-0.2.9 lib/ruco/option_accessor.rb
ruco-0.2.8 lib/ruco/option_accessor.rb
ruco-0.2.7 lib/ruco/option_accessor.rb
ruco-0.2.6 lib/ruco/option_accessor.rb