Class: Bcat::Browser

Inherits:
Object
  • Object
show all
Defined in:
lib/bcat/browser.rb

Constant Summary collapse

ENVIRONMENT =
case `uname`
when /Darwin/       ; 'Darwin'
when /Linux/, /BSD/ ; 'X11'
else                  'X11'
end
COMMANDS =

browser name -> command mappings

{
  'Darwin' => {
    'default'     => "open",
    'safari'      => "open -a Safari",
    'firefox'     => "open -a Firefox",
    'chrome'      => "open -a Google\\ Chrome",
    'chromium'    => "open -a Chromium",
    'opera'       => "open -a Opera",
    'curl'        => "curl -s"
  },

  'X11'  => {
    'default'     => "xdg-open",
    'firefox'     => "firefox",
    'chrome'      => "google-chrome",
    'chromium'    => "chromium",
    'mozilla'     => "mozilla",
    'epiphany'    => "epiphany",
    'curl'        => "curl -s"
  }
}
ALIASES =

alternative names for browsers

{
  'google-chrome' => 'chrome',
  'google chrome' => 'chrome',
  'gnome'         => 'epiphany'
}

Instance Method Summary collapse

Constructor Details

#initialize(browser, command = ENV['BCAT_COMMAND']) ⇒ Browser

Returns a new instance of Browser.



40
41
42
43
# File 'lib/bcat/browser.rb', line 40

def initialize(browser, command=ENV['BCAT_COMMAND'])
  @browser = browser
  @command = command
end

Instance Method Details

#browser_command(browser = @browser) ⇒ Object



57
58
59
60
61
62
# File 'lib/bcat/browser.rb', line 57

def browser_command(browser=@browser)
  browser ||= 'default'
  browser = browser.downcase
  browser = ALIASES[browser] || browser
  COMMANDS[ENVIRONMENT][browser]
end

#commandObject



53
54
55
# File 'lib/bcat/browser.rb', line 53

def command
  @command || browser_command
end

#open(url) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/bcat/browser.rb', line 45

def open(url)
  fork do
    $stdin.close
    exec "#{command} #{shell_quote(url)}"
    exit! 128
  end
end

#shell_quote(argument) ⇒ Object



64
65
66
# File 'lib/bcat/browser.rb', line 64

def shell_quote(argument)
  '"' + argument.to_s.gsub(/([\\"`$])/) { "\\" + $1 } + '"'
end