Sha256: 1a1e904cad77f9ae568151d3df1369365851f26cf006e2e16248326c285369fc

Contents?: true

Size: 735 Bytes

Versions: 7

Compression:

Stored size: 735 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

7 entries across 7 versions & 2 rubygems

Version Path
facets-1.2.1 lib/facets/core/module/on_included.rb
glue-0.27.0 lib/glue/on_included.rb
glue-0.28.0 lib/glue/on_included.rb
glue-0.25.0 lib/glue/on_included.rb
glue-0.24.0 lib/glue/on_included.rb
glue-0.26.0 lib/glue/on_included.rb
glue-0.29.0 lib/glue/on_included.rb