Sha256: d56cc0baabd8d33d64e51f07825912fb1d6ac7f437488514cec146fbd880b518

Contents?: true

Size: 963 Bytes

Versions: 22

Compression:

Stored size: 963 Bytes

Contents

module DataMapper
  module Model
    # Module that provides a common way for plugin authors
    # to implement "is ... " traits (object behaviors that can be shared)
    module Is
      # A common interface to activate plugins for a resource. For instance:
      #
      # class Widget
      #   include DataMapper::Resource
      #
      #   is :list
      # end
      #
      # adds list item behavior to the model. Plugin that wants to conform
      # to "is API" of DataMapper must supply is_+behavior name+ method,
      # for example above it would be is_list.
      #
      # @api public
      def is(plugin, *args, &block)
        generator_method = "is_#{plugin}".to_sym

        if respond_to?(generator_method)
          send(generator_method, *args, &block)
        else
          raise PluginNotFoundError, "could not find plugin named #{plugin}"
        end
      end
    end # module Is

    include Is
  end # module Model
end # module DataMapper

Version data entries

22 entries across 22 versions & 4 rubygems

Version Path
ardm-core-1.3.0 lib/dm-core/model/is.rb
ardm-core-1.2.1 lib/dm-core/model/is.rb
datamapper-dm-core-0.10.0 lib/dm-core/model/is.rb
datamapper-dm-core-0.10.1 lib/dm-core/model/is.rb
dm-core-1.2.1 lib/dm-core/model/is.rb
ghost_dm-core-1.3.0.beta lib/dm-core/model/is.rb
dm-core-1.2.0 lib/dm-core/model/is.rb
dm-core-1.2.0.rc2 lib/dm-core/model/is.rb
dm-core-1.2.0.rc1 lib/dm-core/model/is.rb
dm-core-1.1.0 lib/dm-core/model/is.rb
dm-core-1.1.0.rc3 lib/dm-core/model/is.rb
dm-core-1.1.0.rc2 lib/dm-core/model/is.rb
dm-core-1.1.0.rc1 lib/dm-core/model/is.rb
dm-core-1.0.2 lib/dm-core/model/is.rb
dm-core-1.0.1 lib/dm-core/model/is.rb
dm-core-1.0.0 lib/dm-core/model/is.rb
dm-core-1.0.0.rc3 lib/dm-core/model/is.rb
dm-core-1.0.0.rc2 lib/dm-core/model/is.rb
dm-core-1.0.0.rc1 lib/dm-core/model/is.rb
dm-core-0.10.2 lib/dm-core/model/is.rb