Module: CovLoupe::Formatters
- Defined in:
- lib/cov_loupe/formatters/formatters.rb,
lib/cov_loupe/formatters/source_formatter.rb
Defined Under Namespace
Classes: SourceFormatter
Constant Summary collapse
- FORMATTERS =
Registry of format lambdas. Each lambda receives the object to format and an ascii_mode keyword.
{ table: ->(obj, **) { obj }, json: ->(obj, ascii_mode:) { require 'json' ascii_mode ? JSON.generate(obj, ascii_only: true) : obj.to_json }, pretty_json: ->(obj, ascii_mode:) { require 'json' ascii_mode ? JSON.pretty_generate(obj, ascii_only: true) : JSON.pretty_generate(obj) }, yaml: ->(obj, ascii_mode:) { require 'yaml' yaml = obj.to_yaml ascii_mode ? OutputChars.convert(yaml, :ascii) : yaml }, amazing_print: ->(obj, ascii_mode:) { require 'amazing_print' result = obj.ai ascii_mode ? OutputChars.convert(result, :ascii) : result }, inspect: ->(obj, ascii_mode:) { result = obj.inspect ascii_mode ? OutputChars.convert(result, :ascii) : result }, puts: ->(obj, ascii_mode:) { sio = StringIO.new sio.puts(obj) result = sio.string ascii_mode ? OutputChars.convert(result, :ascii) : result }, pretty_print: ->(obj, ascii_mode:) { require 'pp' sio = StringIO.new PP.pp(obj, sio) result = sio.string ascii_mode ? OutputChars.convert(result, :ascii) : result }, }.freeze
Class Method Summary collapse
-
.format(obj, format, output_chars: :default) ⇒ String
Formats an object using the specified format.
Class Method Details
.format(obj, format, output_chars: :default) ⇒ String
Formats an object using the specified format.
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/cov_loupe/formatters/formatters.rb', line 65 def self.format(obj, format, output_chars: :default) formatter = FORMATTERS.fetch(format) { raise ArgumentError, "Unknown format: #{format}" } ascii_mode = OutputChars.ascii_mode?(output_chars) formatter.call(obj, ascii_mode: ascii_mode) rescue LoadError => e gem_name = e.[/-- (\S+)/, 1] || 'required gem' raise LoadError, "The #{format} format requires the '#{gem_name}' gem. " \ "Install it with: gem install #{gem_name}" end |