Sha256: a579296afad076425c127fba14d4fddaa32771adcf1adfa511cad0ef7af69f16

Contents?: true

Size: 1.04 KB

Versions: 6

Compression:

Stored size: 1.04 KB

Contents

# = behavng.rb
#
# CREDIT Nobuyoshi Nakada

class Behavior < Module
    def define(behavior, &body)
    if body
      define_method(behavior, &body)
    else
      behavior.each do |behavior, body|
        if body
          define_method(behavior, &body)
        elsif body.nil?
          remove_method(behavior)
        else
          undef_method(behavior)
        end
      end
    end
  end
end

module Kernel
  def behaving(behavior, &body)
    unless @_behaviors
      extend(@_behaviors = Behavior.new)
    end
    @_behaviors.define(behavior, &body)
  end
end


# OLD IMPLEMENTATION

=begin
class Behavior < Module
    def initialize(behavior, &body)
    if body
      define_method(behavior, &body)
    else
      behavior.each do |behavior, body|
        if body
          define_method(behavior, &body)
        elsif body.nil?
          remove_method(behavior)
        else
          undef_method(behavior)
        end
      end
    end
  end
end

module Kernel
  def behaving(behavior, &body)
    extend(Behavior.new(behavior, &body))
  end
end
=end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
facets-1.8.0 lib/facets/more/behvior.rb
facets-1.8.20 lib/facets/more/behvior.rb
facets-1.8.49 lib/facets/more/behavior.rb
facets-1.8.51 lib/facets/more/behavior.rb
facets-1.8.8 lib/facets/more/behvior.rb
facets-1.8.54 lib/facets/more/behavior.rb