Sha256: 863cd1c90dbe110ad12faf98e5cb8abad7a448ff7a790b3a0cdf4aa37b2115e8

Contents?: true

Size: 880 Bytes

Versions: 1

Compression:

Stored size: 880 Bytes

Contents

module Exposure
  module Building
    def self.included(base)
      base.extend ClassMethods
      base.send(:include, InstaneMethods)
    end
    
    module ClassMethods
      def build(name, options = {}, &block)
        options[:with] ||= block
        self.const_get(:Builders)[name] = options[:with]
      end
      
      def build_default_builder(member, nesting)
        self::const_set(:DefaultBuilder, {
          self.resource_name.intern  => Proc.new { [:new, params[resource_name] ] }
        })
      end
    end
    
    module InstaneMethods
      private
        def custom_builder_for(resource_name)
          
        end
        
        def default_builder_for(resource_name)
          
        end
        
        def builder_for(resource_name)
          custom_builder_for(resource_name) || default_builder_for(resource_name)
        end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
exposure-0.0.7 lib/exposure/behaviors/building.rb