Sha256: 2e870e46997cceb23a5a9fc3a9bd2c71584a6abe322e6d092775ef8b4500a0c1

Contents?: true

Size: 967 Bytes

Versions: 1

Compression:

Stored size: 967 Bytes

Contents

require_relative '../swagger/definition'
require_relative '../swagger/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

1 entries across 1 versions & 1 rubygems

Version Path
swaggard-1.3.0 lib/swaggard/parsers/models.rb