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.



38
39
40
# File 'lib/launchy/applications/browser.rb', line 38

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



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

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



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

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



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

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
33
34
# File 'lib/launchy/applications/browser.rb', line 28

def nix_app_list
  nix_de = Launchy::Detect::NixDesktopEnvironment.detect
  list   = nix_de.browsers

  list.delete_if { |b| b.nil? || (b.strip.size == 0) }
  list.collect { |bin| find_executable( bin ) }.find_all { |x| not x.nil? }
end

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

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



79
80
81
82
# File 'lib/launchy/applications/browser.rb', line 79

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