srizzo-irber 0.0.3 → 0.0.4

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.
@@ -2,27 +2,149 @@ require File.dirname(__FILE__) + '/../spec_helper'
2
2
 
3
3
  require "irber/src"
4
4
 
5
- class A
6
- def an_instance_method
7
- "result"
8
- end
9
- def self.a_class_method
10
- "result"
11
- end
12
- end
13
5
 
6
+ module Irber
7
+ module Src
8
+
9
+ class A
10
+ def an_instance_method
11
+ "result"
12
+ end
13
+ def self.a_class_method
14
+ "result"
15
+ end
16
+ end
17
+
18
+ module M
19
+ def a_method
20
+ "result"
21
+ end
22
+ def self.a_module_method
23
+ "result"
24
+ end
25
+ end
14
26
 
15
- describe "Kernel#src" do
27
+
28
+ describe Irber::Src do
16
29
 
17
- it "should print a class source" do
18
- @a = A.new
19
- stdout{ src @a }.should == stdout{ puts @a.to_code }
20
- end
21
30
 
22
- it "should print a method source" do
23
- @a = A.new
24
- stdout{ src @a, :an_instance_method }.should == stdout{ puts @a.to_code :an_instance_method }
25
- end
31
+ describe "#src" do
32
+
33
+ describe "on classes" do
34
+ it "should be available on all classes" do
35
+ A.should respond_to(:src)
36
+ end
37
+
38
+ it "should generate its source code" do
39
+ A.src.should match_code "
40
+ class Irber::Src::A < Object
41
+ def an_instance_method()
42
+ \"result\"
43
+ end
44
+ def self.a_class_method()
45
+ \"result\"
46
+ end
47
+ end
48
+ "
49
+ end
50
+ end
51
+
52
+ describe "on objects" do
53
+ it "should be available on all objects" do
54
+ A.new.should respond_to(:src)
55
+ end
56
+
57
+ it "should generate its source code" do
58
+ A.new.src.should match_code "
59
+ class Irber::Src::A < Object
60
+ def an_instance_method()
61
+ \"result\"
62
+ end
63
+ def self.a_class_method()
64
+ \"result\"
65
+ end
66
+ end
67
+ "
68
+ end
69
+
70
+ end
71
+
72
+ describe "on modules" do
73
+ it "should generat its source code" do
74
+ M.src.should match_code "
75
+ module Irber::Src::M
76
+ def a_method()
77
+ \"result\"
78
+ end
79
+ def self.a_module_method()
80
+ \"result\"
81
+ end
82
+ end
83
+ "
84
+ end
85
+ end
86
+
87
+ describe "on class methods" do
88
+ it "should generate a class instance method source code " do
89
+ A.src(:an_instance_method).should match_code "
90
+ def an_instance_method()
91
+ \"result\"
92
+ end
93
+ "
94
+ end
95
+
96
+ it "should generate a class method source code " do
97
+ A.src(:a_class_method).should match_code "
98
+ def a_class_method()
99
+ \"result\"
100
+ end
101
+ "
102
+ end
103
+ end
104
+
105
+
106
+ describe "on object methods" do
107
+ it "should generate an object method source code" do
108
+ A.new.src(:an_instance_method).should match_code "
109
+ def an_instance_method()
110
+ \"result\"
111
+ end
112
+ "
113
+ end
114
+ end
115
+
116
+ describe "on module methods" do
117
+ it "should generate a module method source code" do
118
+ M.src(:a_method).should match_code "
119
+ def a_method()
120
+ \"result\"
121
+ end
122
+ "
123
+ end
124
+ end
26
125
 
27
126
 
28
- end
127
+ describe "on inexisting methods" do
128
+ it "should raise NameError" do
129
+ lambda{ A.new.src(:an_inexisting_method) }.should raise_error(NameError)
130
+ end
131
+ end
132
+
133
+
134
+ describe "on native classes" do
135
+ it "should raise ParseError" do
136
+ lambda{ String.src }.should raise_error(ParseError)
137
+ end
138
+ end
139
+
140
+ describe "on native methods" do
141
+ it "should raise ParseError" do
142
+ lambda{ "".src :to_s }.should raise_error(ParseError)
143
+ end
144
+ end
145
+ end
146
+
147
+ end
148
+
149
+ end
150
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: srizzo-irber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - srizzo
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-16 00:00:00 -07:00
12
+ date: 2009-07-19 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -40,30 +40,37 @@ extensions: []
40
40
 
41
41
  extra_rdoc_files:
42
42
  - LICENSE
43
- - README.rdoc
43
+ - README.markdown
44
44
  files:
45
45
  - .document
46
46
  - .gitignore
47
47
  - History.txt
48
48
  - LICENSE
49
- - README.rdoc
49
+ - README.markdown
50
50
  - Rakefile
51
51
  - VERSION
52
52
  - features/get_a_generated_source_code_on_the_fly.feature
53
- - features/make_an_object_print_itself.feature
53
+ - features/make_any_object_inspect_itself.feature
54
+ - features/print_an_objects_api.feature
54
55
  - features/print_generated_source_code.feature
55
56
  - features/step_definitions/irber_steps.rb
56
57
  - features/support/env.rb
57
58
  - irber.gemspec
58
59
  - lib/irber.rb
59
- - lib/irber/printing.rb
60
+ - lib/irber/api.rb
61
+ - lib/irber/papi.rb
62
+ - lib/irber/psrc.rb
63
+ - lib/irber/self_inspect.rb
64
+ - lib/irber/signature.rb
60
65
  - lib/irber/src.rb
61
- - lib/irber/to_code.rb
62
66
  - spec/custom_helpers.rb
63
67
  - spec/custom_matchers.rb
64
- - spec/irber/printing_spec.rb
68
+ - spec/irber/api_spec.rb
69
+ - spec/irber/papi_spec.rb
70
+ - spec/irber/psrc_spec.rb
71
+ - spec/irber/self_inspect_spec.rb
72
+ - spec/irber/signature_spec.rb
65
73
  - spec/irber/src_spec.rb
66
- - spec/irber/to_code_spec.rb
67
74
  - spec/spec_helper.rb
68
75
  has_rdoc: true
69
76
  homepage: http://github.com/srizzo/irber
@@ -94,7 +101,10 @@ summary: Little tools to enhance your irb experience
94
101
  test_files:
95
102
  - spec/custom_helpers.rb
96
103
  - spec/custom_matchers.rb
97
- - spec/irber/printing_spec.rb
104
+ - spec/irber/api_spec.rb
105
+ - spec/irber/papi_spec.rb
106
+ - spec/irber/psrc_spec.rb
107
+ - spec/irber/self_inspect_spec.rb
108
+ - spec/irber/signature_spec.rb
98
109
  - spec/irber/src_spec.rb
99
- - spec/irber/to_code_spec.rb
100
110
  - spec/spec_helper.rb
data/README.rdoc DELETED
@@ -1,73 +0,0 @@
1
- == DESCRIPTION:
2
-
3
- Little tools to enhance your irb experience
4
-
5
- == INSTALL:
6
-
7
- * sudo gem install srizzo-irber
8
- * add to your ~/.irbrc
9
-
10
- require 'irber'
11
-
12
-
13
-
14
- == BASIC USAGE:
15
-
16
- * generate a class or method source code on the fly
17
-
18
- Given a class:
19
-
20
- class A
21
- def a
22
- "a"
23
- end
24
- end
25
-
26
-
27
- Generate source code on the fly:
28
-
29
- >> src A
30
- class A < Object
31
- def a()
32
- "a"
33
- end
34
- end
35
- => nil
36
-
37
-
38
- >> src A, :a
39
- def a()
40
- "a"
41
- end
42
- => nil
43
-
44
-
45
- * make an object print itself
46
-
47
- >> [1,2].puts_it
48
- 1
49
- 2
50
-
51
-
52
- >> [1,2].pp_it
53
- [1, 2]
54
-
55
-
56
-
57
-
58
- == FEATURES/PROBLEMS:
59
-
60
- * generate a class or method source code on the fly (won't work for all classes and methods e.g: native classes)
61
- * make an object print itself
62
-
63
-
64
- == REQUIREMENTS:
65
-
66
- * ParseTree
67
- * Ruby2Ruby
68
-
69
-
70
-
71
- == Copyright
72
-
73
- Copyright (c) 2009 Samuel Rizzo. See LICENSE for details.
data/lib/irber/to_code.rb DELETED
@@ -1,50 +0,0 @@
1
- require 'parse_tree'
2
- require 'ruby2ruby'
3
-
4
- module Irber
5
- module ToCode
6
-
7
- class ParseError < StandardError; end
8
-
9
- module InstanceMethods
10
- def to_code method = nil
11
-
12
- if method
13
-
14
- if (the_method = self.method(method) rescue nil)
15
- receiver = the_method.owner
16
- elsif (the_method = self.instance_method(method) if self.respond_to? :instance_method)
17
- receiver = the_method.owner
18
- else
19
- throw NameError.new "couldn't find method `#{method}' for `#{self}' "
20
- end
21
-
22
- Ruby2Ruby.new.process(ParseTree.translate(receiver, method)) rescue raise ParseError.new("couldn't parse method")
23
-
24
- else
25
- if self.class == Class || self.class == Module
26
- receiver = self
27
- else
28
- receiver = self.class
29
- end
30
-
31
- Ruby2Ruby.new.process(ParseTree.translate(receiver)) rescue raise ParseError.new("couldn't parse class")
32
-
33
- end
34
-
35
- end
36
- end
37
-
38
- def self.included(receiver)
39
- receiver.send :include, InstanceMethods
40
- end
41
- end
42
-
43
- end
44
-
45
-
46
- class Object
47
- include Irber::ToCode
48
- end
49
-
50
-
@@ -1,52 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- require "irber/printing"
4
-
5
- class O
6
- def to_s
7
- "O#to_s"
8
- end
9
- def inspect
10
- "O#inspect"
11
- end
12
- end
13
-
14
-
15
- describe Irber::Printing do
16
-
17
- before(:each) do
18
- @a = O.new
19
- end
20
-
21
- describe "#puts_it" do
22
- it "should be available on all objects" do
23
- Object.new.should respond_to(:puts_it)
24
- end
25
-
26
- it "should puts itself" do
27
- stdout{ @a.puts_it }.should == stdout{ puts @a }
28
- end
29
- end
30
-
31
- describe "#p_it" do
32
- it "should be available on all objects" do
33
- Object.new.should respond_to(:p_it)
34
- end
35
-
36
- it "should puts itself" do
37
- stdout{ @a.p_it }.should == stdout{ p @a }
38
- end
39
- end
40
-
41
- describe "#pp_it" do
42
- it "should be available on all objects" do
43
- Object.new.should respond_to(:pp_it)
44
- end
45
-
46
- it "should puts itself" do
47
- stdout{ @a.pp_it }.should == stdout{ pp @a }
48
- end
49
- end
50
-
51
-
52
- end
@@ -1,143 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- require "irber/to_code"
4
-
5
- class A
6
- def an_instance_method
7
- "result"
8
- end
9
- def self.a_class_method
10
- "result"
11
- end
12
- end
13
-
14
- module M
15
- def a_method
16
- "result"
17
- end
18
- def self.a_module_method
19
- "result"
20
- end
21
- end
22
-
23
-
24
- describe Irber::ToCode do
25
-
26
-
27
- describe "#to_code" do
28
-
29
- describe "on classes" do
30
- it "should be available on all classes" do
31
- A.should respond_to(:to_code)
32
- end
33
-
34
- it "should generate its source code" do
35
- A.to_code.should match_code "
36
- class A < Object
37
- def an_instance_method()
38
- \"result\"
39
- end
40
- def self.a_class_method()
41
- \"result\"
42
- end
43
- end
44
- "
45
- end
46
- end
47
-
48
- describe "on objects" do
49
- it "should be available on all objects" do
50
- A.new.should respond_to(:to_code)
51
- end
52
-
53
- it "should generate its source code" do
54
- A.new.to_code.should match_code "
55
- class A < Object
56
- def an_instance_method()
57
- \"result\"
58
- end
59
- def self.a_class_method()
60
- \"result\"
61
- end
62
- end
63
- "
64
- end
65
-
66
- end
67
-
68
- describe "on modules" do
69
- it "should generat its source code" do
70
- M.to_code.should match_code "
71
- module M
72
- def a_method()
73
- \"result\"
74
- end
75
- def self.a_module_method()
76
- \"result\"
77
- end
78
- end
79
- "
80
- end
81
- end
82
-
83
- describe "on class methods" do
84
- it "should generate a class instance method source code " do
85
- A.to_code(:an_instance_method).should match_code "
86
- def an_instance_method()
87
- \"result\"
88
- end
89
- "
90
- end
91
-
92
- it "should generate a class method source code " do
93
- A.to_code(:a_class_method).should match_code "
94
- def a_class_method()
95
- \"result\"
96
- end
97
- "
98
- end
99
- end
100
-
101
-
102
- describe "on object methods" do
103
- it "should generate an object method source code" do
104
- A.new.to_code(:an_instance_method).should match_code "
105
- def an_instance_method()
106
- \"result\"
107
- end
108
- "
109
- end
110
- end
111
-
112
- describe "on module methods" do
113
- it "should generate a module method source code" do
114
- M.to_code(:a_method).should match_code "
115
- def a_method()
116
- \"result\"
117
- end
118
- "
119
- end
120
- end
121
-
122
-
123
- describe "on inexisting methods" do
124
- it "should raise NameError" do
125
- lambda{ A.new.to_code(:an_inexisting_method) }.should raise_error(NameError)
126
- end
127
- end
128
-
129
-
130
- describe "on native classes" do
131
- it "should raise ParseError" do
132
- lambda{ String.to_code }.should raise_error(ParseError)
133
- end
134
- end
135
-
136
- describe "on native methods" do
137
- it "should raise ParseError" do
138
- lambda{ "".to_code :to_s }.should raise_error(ParseError)
139
- end
140
- end
141
- end
142
-
143
- end