Sha256: ef0babe36c34948f6743f3d94aa2b2a977d5e80b04229e24fddefafc2290be2c

Contents?: true

Size: 607 Bytes

Versions: 2

Compression:

Stored size: 607 Bytes

Contents

require "pluck_map/attribute"

module PluckMap
  class AttributeBuilder

    def self.build(&block)
      builder = self.new
      if block.arity == 1
        block.call(builder)
      else
        builder.instance_eval(&block)
      end
      builder.instance_variable_get(:@attributes).freeze
    end

    def initialize
      @attributes = []
    end

    def method_missing(attribute_name, *args)
      options = args.extract_options!
      options[:value] = args.first unless args.empty?
      @attributes.push PluckMap::Attribute.new(attribute_name, options)
      :attribute_added
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pluck_map-0.4.1 lib/pluck_map/attribute_builder.rb
pluck_map-0.4.0 lib/pluck_map/attribute_builder.rb