diff options
author | hut <hut@lavabit.com> | 2009-07-20 23:52:58 +0200 |
---|---|---|
committer | hut <hut@lavabit.com> | 2009-07-20 23:52:58 +0200 |
commit | e805ddb1fc16736a8735bbda16ee094f4c59e182 (patch) | |
tree | b0fd78927f35220608170612c94c2728d16c7171 /code | |
parent | ce16309481e03604199470dea8b5aaef9dd0e282 (diff) | |
download | ranger-e805ddb1fc16736a8735bbda16ee094f4c59e182.tar.gz |
fixed #11 (specify flags at data/types.rb)
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) |