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.



40
41
42
# File 'lib/launchy/applications/browser.rb', line 40

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



53
54
55
56
57
58
59
60
61
# File 'lib/launchy/applications/browser.rb', line 53

def browser_cmdline
  possibilities = (browser_env + app_list).flatten
  possibilities.each do |p|
    Launchy.log "#{self.class.name} : possibility : #{p}"
  end
  browser = possibilities.shift
  Launchy.log "#{self.class.name} : Using browser value '#{browser}'"
  return browser
end

#browser_envObject



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

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



63
64
65
66
67
68
69
70
# File 'lib/launchy/applications/browser.rb', line 63

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 /b' ]
end

#darwin_app_listObject



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

def darwin_app_list
  [ find_executable( "open" ) ]
end

#nix_app_listObject



27
28
29
30
31
32
33
34
35
36
# File 'lib/launchy/applications/browser.rb', line 27

def nix_app_list
  app_list = %w[ xdg-open ]
  if nix_de = Launchy::Detect::NixDesktopEnvironment.detect then
    app_list << nix_de.browser
    app_list << nix_de.fallback_browsers
  end
  app_list.flatten!
  app_list.delete_if { |b| b.nil? || (b.strip.size == 0) }
  app_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



74
75
76
77
# File 'lib/launchy/applications/browser.rb', line 74

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 /b' ]
end