Sha256: d3d63a304e35b8268d676dc73219e1037b1d6957a8dec962f2d0c5339a928c9c
Contents?: true
Size: 854 Bytes
Versions: 2
Compression:
Stored size: 854 Bytes
Contents
# = Macros # # A powerfull macro implementation for Ruby. Allows definition # of new macro. # # EXPERIMENTAL, not fully working yet # # code: # George Moschovitis <gm@navel.gr> # # (c) 2004 Navel, all rights reserved. # $Id: macros.rb 98 2004-10-22 07:36:20Z gmosx $ $__macros__ = {} $__required__ = {} module Kernel alias_method :old_require, :require def require(path) return if $__required__[path] source = File.read(path) # parse macro source.gsub!(/defmacro\s*\/(.*?)\/\s(.*?)endmacro/m) { $__macros__[Regexp.new($1)] = $2 ; "" } # expand macros $__macros__.each { |match, replace| source.gsub!(match, replace) } $__required__[path] = true eval(source) end end require "n/test1.rb" require "n/test2.rb" __END__ Examples: defmacro /my_macro\((.*)\)/ begin my_function(\1) rescue => ex puts ex end endmacro
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
nitro-0.2.0 | lib/n/macros.rb |
nitro-0.3.0 | lib/n/macros.rb |