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
|