about summary refs log tree commit diff stats
path: root/code
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2009-07-20 23:52:58 +0200
committerhut <hut@lavabit.com>2009-07-20 23:52:58 +0200
commite805ddb1fc16736a8735bbda16ee094f4c59e182 (patch)
treeb0fd78927f35220608170612c94c2728d16c7171 /code
parentce16309481e03604199470dea8b5aaef9dd0e282 (diff)
downloadranger-e805ddb1fc16736a8735bbda16ee094f4c59e182.tar.gz
fixed #11 (specify flags at data/types.rb)
Diffstat (limited to 'code')
-rw-r--r--code/entry.rb20
-rw-r--r--code/runcontext.rb8
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)