Sha256: a40cc520aed711546ad5bb3d1b1f25054981a185ab0f70deb4949c97d9144361

Contents?: true

Size: 821 Bytes

Versions: 10

Compression:

Stored size: 821 Bytes

Contents

require "expressir/express/model_visitor"
require "expressir/model"

module Expressir
  module Express
    class ResolveReferencesModelVisitor < ModelVisitor
      def visit(node)
        if node.is_a? Model::References::SimpleReference
          visit_references_simple_reference(node)
        end

        super
      end

      private

      def visit_references_simple_reference(node)
        return if node.parent.is_a? Model::References::AttributeReference

        base_item = if node.parent.is_a? Model::Declarations::InterfaceItem
                      node.find("#{node.parent.parent.schema.id}.#{node.parent.ref.id}")
                    else
                      node.find(node.id)
                    end
        return unless base_item

        node.base_path = base_item.path
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
expressir-2.1.10 lib/expressir/express/resolve_references_model_visitor.rb
expressir-2.1.9 lib/expressir/express/resolve_references_model_visitor.rb
expressir-2.1.8 lib/expressir/express/resolve_references_model_visitor.rb
expressir-2.1.7 lib/expressir/express/resolve_references_model_visitor.rb
expressir-2.1.6 lib/expressir/express/resolve_references_model_visitor.rb
expressir-2.1.5 lib/expressir/express/resolve_references_model_visitor.rb
expressir-2.1.4 lib/expressir/express/resolve_references_model_visitor.rb
expressir-2.1.3 lib/expressir/express/resolve_references_model_visitor.rb
expressir-2.1.2 lib/expressir/express/resolve_references_model_visitor.rb
expressir-2.1.1 lib/expressir/express/resolve_references_model_visitor.rb