Sha256: 22304532d3883d4cd23a3527a06570bf21f5c8d05229f34f0923f4a7475c9cad

Contents?: true

Size: 784 Bytes

Versions: 171

Compression:

Stored size: 784 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

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

        node.base_path = base_item.path
      end
    end
  end
end

Version data entries

171 entries across 171 versions & 1 rubygems

Version Path
expressir-2.1.0 lib/expressir/express/resolve_references_model_visitor.rb
expressir-2.0.0 lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.2 lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.2-x86_64-linux-musl lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.2-x86_64-linux-gnu lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.2-x86_64-darwin lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.2-x64-mingw32 lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.2-x64-mingw-ucrt lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.2-arm64-darwin lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.2-aarch64-linux-musl lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.2-aarch64-linux-gnu lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.1 lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.1-x86_64-linux-musl lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.1-x86_64-linux-gnu lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.1-x86_64-darwin lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.1-x64-mingw32 lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.1-x64-mingw-ucrt lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.1-arm64-darwin lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.1-aarch64-linux-musl lib/expressir/express/resolve_references_model_visitor.rb
expressir-1.4.1-aarch64-linux-gnu lib/expressir/express/resolve_references_model_visitor.rb