summaryrefslogtreecommitdiff
path: root/ext/ripper/tools/dsl.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ext/ripper/tools/dsl.rb')
-rw-r--r--ext/ripper/tools/dsl.rb11
1 files changed, 6 insertions, 5 deletions
diff --git a/ext/ripper/tools/dsl.rb b/ext/ripper/tools/dsl.rb
index e67294e265..dec4820d74 100644
--- a/ext/ripper/tools/dsl.rb
+++ b/ext/ripper/tools/dsl.rb
@@ -34,12 +34,13 @@ class DSL
s
end
- def method_missing(*args)
- if args.first =~ /!\z/
- "#{ $` }(#{ args.drop(1).join(", ") })"
+ def method_missing(event, *args)
+ if event.to_s =~ /!\z/
+ event = $`
+ @events[event] = args.size
+ "dispatch#{ args.size }(#{ [event, *args].join(", ") })"
else
- @events[args.first.to_s] = args.size - 1
- "dispatch#{ args.size - 1 }(#{ args.join(", ") })"
+ "#{ event }(#{ args.join(", ") })"
end
end
end