Sha256: eed1fd6a2e12fdb27237e791cbcdcd8459ac345b541b4b394ca3adc75f3c5dd2

Contents?: true

Size: 864 Bytes

Versions: 1

Compression:

Stored size: 864 Bytes

Contents

module Swagger
  # A module that attaches parent objects to their children so you can navigate back
  # up the hierarchy.
  module Attachable
    # The top-level object in the hierarchy.
    def root
      return self if parent.nil?
      parent.root
    end

    # @api private
    def attach_parent(parent)
      @parent = parent
      attach_to_children
    end

    # @api private
    def attach_to_children
      each_value do |v| # rubocop:disable Style/Next
        v.attach_parent self if v.respond_to? :attach_parent
        if v.respond_to? :each_value
          v.each_value do |sv|
            sv.attach_parent self if sv.respond_to? :attach_parent
          end
        end
        if v.respond_to? :each
          v.each do |sv|
            sv.attach_parent self if sv.respond_to? :attach_parent
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
swagger-core-0.2.3 lib/swagger/attachable.rb