Sha256: 34756860ecf8b21673776ef57c0bf6641ab89115a1a5680f100bf763eea78de1

Contents?: true

Size: 930 Bytes

Versions: 11

Compression:

Stored size: 930 Bytes

Contents

module Vega
  module MethodHelpers
    private

    def scalar_methods(*methods)
      methods.each do |method|
        define_method("#{method}!") do |value|
          @spec[method] = value
          self
        end
        immutable_method(method)
      end
    end

    def hash_methods(*methods)
      methods.each do |method|
        define_method("#{method}!") do |value|
          (@spec[method] ||= {}).merge!(value)
          self
        end
        immutable_method(method)
      end
    end

    def array_methods(*methods)
      methods.each do |method|
        define_method("#{method}!") do |value|
          value = [value] unless value.is_a?(Array)
          (@spec[method] ||= []).push(*value)
          self
        end
        immutable_method(method)
      end
    end

    def immutable_method(method)
      define_method(method) do |value|
        dup.send("#{method}!", value)
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
vega-0.2.7 lib/vega/method_helpers.rb
vega-0.2.6 lib/vega/method_helpers.rb
vega-0.2.5 lib/vega/method_helpers.rb
vega-0.2.4 lib/vega/method_helpers.rb
vega-0.2.3 lib/vega/method_helpers.rb
vega-0.2.2 lib/vega/method_helpers.rb
vega-0.2.1 lib/vega/method_helpers.rb
vega-0.2.0 lib/vega/method_helpers.rb
vega-0.1.3 lib/vega/method_helpers.rb
vega-0.1.2 lib/vega/method_helpers.rb
vega-0.1.1 lib/vega/method_helpers.rb