Sha256: 4d679d012e831b76a707b84d41e703d3b286783ffef8642862b6f0d04f80eade

Contents?: true

Size: 853 Bytes

Versions: 2

Compression:

Stored size: 853 Bytes

Contents

require_relative '../swagger/operation'
require_relative '../swagger/tag'

module Swaggard
  module Parsers
    class Controller
      def run(yard_objects)
        tags = nil
        operations = {}

        yard_objects.each do |yard_object|
          if yard_object.type == :class
            tags = get_tags(yard_object)
          elsif tags && yard_object.type == :method
            name = yard_object.name
            operations[name.to_s] = yard_object
          end
        end

        return tags, operations
      end

      private

      def get_tags(yard_object)
        tags = yard_object.tags.select { |tag| tag.tag_name == 'tag' }

        if tags.empty? && !Swaggard.configuration.ignore_untagged_controllers
          tags << nil
        end

        tags.map { |tag| Swagger::Tag.new(yard_object, tag) }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
swaggard-1.5.1 lib/swaggard/parsers/controller.rb
swaggard-1.5.0 lib/swaggard/parsers/controller.rb