class Prettyrb::Formatter

Attributes

code[R]

Public Class Methods

new(code) click to toggle source
# File lib/prettyrb/formatter.rb, line 5
def initialize(code)
  @code = code
end

Public Instance Methods

format() click to toggle source
# File lib/prettyrb/formatter.rb, line 9
def format
  parser = Parser::CurrentRuby.new(Prettyrb::Builder.new)

  parser.diagnostics.all_errors_are_fatal = true
  parser.diagnostics.ignore_warnings      = true

  parser.diagnostics.consumer = lambda do |diagnostic|
    $stderr.puts(diagnostic.render)
  end

  root_node, _comments = parser.parse_with_comments(
    Parser::CurrentRuby.send(:setup_source_buffer, "file='(string)'", 1, @code, parser.default_encoding)
  )

  visitor = Visitor.new(root_node)
  visitor.visit(root_node)

  visitor.output
end