looksee 1.0.0-universal-java-1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. data/CHANGELOG +14 -0
  2. data/LICENSE +22 -0
  3. data/README.markdown +161 -0
  4. data/Rakefile +10 -0
  5. data/ext/extconf.rb +9 -0
  6. data/ext/mri/1.9.2/debug.h +36 -0
  7. data/ext/mri/1.9.2/id.h +170 -0
  8. data/ext/mri/1.9.2/method.h +103 -0
  9. data/ext/mri/1.9.2/node.h +483 -0
  10. data/ext/mri/1.9.2/thread_pthread.h +27 -0
  11. data/ext/mri/1.9.2/vm_core.h +707 -0
  12. data/ext/mri/1.9.2/vm_opts.h +51 -0
  13. data/ext/mri/env-1.8.h +27 -0
  14. data/ext/mri/eval_c-1.8.h +27 -0
  15. data/ext/mri/mri.c +269 -0
  16. data/ext/mri/node-1.9.h +35 -0
  17. data/ext/rbx/rbx.c +13 -0
  18. data/lib/looksee.rb +5 -0
  19. data/lib/looksee/adapter.rb +10 -0
  20. data/lib/looksee/adapter/base.rb +100 -0
  21. data/lib/looksee/adapter/rubinius.rb +73 -0
  22. data/lib/looksee/clean.rb +122 -0
  23. data/lib/looksee/columnizer.rb +73 -0
  24. data/lib/looksee/core_ext.rb +59 -0
  25. data/lib/looksee/editor.rb +58 -0
  26. data/lib/looksee/help.rb +54 -0
  27. data/lib/looksee/inspector.rb +55 -0
  28. data/lib/looksee/jruby.jar +0 -0
  29. data/lib/looksee/lookup_path.rb +95 -0
  30. data/lib/looksee/rbx.bundle +0 -0
  31. data/lib/looksee/shortcuts.rb +3 -0
  32. data/lib/looksee/version.rb +11 -0
  33. data/lib/looksee/wirble_compatibility.rb +86 -0
  34. data/spec/adapter_spec.rb +546 -0
  35. data/spec/columnizer_spec.rb +52 -0
  36. data/spec/core_ext_spec.rb +41 -0
  37. data/spec/editor_spec.rb +128 -0
  38. data/spec/inspector_spec.rb +178 -0
  39. data/spec/lookup_path_spec.rb +84 -0
  40. data/spec/spec_helper.rb +25 -0
  41. data/spec/support/core_ext.rb +25 -0
  42. data/spec/support/temporary_classes.rb +102 -0
  43. data/spec/support/test_adapter.rb +72 -0
  44. data/spec/wirble_compatibility_spec.rb +116 -0
  45. metadata +158 -0
@@ -0,0 +1,25 @@
1
+ require 'rspec'
2
+ require 'mocha'
3
+ require 'looksee'
4
+
5
+ require 'rbconfig'
6
+ require 'set'
7
+ require 'fileutils'
8
+
9
+ ROOT = File.dirname(File.dirname(__FILE__))
10
+
11
+ Dir['spec/support/*.rb'].each do |path|
12
+ require path
13
+ end
14
+
15
+ NATIVE_ADAPTER = Looksee.adapter
16
+
17
+ RSpec.configure do |config|
18
+ config.mock_with :mocha
19
+ config.before { Looksee.adapter = TestAdapter.new }
20
+ end
21
+
22
+ if Looksee.ruby_engine == 'jruby'
23
+ require 'jruby'
24
+ JRuby.objectspace = true
25
+ end
@@ -0,0 +1,25 @@
1
+ class Object
2
+ #
3
+ # Return this object's singleton class.
4
+ #
5
+ def singleton_class
6
+ class << self; self; end
7
+ end
8
+
9
+ #
10
+ # Return true if the given object include?-s this object.
11
+ #
12
+ def in?(object)
13
+ object.include?(self)
14
+ end
15
+ end
16
+
17
+ class String
18
+ #
19
+ # Remove a left margin delimited by '|'-characters. Useful for
20
+ # heredocs:
21
+ #
22
+ def demargin
23
+ gsub(/^ *\|/, '')
24
+ end
25
+ end
@@ -0,0 +1,102 @@
1
+ #
2
+ # Include these in example groups to add facilities to create
3
+ # temporary classes and modules, which are swept up at the end of each
4
+ # example.
5
+ #
6
+ # Call make_class('ClassName') or make_module('ModuleName') to create
7
+ # a temporary class, then access them with plain constants (ClassName,
8
+ # ModuleName).
9
+ #
10
+ module TemporaryClasses
11
+ def self.included(mod)
12
+ mod.before do
13
+ @temporary_modules = []
14
+ end
15
+
16
+ mod.after do
17
+ @temporary_modules.each do |mod|
18
+ Object.send :remove_const, mod.name
19
+ end
20
+ end
21
+ end
22
+
23
+ #
24
+ # Create a temporary class with the given name and superclass.
25
+ #
26
+ def temporary_class(name, options={}, &block)
27
+ klass = Class.new(options[:superclass] || Object)
28
+ Object.const_set(name, klass)
29
+ klass.class_eval(&block) if block
30
+ @temporary_modules << klass
31
+ klass
32
+ end
33
+
34
+ #
35
+ # Create a temporary module with the given name.
36
+ #
37
+ def temporary_module(name, &block)
38
+ mod = Module.new
39
+ Object.const_set(name, mod)
40
+ mod.class_eval(&block) if block
41
+ @temporary_modules << mod
42
+ mod
43
+ end
44
+
45
+ #
46
+ # Remove all methods defined exactly on the given module.
47
+ #
48
+ # As Ruby's reflection on singleton classes of classes isn't quite
49
+ # adequate, you need to provide a :class_singleton option when such
50
+ # a class is given.
51
+ #
52
+ def remove_methods(mod, opts={})
53
+ names = all_instance_methods(mod)
54
+
55
+ # all_instance_methods can't get just the methods on a class
56
+ # singleton class. Filter out superclass methods here.
57
+ if opts[:class_singleton]
58
+ klass = ObjectSpace.each_object(mod){|klass| break klass}
59
+ names -= all_instance_methods(klass.superclass.singleton_class)
60
+ end
61
+
62
+ names.sort_by{|name| name.in?([:remove_method, :send]) ? 1 : 0}.flatten
63
+ names.each do |name|
64
+ mod.send :remove_method, name
65
+ end
66
+ end
67
+
68
+ #
69
+ # Replace the methods of the given module with those named.
70
+ #
71
+ # +methods+ is a hash of visibilities to names.
72
+ #
73
+ # As Ruby's reflection on singleton classes of classes isn't quite
74
+ # adequate, you need to provide a :class_singleton option when such
75
+ # a class is given.
76
+ #
77
+ # e.g.:
78
+ #
79
+ # replace_methods MyClass, :public => [:a, :b]
80
+ #
81
+ def replace_methods(mod, options={})
82
+ remove_methods(mod, options)
83
+ mod.module_eval do
84
+ [:public, :protected, :private].each do |visibility|
85
+ Array(options[visibility]).each do |name|
86
+ define_method(name){}
87
+ send visibility, name
88
+ end
89
+ end
90
+ end
91
+ end
92
+
93
+ private # ---------------------------------------------------------
94
+
95
+ def all_instance_methods(mod)
96
+ names =
97
+ mod.public_instance_methods(false) +
98
+ mod.protected_instance_methods(false) +
99
+ mod.private_instance_methods(false)
100
+ names.map{|name| name.to_sym} # they're strings in ruby <1.9
101
+ end
102
+ end
@@ -0,0 +1,72 @@
1
+ class TestAdapter < Looksee::Adapter::Base
2
+ def lookup_modules(object)
3
+ ancestors[object]
4
+ end
5
+
6
+ def internal_public_instance_methods(mod)
7
+ public_methods[mod]
8
+ end
9
+
10
+ def internal_protected_instance_methods(mod)
11
+ protected_methods[mod]
12
+ end
13
+
14
+ def internal_private_instance_methods(mod)
15
+ private_methods[mod]
16
+ end
17
+
18
+ def internal_undefined_instance_methods(mod)
19
+ undefined_methods[mod]
20
+ end
21
+
22
+ def singleton_class?(object)
23
+ NATIVE_ADAPTER.singleton_class?(object)
24
+ end
25
+
26
+ def singleton_instance(object)
27
+ NATIVE_ADAPTER.singleton_instance(object)
28
+ end
29
+
30
+ def module_name(object)
31
+ NATIVE_ADAPTER.module_name(object)
32
+ end
33
+
34
+ def set_methods(mod, public, protected, private, undefined)
35
+ self.public_methods[mod] = public
36
+ self.protected_methods[mod] = protected
37
+ self.private_methods[mod] = private
38
+ self.undefined_methods[mod] = undefined
39
+ end
40
+
41
+ def source_location(method)
42
+ source_locations[[method.owner.name.to_s, method.name.to_s]]
43
+ end
44
+
45
+ def set_source_location(mod, method, location)
46
+ source_locations[[mod.name.to_s, method.to_s]] = location
47
+ end
48
+
49
+ def ancestors
50
+ @ancestors ||= Hash.new { |h, k| h[k] = [] }
51
+ end
52
+
53
+ def public_methods
54
+ @public_methods ||= Hash.new { |h, k| h[k] = [] }
55
+ end
56
+
57
+ def protected_methods
58
+ @protected_methods ||= Hash.new { |h, k| h[k] = [] }
59
+ end
60
+
61
+ def private_methods
62
+ @private_methods ||= Hash.new { |h, k| h[k] = [] }
63
+ end
64
+
65
+ def undefined_methods
66
+ @undefined_methods ||= Hash.new { |h, k| h[k] = [] }
67
+ end
68
+
69
+ def source_locations
70
+ @source_locations ||= {}
71
+ end
72
+ end
@@ -0,0 +1,116 @@
1
+ require 'spec_helper'
2
+ gem 'wirble' # die if wirble unavailable
3
+
4
+ describe Looksee::WirbleCompatibility do
5
+ describe "when looksee is loaded" do
6
+ #
7
+ # Run the given ruby string, and return the standard output.
8
+ #
9
+ def init_irb_with(code)
10
+ code = <<-EOS.demargin
11
+ |#{code}
12
+ |#{setup_code}
13
+ |c.ls
14
+ EOS
15
+ code = code.chomp.gsub(/\n/, ';') # only print value of last line
16
+ irb = File.join Config::CONFIG['bindir'], 'irb'
17
+ lib_dir = File.expand_path('lib')
18
+ # irb hangs when using readline without a tty
19
+ output = IO.popen("#{irb} -f --noreadline --noprompt --noverbose -I#{lib_dir} 2>&1", 'r+') do |io|
20
+ io.puts code
21
+ io.flush
22
+ io.close_write
23
+ io.read
24
+ end
25
+ # Ruby 1.9.2 prints an extra newline on exit.
26
+ output.chomp! if RUBY_VERSION >= '1.9.2'
27
+ output
28
+ end
29
+
30
+ def setup_code
31
+ <<-EOS.demargin
32
+ |C = Class.new
33
+ |c = C.new
34
+ |#{File.read('spec/support/test_adapter.rb')}
35
+ |
36
+ |Looksee.styles = Hash.new{'%s'}
37
+ |Looksee.styles[:public] = "\\e[1;32m%s\\e[0m"
38
+ |NATIVE_ADAPTER = Looksee.adapter
39
+ |Looksee.adapter = TestAdapter.new
40
+ |Looksee.adapter.ancestors[c] = [C]
41
+ |Looksee.adapter.public_methods[C] = [:a]
42
+ EOS
43
+ end
44
+
45
+ it "should work if wirble is not loaded" do
46
+ output = init_irb_with(<<-EOS.demargin)
47
+ |require 'irb'
48
+ |require 'looksee'
49
+ |require 'wirble'
50
+ |Wirble.init
51
+ |Wirble.colorize
52
+ EOS
53
+ output.should == <<-EOS.demargin
54
+ |C
55
+ | \e[1;32ma\e[0m
56
+ EOS
57
+ end
58
+
59
+ it "should work if wirble is loaded, but not initialized" do
60
+ output = init_irb_with(<<-EOS.demargin)
61
+ |require 'irb'
62
+ |require 'wirble'
63
+ |require 'looksee'
64
+ |Wirble.init
65
+ |Wirble.colorize
66
+ EOS
67
+ output.should == <<-EOS.demargin
68
+ |C
69
+ | \e[1;32ma\e[0m
70
+ EOS
71
+ end
72
+
73
+ it "should work if wirble is loaded and initialized, but colorizing is off" do
74
+ output = init_irb_with(<<-EOS.demargin)
75
+ |require 'irb'
76
+ |require 'wirble'
77
+ |Wirble.init
78
+ |require 'looksee'
79
+ |Wirble.colorize
80
+ EOS
81
+ output.should == <<-EOS.demargin
82
+ |C
83
+ | \e[1;32ma\e[0m
84
+ EOS
85
+ end
86
+
87
+ it "should work if wirble is loaded, initialized, and colorizing is on" do
88
+ output = init_irb_with(<<-EOS.demargin)
89
+ |require 'irb'
90
+ |require 'wirble'
91
+ |Wirble.init
92
+ |Wirble.colorize
93
+ |require 'looksee'
94
+ EOS
95
+ output.should == <<-EOS.demargin
96
+ |C
97
+ | \e[1;32ma\e[0m
98
+ EOS
99
+ end
100
+
101
+ it "should work if wirble colorizing is enabled twice" do
102
+ output = init_irb_with(<<-EOS.demargin)
103
+ |require 'irb'
104
+ |require 'looksee'
105
+ |require 'wirble'
106
+ |Wirble.init
107
+ |Wirble.colorize
108
+ |Wirble.colorize
109
+ EOS
110
+ output.should == <<-EOS.demargin
111
+ |C
112
+ | \e[1;32ma\e[0m
113
+ EOS
114
+ end
115
+ end
116
+ end
metadata ADDED
@@ -0,0 +1,158 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: looksee
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 0
9
+ version: 1.0.0
10
+ platform: universal-java-1.6
11
+ authors:
12
+ - George Ogata
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-03-09 00:00:00 -05:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: ritual
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 2
30
+ - 0
31
+ version: 0.2.0
32
+ type: :development
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: rspec
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 2
43
+ - 0
44
+ - 0
45
+ version: 2.0.0
46
+ type: :development
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: mocha
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 0
57
+ version: "0"
58
+ type: :development
59
+ version_requirements: *id003
60
+ - !ruby/object:Gem::Dependency
61
+ name: wirble
62
+ prerelease: false
63
+ requirement: &id004 !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ segments:
68
+ - 0
69
+ version: "0"
70
+ type: :development
71
+ version_requirements: *id004
72
+ description:
73
+ email:
74
+ - george.ogata@gmail.com
75
+ executables: []
76
+
77
+ extensions: []
78
+
79
+ extra_rdoc_files:
80
+ - CHANGELOG
81
+ - LICENSE
82
+ - README.markdown
83
+ files:
84
+ - lib/looksee.rb
85
+ - lib/looksee/adapter.rb
86
+ - lib/looksee/clean.rb
87
+ - lib/looksee/columnizer.rb
88
+ - lib/looksee/core_ext.rb
89
+ - lib/looksee/editor.rb
90
+ - lib/looksee/help.rb
91
+ - lib/looksee/inspector.rb
92
+ - lib/looksee/jruby.jar
93
+ - lib/looksee/lookup_path.rb
94
+ - lib/looksee/rbx.bundle
95
+ - lib/looksee/shortcuts.rb
96
+ - lib/looksee/version.rb
97
+ - lib/looksee/wirble_compatibility.rb
98
+ - lib/looksee/adapter/base.rb
99
+ - lib/looksee/adapter/rubinius.rb
100
+ - ext/mri/mri.c
101
+ - ext/rbx/rbx.c
102
+ - ext/mri/env-1.8.h
103
+ - ext/mri/eval_c-1.8.h
104
+ - ext/mri/node-1.9.h
105
+ - ext/mri/1.9.2/debug.h
106
+ - ext/mri/1.9.2/id.h
107
+ - ext/mri/1.9.2/method.h
108
+ - ext/mri/1.9.2/node.h
109
+ - ext/mri/1.9.2/thread_pthread.h
110
+ - ext/mri/1.9.2/vm_core.h
111
+ - ext/mri/1.9.2/vm_opts.h
112
+ - ext/extconf.rb
113
+ - CHANGELOG
114
+ - LICENSE
115
+ - Rakefile
116
+ - README.markdown
117
+ has_rdoc: true
118
+ homepage: http://github.com/oggy/looksee
119
+ licenses: []
120
+
121
+ post_install_message:
122
+ rdoc_options: []
123
+
124
+ require_paths:
125
+ - lib
126
+ required_ruby_version: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ segments:
131
+ - 0
132
+ version: "0"
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ segments:
138
+ - 0
139
+ version: "0"
140
+ requirements: []
141
+
142
+ rubyforge_project:
143
+ rubygems_version: 1.3.6
144
+ signing_key:
145
+ specification_version: 3
146
+ summary: Supercharged method introspection in IRB.
147
+ test_files:
148
+ - spec/adapter_spec.rb
149
+ - spec/columnizer_spec.rb
150
+ - spec/core_ext_spec.rb
151
+ - spec/editor_spec.rb
152
+ - spec/inspector_spec.rb
153
+ - spec/lookup_path_spec.rb
154
+ - spec/spec_helper.rb
155
+ - spec/wirble_compatibility_spec.rb
156
+ - spec/support/core_ext.rb
157
+ - spec/support/temporary_classes.rb
158
+ - spec/support/test_adapter.rb