diff options
author | makoto kuwata <kwa@kuwata-lab.com> | 2007-07-19 04:13:21 +0000 |
---|---|---|
committer | makoto kuwata <kwa@kuwata-lab.com> | 2007-07-19 04:13:21 +0000 |
commit | 204983a9e68b4d0be44842a4f98fc36d1aced035 (patch) | |
tree | 613b5465a7180ebf1a0aecaa5f8bffbff9e36038 /lib | |
parent | 21a11d1c629e9696425334edf42edee3b30083c2 (diff) | |
download | erubis-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.rb | 8 | ||||
-rw-r--r-- | lib/erubis/main.rb | 2 |
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 |