Sha256: 273d738356f7800c8a7c9a75f2eff52950fbdea32a8e59da98592f405796e96a

Contents?: true

Size: 744 Bytes

Versions: 16

Compression:

Stored size: 744 Bytes

Contents

#--
# George Moschovitis <gm@navel.gr>
#++

class Module

  # A useful macro for dynamic modules.
  #--
  # FIXME: quick and easy implementation, should
  # come up with something better. The name 
  # sucks too.
  #++
  def on_included(code)
    tag = caller[0].split(' ').first.split(/\/|\\/).last.gsub(/:|\.|\(|\)/, '_')
    old = "__included_#{tag}"
    module_eval %{
      class << self
        alias_method :#{old}, :included
        def included(base)
          #{old}(base)
          #{code}
        end
      end
    }
  end
end

=begin Testing

module M
  on_included %{
    puts 'hello'
  }
end

module Q
  on_included %{
    puts 'world'
  }
  on_included %{
    puts 'it works'
  }
end

class C 
  include M
  include Q
end

=end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
facets-1.3.0 lib/facets/core/module/on_included.rb
facets-1.3.2 lib/facets/core/module/on_included.rb
facets-1.3.1 lib/facets/core/module/on_included.rb
facets-1.3.3 lib/facets/core/module/on_included.rb
facets-1.4.0 lib/facets/core/module/on_included.rb
facets-1.4.1 lib/facets/core/module/on_included.rb
facets-1.4.2 lib/facets/core/module/on_included.rb
facets-1.4.3 lib/facets/core/module/on_included.rb
facets-1.4.4 lib/facets/core/module/on_included.rb
facets-1.4.5 lib/facets/core/module/on_included.rb
facets-1.7.0 lib/facets/core/module/on_included.rb
facets-1.7.30 lib/facets/core/module/on_included.rb
facets-1.7.38 lib/facets/core/module/on_included.rb
facets-1.7.46 lib/facets/core/module/on_included.rb
facets-1.8.0 lib/facets/core/module/on_included.rb
facets-1.8.8 lib/facets/core/module/on_included.rb