about summary refs log tree commit diff stats
path: root/ranger
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2010-04-27 03:30:30 +0200
committerhut <hut@lavabit.com>2010-04-27 03:30:30 +0200
commitb102486b0fd959d4a93265f491f1642ff849ef8b (patch)
treea052bb54a99a0ca35ddd674f7b57075e8f23674a /ranger
parenta5e1ccdd9e6cc4cf555d140b4ff2216a2dd9ea55 (diff)
downloadranger-b102486b0fd959d4a93265f491f1642ff849ef8b.tar.gz
api.apps: more stuff
Diffstat (limited to 'ranger')
-rw-r--r--ranger/api/apps.py22
1 files changed, 13 insertions, 9 deletions
diff --git a/ranger/api/apps.py b/ranger/api/apps.py
index d44f92e1..d2e9ac4f 100644
--- a/ranger/api/apps.py
+++ b/ranger/api/apps.py
@@ -76,7 +76,7 @@ class Applications(FileManagerAware):
 				application_handler = getattr(self, 'app_' + app)
 			except AttributeError:
 				if app in get_executables():
-					return tup(app, *context)
+					return _generic_app(app, context)
 				continue
 			if self._meets_dependencies(application_handler):
 				return application_handler(context)
@@ -99,7 +99,7 @@ class Applications(FileManagerAware):
 			handler = getattr(self, 'app_' + app)
 		except AttributeError:
 			if app in get_executables():
-				return tup(app, *context)  # generic app
+				return _generic_app(app, context)
 			handler = self.app_default
 		return handler(context)
 
@@ -121,7 +121,7 @@ class Applications(FileManagerAware):
 		flags = 'flags' in keywords and keywords['flags'] or ""
 		for name in args:
 			assert isinstance(name, str)
-			setattr(cls, "app_" + name, _generic_app(name, flags=flags))
+			setattr(cls, "app_" + name, _generic_wrapper(name, flags=flags))
 
 
 def tup(*args):
@@ -143,10 +143,14 @@ def depends_on(*args):
 	return decorator
 
 
-def _generic_app(name, flags=''):
+def _generic_app(name, context, flags=''):
+	"""Use this function when no other information is given"""
+	context.flags += flags
+	return tup(name, *context)
+
+
+def _generic_wrapper(name, flags=''):
+	"""Wraps _generic_app into a method for Applications"""
 	assert isinstance(name, str)
-	@depends_on(name)
-	def handler(self, context):
-		context.flags += flags
-		return tup(name, *context)
-	return handler
+	return depends_on(name)(lambda self, context:
+			_generic_app(name, context, flags))