looksee 0.2.1 → 1.0.0

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 (57) hide show
  1. data/CHANGELOG +14 -0
  2. data/LICENSE +22 -0
  3. data/README.markdown +161 -0
  4. data/Rakefile +9 -36
  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/{looksee → mri}/node-1.9.h +0 -0
  17. data/ext/rbx/rbx.c +13 -0
  18. data/lib/looksee.rb +4 -385
  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/lookup_path.rb +95 -0
  29. data/lib/looksee/rbx.bundle +0 -0
  30. data/lib/looksee/shortcuts.rb +1 -105
  31. data/lib/looksee/version.rb +9 -1
  32. data/lib/looksee/wirble_compatibility.rb +2 -3
  33. data/spec/adapter_spec.rb +546 -0
  34. data/spec/columnizer_spec.rb +52 -0
  35. data/spec/core_ext_spec.rb +41 -0
  36. data/spec/editor_spec.rb +128 -0
  37. data/spec/inspector_spec.rb +178 -0
  38. data/spec/lookup_path_spec.rb +84 -0
  39. data/spec/spec_helper.rb +13 -127
  40. data/spec/support/core_ext.rb +25 -0
  41. data/spec/support/temporary_classes.rb +102 -0
  42. data/spec/support/test_adapter.rb +72 -0
  43. data/spec/wirble_compatibility_spec.rb +20 -23
  44. metadata +91 -57
  45. data/.autotest +0 -9
  46. data/History.txt +0 -22
  47. data/Manifest.txt +0 -21
  48. data/README.rdoc +0 -129
  49. data/ext/looksee/extconf.rb +0 -6
  50. data/ext/looksee/looksee.c +0 -144
  51. data/looksee.gemspec +0 -44
  52. data/script/console +0 -7
  53. data/script/destroy +0 -14
  54. data/script/generate +0 -14
  55. data/spec/looksee_spec.rb +0 -425
  56. data/tasks/extconf.rake +0 -13
  57. data/tasks/extconf/looksee.rake +0 -43
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: looksee
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ prerelease:
5
+ version: 1.0.0
5
6
  platform: ruby
6
7
  authors:
7
8
  - George Ogata
@@ -9,112 +10,145 @@ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
12
 
12
- date: 2009-08-30 00:00:00 -04:00
13
+ date: 2011-03-09 00:00:00 -05:00
13
14
  default_executable:
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
- name: newgem
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
17
+ name: ritual
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
20
21
  requirements:
21
22
  - - ">="
22
23
  - !ruby/object:Gem::Version
23
- version: 1.5.2
24
- version:
24
+ version: 0.2.0
25
+ type: :development
26
+ version_requirements: *id001
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: rspec
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
30
32
  requirements:
31
33
  - - ">="
32
34
  - !ruby/object:Gem::Version
33
- version: 1.2.7
34
- version:
35
+ version: 2.0.0
36
+ type: :development
37
+ version_requirements: *id002
35
38
  - !ruby/object:Gem::Dependency
36
39
  name: mocha
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
40
43
  requirements:
41
44
  - - ">="
42
45
  - !ruby/object:Gem::Version
43
- version: 0.9.5
44
- version:
45
- - !ruby/object:Gem::Dependency
46
- name: hoe
46
+ version: "0"
47
47
  type: :development
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: wirble
51
+ prerelease: false
52
+ requirement: &id004 !ruby/object:Gem::Requirement
53
+ none: false
50
54
  requirements:
51
55
  - - ">="
52
56
  - !ruby/object:Gem::Version
53
- version: 2.3.2
54
- version:
55
- description: |-
56
- Looksee lets you examine the method lookup path of objects in ways not
57
- possible in plain ruby.
57
+ version: "0"
58
+ type: :development
59
+ version_requirements: *id004
60
+ description:
58
61
  email:
59
62
  - george.ogata@gmail.com
60
63
  executables: []
61
64
 
62
65
  extensions:
63
- - ext/looksee/extconf.rb
66
+ - ext/extconf.rb
64
67
  extra_rdoc_files:
65
- - History.txt
66
- - Manifest.txt
68
+ - CHANGELOG
69
+ - LICENSE
70
+ - README.markdown
67
71
  files:
68
- - .autotest
69
- - History.txt
70
- - Manifest.txt
71
- - README.rdoc
72
- - Rakefile
73
- - ext/looksee/extconf.rb
74
- - ext/looksee/looksee.c
75
- - ext/looksee/node-1.9.h
76
- - lib/looksee.rb
72
+ - lib/looksee/adapter/base.rb
73
+ - lib/looksee/adapter/rubinius.rb
74
+ - lib/looksee/adapter.rb
75
+ - lib/looksee/clean.rb
76
+ - lib/looksee/columnizer.rb
77
+ - lib/looksee/core_ext.rb
78
+ - lib/looksee/editor.rb
79
+ - lib/looksee/help.rb
80
+ - lib/looksee/inspector.rb
81
+ - lib/looksee/lookup_path.rb
82
+ - lib/looksee/rbx.bundle
77
83
  - lib/looksee/shortcuts.rb
78
84
  - lib/looksee/version.rb
79
85
  - lib/looksee/wirble_compatibility.rb
80
- - looksee.gemspec
81
- - script/console
82
- - script/destroy
83
- - script/generate
84
- - spec/looksee_spec.rb
86
+ - lib/looksee.rb
87
+ - ext/mri/mri.c
88
+ - ext/rbx/rbx.c
89
+ - ext/mri/1.9.2/debug.h
90
+ - ext/mri/1.9.2/id.h
91
+ - ext/mri/1.9.2/method.h
92
+ - ext/mri/1.9.2/node.h
93
+ - ext/mri/1.9.2/thread_pthread.h
94
+ - ext/mri/1.9.2/vm_core.h
95
+ - ext/mri/1.9.2/vm_opts.h
96
+ - ext/mri/env-1.8.h
97
+ - ext/mri/eval_c-1.8.h
98
+ - ext/mri/node-1.9.h
99
+ - ext/extconf.rb
100
+ - CHANGELOG
101
+ - LICENSE
102
+ - Rakefile
103
+ - README.markdown
104
+ - spec/adapter_spec.rb
105
+ - spec/columnizer_spec.rb
106
+ - spec/core_ext_spec.rb
107
+ - spec/editor_spec.rb
108
+ - spec/inspector_spec.rb
109
+ - spec/lookup_path_spec.rb
85
110
  - spec/spec_helper.rb
111
+ - spec/support/core_ext.rb
112
+ - spec/support/temporary_classes.rb
113
+ - spec/support/test_adapter.rb
86
114
  - spec/wirble_compatibility_spec.rb
87
- - tasks/extconf.rake
88
- - tasks/extconf/looksee.rake
89
115
  has_rdoc: true
90
116
  homepage: http://github.com/oggy/looksee
91
117
  licenses: []
92
118
 
93
119
  post_install_message:
94
- rdoc_options:
95
- - --main
96
- - README.rdoc
120
+ rdoc_options: []
121
+
97
122
  require_paths:
98
123
  - lib
99
- - ext/looksee
100
124
  required_ruby_version: !ruby/object:Gem::Requirement
125
+ none: false
101
126
  requirements:
102
127
  - - ">="
103
128
  - !ruby/object:Gem::Version
104
129
  version: "0"
105
- version:
106
130
  required_rubygems_version: !ruby/object:Gem::Requirement
131
+ none: false
107
132
  requirements:
108
133
  - - ">="
109
134
  - !ruby/object:Gem::Version
110
135
  version: "0"
111
- version:
112
136
  requirements: []
113
137
 
114
- rubyforge_project: looksee
115
- rubygems_version: 1.3.5
138
+ rubyforge_project:
139
+ rubygems_version: 1.5.2
116
140
  signing_key:
117
141
  specification_version: 3
118
- summary: Looksee lets you examine the method lookup path of objects in ways not possible in plain ruby.
119
- test_files: []
120
-
142
+ summary: Supercharged method introspection in IRB.
143
+ test_files:
144
+ - spec/adapter_spec.rb
145
+ - spec/columnizer_spec.rb
146
+ - spec/core_ext_spec.rb
147
+ - spec/editor_spec.rb
148
+ - spec/inspector_spec.rb
149
+ - spec/lookup_path_spec.rb
150
+ - spec/spec_helper.rb
151
+ - spec/support/core_ext.rb
152
+ - spec/support/temporary_classes.rb
153
+ - spec/support/test_adapter.rb
154
+ - spec/wirble_compatibility_spec.rb
data/.autotest DELETED
@@ -1,9 +0,0 @@
1
- Autotest.add_hook :initialize do |at|
2
- at.add_mapping(/ext\/.*\/(.*)\.[ch]/) do |_, m|
3
- ["test/test_#{m[1]}_extn.rb"]
4
- end
5
- end
6
-
7
- Autotest.add_hook :run_command do |at|
8
- system "rake compile"
9
- end
data/History.txt DELETED
@@ -1,22 +0,0 @@
1
- == 0.2.1 2009-08-30
2
-
3
- * Updated history.
4
-
5
- == 0.2.0 2009-08-30
6
-
7
- * Add Looksee.help for printing a quick reference. [Brian Morearty]
8
-
9
- == 0.1.0 2009-08-20
10
-
11
- * Add methods undefined with Module#undef_method. Blue by default.
12
-
13
- == 0.0.2 2009-07-28
14
-
15
- * Added #grep to filter methods shown: lp(object).grep(/pattern/)
16
- * Fix #1: Play nice with Wirble.
17
- * Fix #3: Don't die when examining immediate objects (fixnum, symbol,
18
- true, false, nil) [Leonard Chin]
19
-
20
- == 0.0.1 2009-07-05
21
-
22
- * Hi.
data/Manifest.txt DELETED
@@ -1,21 +0,0 @@
1
- .autotest
2
- History.txt
3
- Manifest.txt
4
- README.rdoc
5
- Rakefile
6
- ext/looksee/extconf.rb
7
- ext/looksee/looksee.c
8
- ext/looksee/node-1.9.h
9
- lib/looksee.rb
10
- lib/looksee/shortcuts.rb
11
- lib/looksee/version.rb
12
- lib/looksee/wirble_compatibility.rb
13
- looksee.gemspec
14
- script/console
15
- script/destroy
16
- script/generate
17
- spec/looksee_spec.rb
18
- spec/spec_helper.rb
19
- spec/wirble_compatibility_spec.rb
20
- tasks/extconf.rake
21
- tasks/extconf/looksee.rake
data/README.rdoc DELETED
@@ -1,129 +0,0 @@
1
- = Looksee
2
-
3
- * http://github.com/oggy/looksee
4
-
5
- == DESCRIPTION
6
-
7
- Looksee lets you examine the method lookup path of objects in ways not
8
- possible in plain ruby.
9
-
10
- == SYNOPSIS
11
-
12
- Pop this in your .irbrc :
13
-
14
- require 'looksee/shortcuts'
15
-
16
- This defines a method +lp+ ("lookup path") which lets you do:
17
-
18
- irb(main):001:0> lp []
19
- => Array
20
- & concat frozen? push taguri
21
- * count hash rassoc taguri=
22
- + cycle include? reject take
23
- - delete index reject! take_while
24
- << delete_at indexes replace to_a
25
- <=> delete_if indices reverse to_ary
26
- == drop insert reverse! to_s
27
- [] drop_while inspect reverse_each to_yaml
28
- []= each join rindex transpose
29
- assoc each_index last select uniq
30
- at empty? length shift uniq!
31
- choice eql? map shuffle unshift
32
- clear fetch map! shuffle! values_at
33
- collect fill nitems size yaml_initialize
34
- collect! find_index pack slice zip
35
- combination first permutation slice! |
36
- compact flatten pop sort
37
- compact! flatten! product sort!
38
- Enumerable
39
- all? each_slice first min reverse_each
40
- any? each_with_index grep min_by select
41
- collect entries group_by minmax sort
42
- count enum_cons include? minmax_by sort_by
43
- cycle enum_slice inject none? take
44
- detect enum_with_index map one? take_while
45
- drop find max partition to_a
46
- drop_while find_all max_by reduce zip
47
- each_cons find_index member? reject
48
- Object
49
- taguri taguri= to_yaml to_yaml_properties to_yaml_style
50
- Kernel
51
- == hash object_id
52
- === id private_methods
53
- =~ inspect protected_methods
54
- __id__ instance_eval public_methods
55
- __send__ instance_exec respond_to?
56
- class instance_of? send
57
- clone instance_variable_defined? singleton_methods
58
- display instance_variable_get taint
59
- dup instance_variable_set tainted?
60
- enum_for instance_variables tap
61
- eql? is_a? to_a
62
- equal? kind_of? to_enum
63
- extend method to_s
64
- freeze methods type
65
- frozen? nil? untaint
66
-
67
- It'll also color the methods according to whether they're public,
68
- protected, private, undefined (using Module#undef_method), or
69
- overridden. So pretty. The default colors are:
70
-
71
- public: green
72
- protected: yellow
73
- private: red
74
- undefined: blue
75
- overridden: black
76
-
77
- By default, it shows public and protected methods. Add private ones
78
- like so:
79
-
80
- lp [], :private => true
81
- lp [], :private # shortcut
82
-
83
- Or if you don't want protected:
84
-
85
- lp [], :protected => false
86
-
87
- There are variations too. And you can configure things. And you can
88
- use it as a library without polluting the built-in classes. See:
89
-
90
- $ ri Looksee
91
-
92
- Or do this in IRB for a quick reference:
93
-
94
- Looksee.help
95
-
96
- Enjoy!
97
-
98
- == INSTALL
99
-
100
- gem install looksee
101
-
102
- == FEATURES/PROBLEMS
103
-
104
- * Currently only does MRI 1.8, 1.9.
105
-
106
- == LICENSE
107
-
108
- (The MIT License)
109
-
110
- Copyright (c) 2009 George Ogata
111
-
112
- Permission is hereby granted, free of charge, to any person obtaining
113
- a copy of this software and associated documentation files (the
114
- 'Software'), to deal in the Software without restriction, including
115
- without limitation the rights to use, copy, modify, merge, publish,
116
- distribute, sublicense, and/or sell copies of the Software, and to
117
- permit persons to whom the Software is furnished to do so, subject to
118
- the following conditions:
119
-
120
- The above copyright notice and this permission notice shall be
121
- included in all copies or substantial portions of the Software.
122
-
123
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
124
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
125
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
126
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
127
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
128
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
129
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,6 +0,0 @@
1
- require 'mkmf'
2
-
3
- $CPPFLAGS << " -DRUBY_VERSION=#{RUBY_VERSION.tr('.', '')}"
4
- dir_config("looksee")
5
-
6
- create_makefile("looksee")
@@ -1,144 +0,0 @@
1
- #include "ruby.h"
2
-
3
- #if RUBY_VERSION >= 190
4
- # include "node-1.9.h"
5
- # include "ruby/st.h"
6
- #else
7
- # include "node.h"
8
- # include "st.h"
9
- #endif
10
-
11
- #if RUBY_VERSION < 187
12
- # define RCLASS_IV_TBL(c) (RCLASS(c)->iv_tbl)
13
- # define RCLASS_M_TBL(c) (RCLASS(c)->m_tbl)
14
- # define RCLASS_SUPER(c) (RCLASS(c)->super)
15
- #endif
16
-
17
- /*
18
- * Return the internal superclass of this class.
19
- *
20
- * This is either a Class or "IClass." IClasses represent Modules
21
- * included in the ancestry, and should be treated as opaque objects
22
- * in ruby space. Convert the IClass to a Module using #iclass_to_module
23
- * before using it in ruby.
24
- */
25
- VALUE Looksee_internal_superclass(VALUE self, VALUE internal_class) {
26
- VALUE super = RCLASS_SUPER(internal_class);
27
- if (!super)
28
- return Qnil;
29
- return super;
30
- }
31
-
32
- /*
33
- * Return the internal class of the given object.
34
- *
35
- * This is either the object's singleton class, if it exists, or the
36
- * object's birth class.
37
- */
38
- VALUE Looksee_internal_class(VALUE self, VALUE object) {
39
- return CLASS_OF(object);
40
- }
41
-
42
- /*
43
- * Return the class or module that the given internal class
44
- * represents.
45
- *
46
- * If a class is given, this is the class. If an iclass is given,
47
- * this is the module it represents in the lookup chain.
48
- */
49
- VALUE Looksee_internal_class_to_module(VALUE self, VALUE internal_class) {
50
- if (!SPECIAL_CONST_P(internal_class)) {
51
- switch (BUILTIN_TYPE(internal_class)) {
52
- case T_ICLASS:
53
- return RBASIC(internal_class)->klass;
54
- case T_CLASS:
55
- return internal_class;
56
- }
57
- }
58
- rb_raise(rb_eArgError, "not an internal class: %s", RSTRING_PTR(rb_inspect(internal_class)));
59
- }
60
-
61
- typedef struct add_method_if_matching_arg {
62
- VALUE names;
63
- int visibility;
64
- } add_method_if_matching_arg_t;
65
-
66
- #if RUBY_VERSION < 190
67
- # define VISIBILITY(node) ((node)->nd_noex & NOEX_MASK)
68
- #else
69
- # define VISIBILITY(node) ((node)->nd_body->nd_noex & NOEX_MASK)
70
- #endif
71
-
72
- static int add_method_if_matching(ID method_name, NODE *body, add_method_if_matching_arg_t *arg) {
73
- /* This entry is for the internal allocator function. */
74
- if (method_name == ID_ALLOCATOR)
75
- return ST_CONTINUE;
76
-
77
- /* Module#undef_method sets body->nd_body to NULL. */
78
- if (!body || !body->nd_body)
79
- return ST_CONTINUE;
80
-
81
- if (VISIBILITY(body) == arg->visibility)
82
- rb_ary_push(arg->names, ID2SYM(method_name));
83
- return ST_CONTINUE;
84
- }
85
-
86
- static VALUE internal_instance_methods(VALUE klass, long visibility) {
87
- add_method_if_matching_arg_t arg;
88
- arg.names = rb_ary_new();
89
- arg.visibility = visibility;
90
- st_foreach(RCLASS_M_TBL(klass), add_method_if_matching, (st_data_t)&arg);
91
- return arg.names;
92
- }
93
-
94
- /*
95
- * Return the list of public instance methods (as Symbols) of the
96
- * given internal class.
97
- */
98
- VALUE Looksee_internal_public_instance_methods(VALUE self, VALUE klass) {
99
- return internal_instance_methods(klass, NOEX_PUBLIC);
100
- }
101
-
102
- /*
103
- * Return the list of protected instance methods (as Symbols) of the
104
- * given internal class.
105
- */
106
- VALUE Looksee_internal_protected_instance_methods(VALUE self, VALUE klass) {
107
- return internal_instance_methods(klass, NOEX_PROTECTED);
108
- }
109
-
110
- /*
111
- * Return the list of private instance methods (as Symbols) of the
112
- * given internal class.
113
- */
114
- VALUE Looksee_internal_private_instance_methods(VALUE self, VALUE klass) {
115
- return internal_instance_methods(klass, NOEX_PRIVATE);
116
- }
117
-
118
- static int add_method_if_undefined(ID method_name, NODE *body, VALUE *names) {
119
- /* Module#undef_method sets body->nd_body to NULL. */
120
- if (body && !body->nd_body)
121
- rb_ary_push(*names, ID2SYM(method_name));
122
- return ST_CONTINUE;
123
- }
124
-
125
- /*
126
- * Return the list of undefined instance methods (as Symbols) of the
127
- * given internal class.
128
- */
129
- VALUE Looksee_internal_undefined_instance_methods(VALUE self, VALUE klass) {
130
- VALUE names = rb_ary_new();
131
- st_foreach(RCLASS_M_TBL(klass), add_method_if_undefined, (st_data_t)&names);
132
- return names;
133
- }
134
-
135
- void Init_looksee(void) {
136
- VALUE mLooksee = rb_define_module("Looksee");
137
- rb_define_singleton_method(mLooksee, "internal_superclass", Looksee_internal_superclass, 1);
138
- rb_define_singleton_method(mLooksee, "internal_class", Looksee_internal_class, 1);
139
- rb_define_singleton_method(mLooksee, "internal_class_to_module", Looksee_internal_class_to_module, 1);
140
- rb_define_singleton_method(mLooksee, "internal_public_instance_methods", Looksee_internal_public_instance_methods, 1);
141
- rb_define_singleton_method(mLooksee, "internal_protected_instance_methods", Looksee_internal_protected_instance_methods, 1);
142
- rb_define_singleton_method(mLooksee, "internal_private_instance_methods", Looksee_internal_private_instance_methods, 1);
143
- rb_define_singleton_method(mLooksee, "internal_undefined_instance_methods", Looksee_internal_undefined_instance_methods, 1);
144
- }