File: //proc/thread-self/root/usr/lib/ruby/gems/3.2.0/gems/rbs-2.8.2/lib/rbs/annotate/formatter.rb
# frozen_string_literal: true
module RBS
module Annotate
class Formatter
attr_reader :buffer
def initialize()
@buffer = +""
@pending_separator = nil
end
def <<(s)
if s
if s.is_a?(RDoc::Markup::Document)
s = self.class.translate(s) or raise
end
s = s.rstrip
unless s.empty?
if ss = @pending_separator
buffer << ss
buffer << "\n"
@pending_separator = nil
end
buffer << s
buffer << "\n"
end
end
self
end
def margin(separator: "")
unless buffer.empty?
@pending_separator = separator
end
self
end
def empty?
buffer.empty?
end
def format(newline_at_end:)
unless buffer.empty?
if newline_at_end
buffer.strip + "\n\n"
else
buffer.strip + "\n"
end
else
buffer
end
end
def self.each_part(doc, &block)
if block
if doc.file
yield doc
else
doc.each do |d|
each_part(d, &block)
end
end
else
enum_for :each_part, doc
end
end
def self.translate(doc)
if doc.file
formatter = RDoc::Markup::ToMarkdown.new
doc.accept(formatter).strip.lines.map(&:rstrip).join("\n")
end
end
end
end
end