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, #runner

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Launchy::Application

find_executable, #find_executable, for_name, handling, has_name?, #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)


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

def self.handles?(uri)
  return true if schemes.include?(uri.scheme)

  true if File.exist?(uri.path)
end

.schemesObject



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

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



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/launchy/applications/browser.rb', line 54

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)
    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



44
45
46
47
48
49
50
51
# 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.empty? }
  browser_env
end

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



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

def cmd_and_args(uri, _options = {})
  cmd = browser_cmdline.to_s
  args = [uri.to_s]
  cmd.gsub!("%s", args.shift) if cmd.include?("%s")
  [cmd, args]
end

#cygwin_app_listObject



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

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

#darwin_app_listObject

hardcode this to open?



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

def darwin_app_list
  [find_executable("open")]
end

#nix_app_listObject



32
33
34
35
36
# File 'lib/launchy/applications/browser.rb', line 32

def nix_app_list
  nix_de = Launchy::Detect::NixDesktopEnvironment.detect
  list   = nix_de.browsers
  list.find_all(&:valid?)
end

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

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



81
82
83
84
# File 'lib/launchy/applications/browser.rb', line 81

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

#windows_app_listObject



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

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