Sha256: aec8baf6d3cc5d8bd4b7e4e4ad40f135f72e277f115dd61015d000b668dc0f58

Contents?: true

Size: 832 Bytes

Versions: 2

Compression:

Stored size: 832 Bytes

Contents

#
# Pervasives allows objects' method to be accessed in a pristine state, even
# when some effort has been made to derride them
#
  require 'pervasives'

  class OpenStruct 
    instance_methods.each{|m| undef_method m unless m[%r/__/]}

    def initialize
      @table = {}
    end

    def method_missing m, *a, &b
      case m.to_s
        when %r/[=]$/
          @table[m.to_s.delete('=')] = a.shift
        when %r/[?!]$/
          !!@table[m.to_s.delete('?!')]
        else
          @table[m.to_s]
      end
    end

    def inspect
      @table.inspect
    end
  end

  os = OpenStruct.new

  os.object_id = 42
  os.send = 42
  os.instance_eval = 42

  p os

  p os.object_id
  p Pervasives.object_id(os)

  p os.send
  p Pervasives.send(os, "key=", "value")

  p os.instance_eval
  p Pervasives.instance_eval(os){ @table }

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pervasives-1.0.0 samples/a.rb
pervasives-0.0.1 samples/a.rb