summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormakoto kuwata <kwa@kuwata-lab.com>2007-07-19 04:13:21 +0000
committermakoto kuwata <kwa@kuwata-lab.com>2007-07-19 04:13:21 +0000
commit204983a9e68b4d0be44842a4f98fc36d1aced035 (patch)
tree613b5465a7180ebf1a0aecaa5f8bffbff9e36038 /lib
parent21a11d1c629e9696425334edf42edee3b30083c2 (diff)
downloaderubis-204983a9e68b4d0be44842a4f98fc36d1aced035.tar.gz
- [enhance] RubyEvaluator#def_method() can take instance object as well was module object
Diffstat (limited to 'lib')
-rw-r--r--lib/erubis/evaluator.rb8
-rw-r--r--lib/erubis/main.rb2
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/erubis/evaluator.rb b/lib/erubis/evaluator.rb
index 889fa49..f946af1 100644
--- a/lib/erubis/evaluator.rb
+++ b/lib/erubis/evaluator.rb
@@ -68,9 +68,11 @@ module Erubis
return context.instance_eval(&@_proc)
end
- ## define method to module_object. this is equivarent to ERB#def_method.
- def def_method(module_object, method_name, filename=nil)
- module_object.module_eval("def #{method_name}; #{@src}; end", filename || @filename)
+ ## if object is an Class or Module then define instance method to it,
+ ## else define singleton method to it.
+ def def_method(object, method_name, filename=nil)
+ m = object.is_a?(Module) ? :module_eval : :instance_eval
+ object.__send__(m, "def #{method_name}; #{@src}; end", filename || @filename || '(erubis)')
end
diff --git a/lib/erubis/main.rb b/lib/erubis/main.rb
index 6e38e39..76ddb2c 100644
--- a/lib/erubis/main.rb
+++ b/lib/erubis/main.rb
@@ -173,7 +173,7 @@ module Erubis
msg = nil if val
end
else
- engine.filename = '(stdin)'
+ engine.filename = filename = '(stdin)'
engine.convert!($stdin.read())
val = do_action(action, engine, context, filename, opts)
msg = nil if val