Sha256: d1f50f04ff794680554b6254ef7b2313e4c3e4b790965379a0860b925dea7e3e

Contents?: true

Size: 1.48 KB

Versions: 11

Compression:

Stored size: 1.48 KB

Contents

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.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

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
rbs-2.6.0 lib/rbs/annotate/formatter.rb
rbs-2.5.1 lib/rbs/annotate/formatter.rb
rbs-2.5.0 lib/rbs/annotate/formatter.rb
rbs-2.4.0 lib/rbs/annotate/formatter.rb
rbs-2.3.2 lib/rbs/annotate/formatter.rb
rbs-2.3.1 lib/rbs/annotate/formatter.rb
rbs-2.3.0 lib/rbs/annotate/formatter.rb
rbs-2.2.2 lib/rbs/annotate/formatter.rb
rbs-2.2.1 lib/rbs/annotate/formatter.rb
rbs-2.2.0 lib/rbs/annotate/formatter.rb
rbs-2.1.0 lib/rbs/annotate/formatter.rb