class AppMap::Swagger::MarkdownDescriptions

Transform description fields into Markdown.

Public Class Methods

new(swagger_yaml) click to toggle source
# File lib/appmap/swagger/markdown_descriptions.rb, line 10
def initialize(swagger_yaml)
  @swagger_yaml = swagger_yaml
end

Public Instance Methods

converter() click to toggle source
# File lib/appmap/swagger/markdown_descriptions.rb, line 14
def converter
  method(:rdoc_to_markdown)
end
perform() click to toggle source
# File lib/appmap/swagger/markdown_descriptions.rb, line 18
def perform
  to_markdown = lambda do |obj|
    return obj.each(&to_markdown) if obj.is_a?(Array)
    return 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.(@swagger_yaml.deep_dup)
end

Protected Instance Methods

rdoc_to_markdown(comment) click to toggle source
# File lib/appmap/swagger/markdown_descriptions.rb, line 36
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