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