class Zapata::Primitive::Klass

Public Class Methods

new(code) click to toggle source
# File lib/zapata/primitive/klass.rb, line 6
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

Public Instance Methods

node() click to toggle source
# File lib/zapata/primitive/klass.rb, line 19
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
parent_modul_names() click to toggle source
# File lib/zapata/primitive/klass.rb, line 15
def parent_modul_names
  @moduls.map { |mod| mod&.name }.compact
end