Class: Launchy::Application
- Inherits:
-
Object
- Object
- Launchy::Application
- Extended by:
- DescendantTracker
- Defined in:
- lib/launchy/application.rb,
lib/launchy/applications/browser.rb
Overview
Application is the base class of all the application types that launchy may invoke. It essentially defines the public api of the launchy system.
Every class that inherits from Application must define:
-
A constructor taking no parameters
-
An instance method ‘open’ taking a string or URI as the first parameter and a hash as the second
-
A class method ‘handles?’ that takes a String and returns true if that class can handle the input.
Direct Known Subclasses
Defined Under Namespace
Classes: Browser
Instance Attribute Summary collapse
-
#host_os_family ⇒ Object
readonly
Returns the value of attribute host_os_family.
-
#runner ⇒ Object
readonly
Returns the value of attribute runner.
Class Method Summary collapse
-
.find_executable(bin, *paths) ⇒ Object
Find the given executable in the available paths.
-
.for_name(name) ⇒ Object
Find the application with the given name.
-
.handling(uri) ⇒ Object
Find the application that handles the given uri.
-
.has_name?(qname) ⇒ Boolean
Does this class have the given name-like string?.
Instance Method Summary collapse
- #find_executable(bin, *paths) ⇒ Object
-
#initialize ⇒ Application
constructor
A new instance of Application.
- #run(cmd, *args) ⇒ Object
Methods included from DescendantTracker
children, find_child, inherited
Constructor Details
#initialize ⇒ Application
Returns a new instance of Application.
63 64 65 66 |
# File 'lib/launchy/application.rb', line 63 def initialize @host_os_family = Launchy::Detect::HostOsFamily.detect @runner = Launchy::Runner.new end |
Instance Attribute Details
#host_os_family ⇒ Object (readonly)
Returns the value of attribute host_os_family.
60 61 62 |
# File 'lib/launchy/application.rb', line 60 def host_os_family @host_os_family end |
#runner ⇒ Object (readonly)
Returns the value of attribute runner.
61 62 63 |
# File 'lib/launchy/application.rb', line 61 def runner @runner end |
Class Method Details
.find_executable(bin, *paths) ⇒ Object
Find the given executable in the available paths
returns the path to the executable or nil if not found
39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/launchy/application.rb', line 39 def find_executable( bin, *paths ) paths = Launchy.path.split( File::PATH_SEPARATOR ) if paths.empty? paths.each do |path| file = File.join( path, bin ) if File.executable?( file ) then Launchy.log "#{self.name} : found executable #{file}" return file end end Launchy.log "#{self.name} : Unable to find `#{bin}' in #{paths.join(", ")}" return nil end |
.for_name(name) ⇒ Object
Find the application with the given name
returns the Class that has the given name
30 31 32 33 34 |
# File 'lib/launchy/application.rb', line 30 def for_name( name ) klass = find_child( :has_name?, name ) return klass if klass raise ApplicationNotFoundError, "No application found named '#{name}'" end |
.handling(uri) ⇒ Object
Find the application that handles the given uri.
returns the Class that can handle the uri
21 22 23 24 25 |
# File 'lib/launchy/application.rb', line 21 def handling( uri ) klass = find_child( :handles?, uri ) return klass if klass raise ApplicationNotFoundError, "No application found to handle '#{uri}'" end |
.has_name?(qname) ⇒ Boolean
Does this class have the given name-like string?
returns true if the class has the given name
55 56 57 |
# File 'lib/launchy/application.rb', line 55 def has_name?( qname ) qname.to_s.downcase == self.name.split("::").last.downcase end |
Instance Method Details
#find_executable(bin, *paths) ⇒ Object
68 69 70 |
# File 'lib/launchy/application.rb', line 68 def find_executable( bin, *paths ) Application.find_executable( bin, *paths ) end |
#run(cmd, *args) ⇒ Object
72 73 74 |
# File 'lib/launchy/application.rb', line 72 def run( cmd, *args ) runner.run( cmd, *args ) end |