Top Level Namespace

Defined Under Namespace

Modules: DetectBrowserOs

Instance Method Summary collapse

Instance Method Details

#detect_browser(user_agent = request.user_agent) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/detect_browser_os.rb', line 26

def detect_browser(user_agent = request.user_agent)
  ua = (user_agent || "").downcase
  case ua
    when /opera[\/,\s+](\d+)/
      o = %W(opera opera#{$1})
      o << "mobile" if ua.include?('mini')
      o.join(" ")
    when /webtv/ ;              "gecko"
    when /msie (\d+)/ ;         "ie ie#{$1}"
    when /edge\/(\d+)/ ;        "gecko edge edge#{$1}"
    when /trident/ ;            "gecko ie#{(ua.match(/rv:(\d+)/) || ['',''])[1]}"
    when %r{firefox/3.5} ;      "gecko ff3 ff3_5"
    when %r{firefox} ;          "gecko firefox ff#{(ua.match(/firefox\/(\d+)/) || ['',''])[1]}"
    when /konqueror/ ;          "konqueror"
    when /applewebkit\/([\d.]+).? \([^)]*\) ?(?:version\/(\d+))?.*$/
      o = %W(webkit)
      if ua.include?('iron')
        o << 'iron'
      elsif ua.include?('chrome')
        o << 'chrome'
      else
        o << "safari safari"+ ($2 || (($1.to_i >= 400) ? '2' : '1'))
      end
      o.join(" ")
    when /gecko/, /mozilla/ ;   "gecko"
    else ""
  end
end

#detect_browser_os(user_agent = request.user_agent) ⇒ Object

The ruby version of the CSS Browser Selector with some additions



2
3
4
# File 'lib/detect_browser_os.rb', line 2

def detect_browser_os(user_agent = request.user_agent)
  [detect_browser(user_agent), detect_os(user_agent)].compact.join(' ')
end

#detect_os(user_agent = request.user_agent) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/detect_browser_os.rb', line 6

def detect_os(user_agent = request.user_agent)
  ua = (user_agent || "").downcase
  
  if ua.include?('iphone')
    'iphone'
  elsif ua.include?('ipad')
    'ipad'
  elsif ua.include?('ipod')
    'ipod'
  elsif ua.include?('mac') || ua.include?('darwin')
    'mac'
  elsif ua.include?('x11') || ua.include?('linux')
    'linux'
  elsif ua.include?('win')
    'win'
  else
    nil
  end
end