File: cli.rb

package info (click to toggle)
ruby-user-agent-parser 2.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 256 kB
  • sloc: ruby: 374; makefile: 6
file content (54 lines) | stat: -rw-r--r-- 1,086 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
54
# frozen_string_literal: true

module UserAgentParser
  class Cli
    def initialize(user_agent, options = {})
      @user_agent = user_agent
      @options = options
    end

    def run!
      if @options[:family]
        @user_agent.family
      elsif @options[:name]
        @user_agent.name
      elsif @options[:version]
        with_version(&:to_s)
      elsif @options[:major]
        major
      elsif @options[:minor]
        minor
      elsif @options[:os]
        @user_agent.os.to_s
      elsif (format = @options[:format])
        format
          .gsub('%f', @user_agent.family)
          .gsub('%n', @user_agent.name)
          .gsub('%v', version.to_s)
          .gsub('%M', major.to_s)
          .gsub('%m', minor.to_s)
          .gsub('%o', @user_agent.os.to_s)
      else
        @user_agent.to_s
      end
    end

    private

    def major
      with_version(&:major)
    end

    def minor
      with_version(&:minor)
    end

    def version
      @version ||= @user_agent.version
    end

    def with_version
      yield(version) if version
    end
  end
end