Sha256: 899eecb3d402cbdcb4d097b53f8173ebe5902404dc23ba0bb4d73d71cd4fc86d

Contents?: true

Size: 817 Bytes

Versions: 10

Compression:

Stored size: 817 Bytes

Contents

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 and mod.name }.compact
      end

      def node
        const, inherited_from_klass, 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

10 entries across 10 versions & 1 rubygems

Version Path
zapata-0.1.6 lib/zapata/primitive/klass.rb
zapata-0.1.5 lib/zapata/primitive/klass.rb
zapata-0.1.4 lib/zapata/primitive/klass.rb
zapata-0.1.3 lib/zapata/primitive/klass.rb
zapata-0.1.2 lib/zapata/primitive/klass.rb
zapata-0.1.1 lib/zapata/primitive/klass.rb
zapata-0.1.0 lib/zapata/primitive/klass.rb
zapata-0.0.3 lib/zapata/primitive/klass.rb
zapata-0.0.2 lib/zapata/primitive/klass.rb
zapata-0.0.1 lib/zapata/primitive/klass.rb