Sha256: d5b91a1c9268b51a881776bc979938f9849f27a4ae2785e6b4eda280cd8f6108

Contents?: true

Size: 956 Bytes

Versions: 3

Compression:

Stored size: 956 Bytes

Contents

require_relative '../swagger/definition'
require_relative 'property'

module Swaggard
  module Parsers
    class Models

      def run(yard_objects)
        definitions = {}

        yard_objects.each do |yard_object|
          definition = parse_yard_object(yard_object)

          definitions[definition.id] = definition if definition
        end

        definitions
      end

      def parse_yard_object(yard_object)
        return unless yard_object.type == :class

        Swagger::Definition.new(yard_object.path, ancestors: yard_object.inheritance_tree.map(&:path)).tap do |definition|
          yard_object.tags.each do |tag|
            case tag.tag_name
            when 'attr'
              property = Swaggard::Parsers::Property.run(tag)
              definition.add_property(property)
            when 'ignore_inherited'
              definition.ignore_inherited = true
            end
          end
        end
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
swaggard-1.5.1 lib/swaggard/parsers/models.rb
swaggard-1.5.0 lib/swaggard/parsers/models.rb
swaggard-1.4.0 lib/swaggard/parsers/models.rb