Sha256: f7391abea3d6b169bcfc68887c7b4dd6d7c0ccb73ced32fed6621c978edeff4d
Contents?: true
Size: 1000 Bytes
Versions: 2
Compression:
Stored size: 1000 Bytes
Contents
module Pione module Transformer module TransformerModule class << self def included(mod) singleton = class << mod; self; end create_pair_by(Parslet, Parslet::Transform).each do |name, orig| singleton.__send__(:define_method, name) do |*args, &b| orig.__send__(name, *args, &b) end end class << mod def included(klass) name = :@__transform_rules klass_rules = klass.instance_variable_get(name) klass_rules = klass_rules ? klass_rules + rules : rules klass.instance_variable_set(name, klass_rules) end end end private def create_pair_by(*mods) mods.inject([]) do |list, mod| list += create_pair(mod) end end def create_pair(mod) (mod.methods.sort - Object.methods.sort).map{|m| [m, mod]} end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pione-0.1.1 | lib/pione/transformer/transformer-module.rb |
pione-0.1.0 | lib/pione/transformer/transformer-module.rb |