diff options
Diffstat (limited to 'code')
-rw-r--r-- | code/entry.rb | 20 | ||||
-rw-r--r-- | code/runcontext.rb | 8 |
2 files changed, 24 insertions, 4 deletions
diff --git a/code/entry.rb b/code/entry.rb index 3b08c54a..1849bad1 100644 --- a/code/entry.rb +++ b/code/entry.rb @@ -12,8 +12,12 @@ class Directory::Entry ## wrapper def use() Use end module Use - def self.method_missing(app,*_) throw(:use, app) end - def self.no_handler() throw(:use, nil) end + def self.no_handler() + throw(:use, [nil, '']) + end + def self.method_missing(app, baseflags = '', *_) + throw(:use, [app, baseflags]) + end end def initialize(dirname, basename=nil) @@ -78,9 +82,19 @@ class Directory::Entry def handler() ## get_handler has to be defined in another file - @handler ||= catch(:use) do + return @handler if @handler + @handler, @baseflags = catch(:use) do + get_handler + end + @handler + end + + def baseflags() + return @baseflags if @baseflags + @handler, @baseflags = catch(:use) do get_handler end + @baseflags end def delete! diff --git a/code/runcontext.rb b/code/runcontext.rb index 882a10ef..aaccec9f 100644 --- a/code/runcontext.rb +++ b/code/runcontext.rb @@ -51,7 +51,13 @@ class RunContext } @handlers = @files.map {|file| file.handler} @paths = @files.map {|file| file.path} - @handler = preferred_app || @handlers.first + + if preferred_app + @handler = preferred_app + else + @handler = @handlers.first + self.base_flags = @files.first.baseflags + end @multi = (@files.size > 1 and @handlers.uniq.size == 1) |