Sha256: c4b035014a79fd0afaf9e32498b15aef6a197561da278cae8528e8c3b5fec21f

Contents?: true

Size: 1.46 KB

Versions: 5

Compression:

Stored size: 1.46 KB

Contents

#require 'singleton'
require 'delegate'
require 'raspberry/new/binding'

class TopLevelClass < DelegateClass(TOPLEVEL_BINDING.self.class)
  #include Singleton  # doesn't seem to work with delegate
  class << self
    private :new
    def instance
      @singleton ||= new
    end
  end
  def initialize()
    super(TOPLEVEL_BINDING.self)
  end
  def binding()
    TOPLEVEL_BINDING
  end
  #def method_missing(sym, *args, &blk)
  #  TOPLEVEL_BINDING.self.send(sym, *args, &blk)
  #end
end

module Kernel
  # perhaps just call this top() ?
  def toplevel()
    TopLevelClass.instance
  end
end

# assign constant
TOPLEVEL = TopLevelClass.instance



  ###### #####   #### ######
    ##   ##     ##      ##
    ##   ####     ##    ##
    ##   ##        ##   ##
    ##   #####  ####    ##

=begin test

  require 'test/unit'

  a = "a"
  @x = "x"

  class TC_TopLevel < Test::Unit::TestCase 

    def test_compare
      assert_equal( TOPLEVEL_BINDING.self , TOPLEVEL_BINDING.self )
      assert_equal( toplevel , toplevel )
      assert_equal( TOPLEVEL , TOPLEVEL )
      assert_equal( TOPLEVEL , toplevel )
      assert_instance_of( TopLevel, toplevel )
      assert_eqaul( Object, toplevel.class )
    end

    def test_instance
      assert_nothing_raised do
        @t = toplevel
      end
    end

    def test_local_vars
      assert_equal(['a'], toplevel.local_variables)
    end

    def test_instance_vars
      assert_equal(['@x'], toplevel.self.instance_variables)
    end

  end

=end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
facets-1.4.1 forge/more/toplevel.rb
facets-1.4.2 forge/more/toplevel.rb
facets-1.4.3 forge/more/toplevel.rb
facets-1.4.4 forge/more/toplevel.rb
facets-1.4.5 snip/more/toplevel.rb