Sha256: efd10cdf5ddc4b4dd0d10636d3b0ec53e349a360cb79e8617d7ec4d4a8a14632

Contents?: true

Size: 1.01 KB

Versions: 3

Compression:

Stored size: 1.01 KB

Contents

require 'ruby/reflection/field_mirror/class_variable_mirror'
require 'ruby/reflection/field_mirror/instance_variable_mirror'
require 'ruby/reflection/field_mirror/constant_mirror'
require 'maglev/reflection/field_mirror/fixed_instance_variable_mirror'

module Maglev
  class Reflection
    class FieldMirror < Mirror
      include AbstractReflection::FieldMirror
      Field = Struct.new(:object, :name)
      reflect! Field

      def self.mirror_class(field)
        if reflects?(field)
          case
          when field.name.start_with?("@@")
            Ruby::Reflection::ClassVariableMirror
          when field.name.start_with?("@")
            Ruby::Reflection::InstanceVariableMirror
          when field.name === Symbol
            FixedInstanceVariableMirror
          else
            Ruby::Reflection::ConstantMirror
          end
        end
      end

      def initialize(obj)
        super
        @object = obj.object
        @name = obj.name
      end

      def name
        @name
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rubymirrors-0.0.3 lib/maglev/reflection/field_mirror.rb
rubymirrors-0.0.2 lib/maglev/reflection/field_mirror.rb
rubymirrors-0.0.1 lib/maglev/reflection/field_mirror.rb