Class: WebTranslateIt::Util

Inherits:
Object
  • Object
show all
Defined in:
lib/web_translate_it/util.rb

Overview

A few useful functions

Class Method Summary collapse

Class Method Details

.add_fields(request) ⇒ Object

rubocop:enable Metrics/AbcSize rubocop:enable Metrics/MethodLength rubocop:enable Metrics/PerceivedComplexity



46
47
48
49
# File 'lib/web_translate_it/util.rb', line 46

def self.add_fields(request)
  request.add_field('User-Agent', "wti v#{version}")
  request.add_field('Content-Type', 'application/json')
end

.ask(question, default = nil) ⇒ Object

Ask a question. Returns an answer.



84
85
86
87
88
89
90
91
92
93
# File 'lib/web_translate_it/util.rb', line 84

def self.ask(question, default = nil)
  question += " (Default: #{default})" unless default.nil?
  print("#{question}  ")
  $stdout.flush

  result = $stdin.gets
  result&.chomp!
  result = default if result.nil? || (result == '')
  result
end

.ask_yes_no(question, default = nil) ⇒ Object

Ask a question. Returns a true for yes, false for no, default for nil.



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/web_translate_it/util.rb', line 54

def self.ask_yes_no(question, default = nil) # rubocop:todo Metrics/MethodLength
  qstr = case default
  when nil
    'yn'
  when true
    'Yn'
  else
    'yN'
  end

  result = nil

  while result.nil?
    result = ask("#{question} [#{qstr}]")
    result = case result
    when /^[Yy].*/
      true
    when /^[Nn].*/
      false
    when '', nil
      default
    end
  end

  result
end

.calculate_percentage(processed, total) ⇒ Object



14
15
16
17
18
# File 'lib/web_translate_it/util.rb', line 14

def self.calculate_percentage(processed, total)
  return 0 if total.zero?

  ((processed * 10) / total).to_f.ceil * 10
end

.can_display_colors?Boolean

Returns whether a terminal can display ansi colors

Returns:

  • (Boolean)


98
99
100
# File 'lib/web_translate_it/util.rb', line 98

def self.can_display_colors?
  !RUBY_PLATFORM.downcase.include?('mingw32')
end

.handle_response(response, return_response = false, raise_exception = false) ⇒ Object

rubocop:todo Metrics/PerceivedComplexity rubocop:todo Metrics/MethodLength rubocop:todo Metrics/AbcSize



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/web_translate_it/util.rb', line 23

def self.handle_response(response, return_response = false, raise_exception = false) # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
  if (response.code.to_i >= 400) && (response.code.to_i < 500)
    raise "Error: #{MultiJson.load(response.body)['error']}" if raise_exception

    puts StringUtil.failure(MultiJson.load(response.body)['error'])
  elsif response.code.to_i == 500
    raise 'Error: Server temporarily unavailable (Error 500).' if raise_exception

    puts StringUtil.failure('Error: Server temporarily unavailable (Error 500).')
  else
    return response.body if return_response
    return StringUtil.success('OK') if response.code.to_i == 200
    return StringUtil.success('Created') if response.code.to_i == 201
    return StringUtil.success('Accepted') if response.code.to_i == 202
    return StringUtil.success('Not Modified') if response.code.to_i == 304

    StringUtil.failure("Locked\n                                                    (another import in progress)") if response.code.to_i == 503
  end
end

.versionObject

Return a string representing the gem version For example “1.8.3”



10
11
12
# File 'lib/web_translate_it/util.rb', line 10

def self.version
  Gem.loaded_specs['web_translate_it'].version
end