Sha256: 441900a2a90781113c4c55329ed559b5cbd60a20393e2eba7dc47274e67312e2
Contents?: true
Size: 1.7 KB
Versions: 3
Compression:
Stored size: 1.7 KB
Contents
# frozen_string_literal: true begin require "rainbow" rescue LoadError end module SiteMaps module Primitives module Output module_function def formatted_runtime(number) colorize(sprintf("%.3f ms", number), :lightgray) end def runtime_padding(number, extra = 2) " " * (extra + sprintf("%.3f ms", number).size) end def colorize(text, *attributes) if defined? Rainbow attributes.reduce(Rainbow(text)) { |p, a| p.public_send(a) } else text end end def print_error(message_or_error, backtrace: false, **options) options[:level] ||= :error message = message_or_error.to_s print_message(message, output: :stderr, **options) if message_or_error.is_a?(Exception) && backtrace limit = backtrace.is_a?(Integer) ? backtrace : -1 print_backtrace(message_or_error, limit: limit, level: options[:level]) end end def print_backtrace(error, limit: -1, **options) return unless error.respond_to?(:backtrace) return if error.backtrace.nil? error.backtrace[0..limit].each { |frame| print_error(frame, **options) } end def print_message(message, level: :info, output: $stdout, newline: true, **fields) output = case output when :stdout, "stdout" $stdout when :stderr, "stderr" $stderr when IO, StringIO output else raise ArgumentError, "Invalid output #{output.inspect}" end message = format(message, **fields) newline ? output.puts(message) : output.print(message) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
site_maps-0.0.1.beta3 | lib/site_maps/primitives/output.rb |
site_maps-0.0.1.beta2 | lib/site_maps/primitives/output.rb |
site_maps-0.0.1.beta1 | lib/site_maps/primitives/output.rb |