class WebTranslateIt::Util
A few useful functions
Public Class Methods
add_fields(request)
click to toggle source
rubocop:enable Metrics/AbcSize rubocop:enable Metrics/MethodLength rubocop:enable Metrics/PerceivedComplexity
# 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)
click to toggle source
Ask a question. Returns an answer.
# 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)
click to toggle source
Ask a question. Returns a true for yes, false for no, default for nil.
# 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)
click to toggle source
# 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?()
click to toggle source
Returns whether a terminal can display ansi colors
# 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)
click to toggle source
rubocop:todo Metrics/PerceivedComplexity rubocop:todo Metrics/MethodLength rubocop:todo Metrics/AbcSize
# 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
version()
click to toggle source
Return a string representing the gem version For example “1.8.3”
# File lib/web_translate_it/util.rb, line 10 def self.version Gem.loaded_specs['web_translate_it'].version end