Sha256: c73dd8cb8b4773240a3595d7be22990cfad0d83b9fe587b7d662bd948dcd233a

Contents?: true

Size: 822 Bytes

Versions: 1

Compression:

Stored size: 822 Bytes

Contents

# frozen_string_literal: true

module Zapata
  module Primitive
    class Klass < Base
      def initialize(code)
        @code = code
        @moduls = Diver.current_moduls.dup
        Diver.access_level = :public
        Diver.current_klass = self
        dive_deeper
        Diver.current_klass = nil
      end

      def parent_modul_names
        @moduls.map { |mod| mod&.name }.compact
      end

      def node
        const, _, body = @code.to_a
        immediate_modul, klass = const.to_a
        chain = parent_modul_names + [immediate_modul, klass]
        name = chain.compact.join('::')
        type = @code.type

        OpenStruct.new(
          type: type,
          immediate_modul: immediate_modul,
          klass: klass,
          name: name,
          body: body
        )
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
zapata-1.0.0 lib/zapata/primitive/klass.rb