Sha256: 3ebb8edd67f59818da0172ef73b7be394a5c8dc06be3709035c5947a933ca75c

Contents?: true

Size: 1.06 KB

Versions: 50

Compression:

Stored size: 1.06 KB

Contents

require 'rdoc'
require 'reverse_markdown'

module AppMap
  module Swagger
    # Transform description fields into Markdown.
    class MarkdownDescriptions
      def initialize(swagger_yaml)
        @swagger_yaml = swagger_yaml
      end

      def converter
        method(:rdoc_to_markdown)
      end

      def perform
        to_markdown = lambda do |obj|
          next obj.each(&to_markdown) if obj.is_a?(Array)
          next unless obj.is_a?(Hash)

          description = obj['description']
          obj['description'] = converter.(description) if description

          obj.reject { |k,v| k == 'properties' }.each_value(&to_markdown)

          obj
        end

        to_markdown.(Util.deep_dup(@swagger_yaml))
      end

      protected

      def rdoc_to_markdown(comment)
        # Strip tags
        comment = comment.split("\n").reject { |line| line =~ /^\s*@/ }.join("\n")
        converter = ::RDoc::Markup::ToHtml.new(::RDoc::Options.new)
        html = converter.convert(comment).strip
        ::ReverseMarkdown.convert(html).strip
      end
    end
  end
end

Version data entries

50 entries across 50 versions & 1 rubygems

Version Path
appmap-1.1.1 lib/appmap/swagger/markdown_descriptions.rb
appmap-1.0.1 lib/appmap/swagger/markdown_descriptions.rb
appmap-1.0.0 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.103.0 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.102.2 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.102.1 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.102.0 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.101.0 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.100.0 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.99.4 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.99.2 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.99.1 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.99.0 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.98.1 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.98.0 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.97.0 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.96.0 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.95.2 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.95.1 lib/appmap/swagger/markdown_descriptions.rb
appmap-0.95.0 lib/appmap/swagger/markdown_descriptions.rb