Class: Launchy::Application::Browser

Inherits:
Launchy::Application show all
Defined in:
lib/launchy/applications/browser.rb

Overview

The class handling the browser application and all of its schemes

Instance Attribute Summary

Attributes inherited from Launchy::Application

#host_os_family, #ruby_engine, #runner

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Launchy::Application

#find_executable, find_executable, handling, #initialize, #run

Methods included from DescendantTracker

#children, #find_child, #inherited

Constructor Details

This class inherits a constructor from Launchy::Application

Class Method Details

.handles?(uri) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
13
# File 'lib/launchy/applications/browser.rb', line 10

def self.handles?( uri )
  return true if schemes.include?( uri.scheme )
  return true if File.exist?( uri.path )
end

.schemesObject



6
7
8
# File 'lib/launchy/applications/browser.rb', line 6

def self.schemes
  %w[ http https ftp file ]
end

Instance Method Details

#app_listObject

use a call back mechanism to get the right app_list that is decided by the host_os_family class.



36
37
38
# File 'lib/launchy/applications/browser.rb', line 36

def app_list
  host_os_family.app_list( self )
end

#browser_cmdlineObject

Get the full commandline of what we are going to add the uri to



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/launchy/applications/browser.rb', line 49

def browser_cmdline
  browser_env.each do |p|
    Launchy.log "#{self.class.name} : possibility from BROWSER environment variable : #{p}"
  end
  app_list.each do |p|
    Launchy.log "#{self.class.name} : possibility from app_list : #{p}"
  end

  possibilities = (browser_env + app_list).flatten

  if browser = possibilities.shift then
    Launchy.log "#{self.class.name} : Using browser value '#{browser}'"
    return browser
  end
  raise Launchy::CommandNotFoundError, "Unable to find a browser command. If this is unexpected, #{Launchy.bug_report_message}"
end

#browser_envObject



40
41
42
43
44
45
46
# File 'lib/launchy/applications/browser.rb', line 40

def browser_env
  return [] unless ENV['BROWSER']
  browser_env = ENV['BROWSER'].split( File::PATH_SEPARATOR )
  browser_env.flatten!
  browser_env.delete_if { |b| b.nil? || (b.strip.size == 0) }
  return browser_env
end

#cmd_and_args(uri, options = {}) ⇒ Object



66
67
68
69
70
71
72
73
# File 'lib/launchy/applications/browser.rb', line 66

def cmd_and_args( uri, options = {} )
  cmd = browser_cmdline
  args = [ uri.to_s ]
  if cmd =~ /%s/ then
    cmd.gsub!( /%s/, args.shift )
  end
  return [cmd, args]
end

#cygwin_app_listObject



19
20
21
# File 'lib/launchy/applications/browser.rb', line 19

def cygwin_app_list
  [ 'cmd /C start "launchy" /b' ]
end

#darwin_app_listObject

hardcode this to open?



24
25
26
# File 'lib/launchy/applications/browser.rb', line 24

def darwin_app_list
  [ find_executable( "open" ) ]
end

#nix_app_listObject



28
29
30
31
32
# File 'lib/launchy/applications/browser.rb', line 28

def nix_app_list
  nix_de = Launchy::Detect::NixDesktopEnvironment.detect
  list   = nix_de.browsers
  list.find_all { |argv| argv.valid? }
end

#open(uri, options = {}) ⇒ Object

final assembly of the command and do %s substitution www.catb.org/~esr/BROWSER/index.html



77
78
79
80
# File 'lib/launchy/applications/browser.rb', line 77

def open( uri, options = {} )
  cmd, args = cmd_and_args( uri, options )
  run( cmd, args )
end

#windows_app_listObject



15
16
17
# File 'lib/launchy/applications/browser.rb', line 15

def windows_app_list
  [ 'start "launchy" /b' ]
end