rspec-kickstarter 0.3.0 → 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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e5d045881beb098d19cfda3528d04fdaa3a7a6b5
4
+ data.tar.gz: c1a4537221a91990859ed92626e802af007e0a1d
5
+ SHA512:
6
+ metadata.gz: cd77ed24e38edfa7a7c3952b8176a330ae28f61ca7f48bc4f1f4ef46d8107ecf82b358406fbd00cedf9da67aa37419a02388470378eb4afc45711271b2191910
7
+ data.tar.gz: b03fb18db2fe869cc5265884bd142f93d33de9a1a4a8b96cfcea3d3838b56adf9ae330c1e0ec1310620785ed6a718492d8facd1a886a208436025ffb1ae7d771
@@ -7,49 +7,69 @@ require 'rspec_kickstarter/erb_templates'
7
7
  #
8
8
  # ERB instance provider
9
9
  #
10
- class RSpecKickstarter::ERBFactory
10
+ module RSpecKickstarter
11
+ class ERBFactory
11
12
 
12
- def initialize(custom_template)
13
- @custom_template = custom_template
14
- end
13
+ def initialize(custom_template)
14
+ @custom_template = custom_template
15
+ end
15
16
 
16
- #
17
- # Returns ERB instance for creating new spec
18
- #
19
- def get_instance_for_new_spec(rails_mode, target_path)
20
- template = get_erb_template(@custom_template, true, rails_mode, target_path)
21
- ERB.new(template, nil, '-', '_new_spec_code')
22
- end
17
+ #
18
+ # Returns ERB instance for creating new spec
19
+ #
20
+ def get_instance_for_new_spec(rails_mode, target_path)
21
+ template = get_erb_template(@custom_template, true, rails_mode, target_path)
22
+ ERB.new(template, nil, '-', '_new_spec_code')
23
+ end
23
24
 
24
- #
25
- # Returns ERB instance for appeding lacking tests
26
- #
27
- def get_instance_for_appending(rails_mode, target_path)
28
- template = get_erb_template(@custom_template, false, rails_mode, target_path)
29
- ERB.new(template, nil, '-', '_additional_spec_code')
30
- end
25
+ #
26
+ # Returns ERB instance for appeding lacking tests
27
+ #
28
+ def get_instance_for_appending(rails_mode, target_path)
29
+ template = get_erb_template(@custom_template, false, rails_mode, target_path)
30
+ ERB.new(template, nil, '-', '_additional_spec_code')
31
+ end
32
+
33
+ private
34
+
35
+ #
36
+ # Returns ERB template
37
+ #
38
+ def get_erb_template(custom_template, is_full, rails_mode, target_path)
39
+ if custom_template
40
+ custom_template
41
+ elsif rails_mode && target_path.match(/controllers/)
42
+ get_rails_controller_template(is_full)
43
+ elsif rails_mode && target_path.match(/helpers/)
44
+ get_rails_helper_template(is_full)
45
+ else
46
+ get_basic_template(is_full)
47
+ end
48
+ end
31
49
 
32
- private
33
-
34
- #
35
- # Returns ERB template
36
- #
37
- def get_erb_template(custom_template, is_full, rails_mode, target_path)
38
- if custom_template
39
- custom_template
40
- elsif rails_mode && target_path.match(/controllers/)
41
- if is_full then RSpecKickstarter::ERBTemplates::RAILS_CONTROLLER_NEW_SPEC_TEMPLATE
42
- else RSpecKickstarter::ERBTemplates::RAILS_CONTROLLER_METHODS_PART_TEMPLATE
50
+ def get_rails_controller_template(is_full)
51
+ if is_full
52
+ RSpecKickstarter::ERBTemplates::RAILS_CONTROLLER_NEW_SPEC_TEMPLATE
53
+ else
54
+ RSpecKickstarter::ERBTemplates::RAILS_CONTROLLER_METHODS_PART_TEMPLATE
43
55
  end
44
- elsif rails_mode && target_path.match(/helpers/)
45
- if is_full then RSpecKickstarter::ERBTemplates::RAILS_HELPER_NEW_SPEC_TEMPLATE
46
- else RSpecKickstarter::ERBTemplates::RAILS_HELPER_METHODS_PART_TEMPLATE
56
+ end
57
+
58
+ def get_rails_helper_template(is_full)
59
+ if is_full
60
+ RSpecKickstarter::ERBTemplates::RAILS_HELPER_NEW_SPEC_TEMPLATE
61
+ else
62
+ RSpecKickstarter::ERBTemplates::RAILS_HELPER_METHODS_PART_TEMPLATE
47
63
  end
48
- else
49
- if is_full then RSpecKickstarter::ERBTemplates::BASIC_NEW_SPEC_TEMPLATE
50
- else RSpecKickstarter::ERBTemplates::BASIC_METHODS_PART_TEMPLATE
64
+ end
65
+
66
+ def get_basic_template(is_full)
67
+ if is_full
68
+ RSpecKickstarter::ERBTemplates::BASIC_NEW_SPEC_TEMPLATE
69
+ else
70
+ RSpecKickstarter::ERBTemplates::BASIC_METHODS_PART_TEMPLATE
51
71
  end
52
72
  end
53
- end
54
73
 
74
+ end
55
75
  end
@@ -6,11 +6,12 @@ require 'rspec_kickstarter'
6
6
  #
7
7
  # ERB templates
8
8
  #
9
- module RSpecKickstarter::ERBTemplates
9
+ module RSpecKickstarter
10
+ module ERBTemplates
10
11
 
11
- BASIC_METHODS_PART_TEMPLATE = <<SPEC
12
+ BASIC_METHODS_PART_TEMPLATE = <<SPEC
12
13
  <%- methods_to_generate.map { |method| %>
13
- # TODO auto-generated
14
+ # TODO: auto-generated
14
15
  describe '#<%= method.name %>' do
15
16
  it 'works' do
16
17
  <%- unless get_instantiation_code(c, method).nil? -%><%= get_instantiation_code(c, method) %><%- end -%>
@@ -22,7 +23,7 @@ module RSpecKickstarter::ERBTemplates
22
23
  <% } %>
23
24
  SPEC
24
25
 
25
- BASIC_NEW_SPEC_TEMPLATE = <<SPEC
26
+ BASIC_NEW_SPEC_TEMPLATE = <<SPEC
26
27
  # -*- encoding: utf-8 -*-
27
28
 
28
29
  require 'spec_helper'
@@ -34,9 +35,9 @@ describe <%= get_complete_class_name(c) %> do
34
35
  end
35
36
  SPEC
36
37
 
37
- RAILS_CONTROLLER_METHODS_PART_TEMPLATE = <<SPEC
38
+ RAILS_CONTROLLER_METHODS_PART_TEMPLATE = <<SPEC
38
39
  <%- methods_to_generate.map { |method| %>
39
- # TODO auto-generated
40
+ # TODO: auto-generated
40
41
  describe '<%= get_rails_http_method(method.name).upcase %> <%= method.name %>' do
41
42
  it 'works' do
42
43
  <%= get_rails_http_method(method.name) %> :<%= method.name %>, {}, {}
@@ -46,7 +47,7 @@ SPEC
46
47
  <% } %>
47
48
  SPEC
48
49
 
49
- RAILS_CONTROLLER_NEW_SPEC_TEMPLATE = <<SPEC
50
+ RAILS_CONTROLLER_NEW_SPEC_TEMPLATE = <<SPEC
50
51
  # -*- encoding: utf-8 -*-
51
52
 
52
53
  require 'spec_helper'
@@ -56,9 +57,9 @@ describe <%= get_complete_class_name(c) %> do
56
57
  end
57
58
  SPEC
58
59
 
59
- RAILS_HELPER_METHODS_PART_TEMPLATE = <<SPEC
60
+ RAILS_HELPER_METHODS_PART_TEMPLATE = <<SPEC
60
61
  <%- methods_to_generate.map { |method| %>
61
- # TODO auto-generated
62
+ # TODO: auto-generated
62
63
  describe '#<%= method.name %>' do
63
64
  it 'works' do
64
65
  result = <%= get_rails_helper_method_invocation_code(method) %>
@@ -68,7 +69,7 @@ SPEC
68
69
  <% } %>
69
70
  SPEC
70
71
 
71
- RAILS_HELPER_NEW_SPEC_TEMPLATE = <<SPEC
72
+ RAILS_HELPER_NEW_SPEC_TEMPLATE = <<SPEC
72
73
  # -*- encoding: utf-8 -*-
73
74
 
74
75
  require 'spec_helper'
@@ -78,4 +79,5 @@ describe <%= get_complete_class_name(c) %> do
78
79
  end
79
80
  SPEC
80
81
 
82
+ end
81
83
  end
@@ -9,230 +9,241 @@ require 'rspec_kickstarter/rdoc_factory'
9
9
  #
10
10
  # RSpec Code Generator
11
11
  #
12
- class RSpecKickstarter::Generator
13
- include RSpecKickstarter::ERBTemplates
12
+ module RSpecKickstarter
13
+ class Generator
14
+ include RSpecKickstarter::ERBTemplates
14
15
 
15
- attr_accessor :spec_dir, :delta_template, :full_template
16
+ attr_accessor :spec_dir, :delta_template, :full_template
16
17
 
17
- def initialize(spec_dir = './spec', delta_template = nil, full_template = nil)
18
- @spec_dir = spec_dir.gsub(/\/$/, '')
19
- @delta_template = delta_template
20
- @full_template = full_template
21
- end
18
+ def initialize(spec_dir = './spec', delta_template = nil, full_template = nil)
19
+ @spec_dir = spec_dir.gsub(/\/$/, '')
20
+ @delta_template = delta_template
21
+ @full_template = full_template
22
+ end
22
23
 
23
- #
24
- # Writes new spec or appends to the existing spec.
25
- #
26
- def write_spec(file_path, force_write = false, dry_run = false, rails_mode = false)
27
- class_or_module = RSpecKickstarter::RDocFactory.get_rdoc_class_or_module(file_path)
28
- if class_or_module
29
- spec_path = get_spec_path(file_path)
30
- if force_write && File.exist?(spec_path)
31
- append_to_existing_spec(class_or_module, dry_run, rails_mode, spec_path)
24
+ #
25
+ # Writes new spec or appends to the existing spec.
26
+ #
27
+ def write_spec(file_path, force_write = false, dry_run = false, rails_mode = false)
28
+ class_or_module = RSpecKickstarter::RDocFactory.get_rdoc_class_or_module(file_path)
29
+ if class_or_module
30
+ spec_path = get_spec_path(file_path)
31
+ if force_write && File.exist?(spec_path)
32
+ append_to_existing_spec(class_or_module, dry_run, rails_mode, spec_path)
33
+ else
34
+ create_new_spec(class_or_module, dry_run, rails_mode, file_path, spec_path)
35
+ end
32
36
  else
33
- create_new_spec(class_or_module, dry_run, rails_mode, file_path, spec_path)
37
+ puts "#{file_path} skipped (Class/Module not found)."
34
38
  end
35
- else
36
- puts "#{file_path} skipped (Class/Module not found)."
37
39
  end
38
- end
39
40
 
40
- #
41
- # Gets the complete class name from RDoc::NormalClass/RDoc::NormalModule instance.
42
- #
43
- def get_complete_class_name(class_or_module, name = class_or_module.name)
44
- if !class_or_module.parent.name.nil? && class_or_module.parent.is_a?(RDoc::NormalModule)
45
- get_complete_class_name(class_or_module.parent, "#{class_or_module.parent.name}::#{name}")
46
- else
47
- name
41
+ #
42
+ # Gets the complete class name from RDoc::NormalClass/RDoc::NormalModule instance.
43
+ #
44
+ def get_complete_class_name(class_or_module, name = class_or_module.name)
45
+ if !class_or_module.parent.name.nil? && class_or_module.parent.is_a?(RDoc::NormalModule)
46
+ get_complete_class_name(class_or_module.parent, "#{class_or_module.parent.name}::#{name}")
47
+ else
48
+ name
49
+ end
48
50
  end
49
- end
50
-
51
- #
52
- # Returns spec file path.
53
- # e.g. "lib/foo/bar_baz.rb" -> "spec/foo/bar_baz_spec.rb"
54
- #
55
- def get_spec_path(file_path)
56
- spec_dir + '/' + file_path.gsub(/^\.\//, '').gsub(%r{^(lib/)|(app/)}, '').gsub(/\.rb$/, '_spec.rb')
57
- end
58
51
 
59
- #
60
- # Returns string value to require.
61
- # e.g. "lib/foo/bar_baz.rb" -> "foo/bar_baz"
62
- #
63
- def to_string_value_to_require(file_path)
64
- file_path.gsub(%r{^(lib/)|(app/)}, '').gsub(/\.rb$/, '')
65
- end
52
+ #
53
+ # Returns spec file path.
54
+ # e.g. "lib/foo/bar_baz.rb" -> "spec/foo/bar_baz_spec.rb"
55
+ #
56
+ def get_spec_path(file_path)
57
+ spec_dir + '/' + file_path.gsub(/^\.\//, '').gsub(%r{^(lib/)|(app/)}, '').gsub(/\.rb$/, '_spec.rb')
58
+ end
66
59
 
67
- #
68
- # Returns snake_case name.
69
- # e.g. FooBar -> "foo_bar"
70
- #
71
- def instance_name(c)
72
- c.name
73
- .gsub(/::/, '/')
74
- .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
75
- .gsub(/([a-z\d])([A-Z])/, '\1_\2')
76
- .tr('-', '_')
77
- .downcase
78
- end
60
+ #
61
+ # Returns string value to require.
62
+ # e.g. "lib/foo/bar_baz.rb" -> "foo/bar_baz"
63
+ #
64
+ def to_string_value_to_require(file_path)
65
+ file_path.gsub(%r{^(lib/)|(app/)}, '').gsub(/\.rb$/, '')
66
+ end
79
67
 
80
- #
81
- # Extracts parameter names as an *Array*.
82
- # e.g. "()" -> []
83
- # e.g. "(a, b = 'foo')" -> ["a", "b"]
84
- #
85
- def to_param_names_array(params)
86
- params.split(',').map { |p| p.gsub(/[\(\)\s]/, '').gsub(/=.+$/, '') }.reject { |p| p.nil? || p.empty? }
87
- end
68
+ #
69
+ # Returns snake_case name.
70
+ # e.g. FooBar -> "foo_bar"
71
+ #
72
+ def instance_name(c)
73
+ c.name.
74
+ gsub(/::/, '/').
75
+ gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
76
+ gsub(/([a-z\d])([A-Z])/, '\1_\2').
77
+ tr('-', '_').
78
+ downcase
79
+ end
88
80
 
89
- #
90
- # Returns params part
91
- # e.g. ["a","b"] -> "(a, b)"
92
- # e.g. [] -> ""
93
- #
94
- def to_params_part(params)
95
- param_csv = to_param_names_array(params).join(', ')
96
- param_csv.empty? ? '' : "(#{param_csv})"
97
- end
81
+ #
82
+ # Extracts parameter names as an *Array*.
83
+ # e.g. "()" -> []
84
+ # e.g. "(a, b = 'foo')" -> ["a", "b"]
85
+ #
86
+ def to_param_names_array(params)
87
+ params.split(',').map { |p| p.gsub(/[\(\)\s]/, '').gsub(/=.+$/, '') }.reject { |p| p.nil? || p.empty? }
88
+ end
98
89
 
99
- #
100
- # Creates new spec.
101
- #
102
- def create_new_spec(class_or_module, dry_run, rails_mode, file_path, spec_path)
103
-
104
- # These names are used in ERB template, don't delete.
105
- methods_to_generate = class_or_module.method_list.select { |m| m.visibility == :public }
106
- c = class_or_module
107
- self_path = to_string_value_to_require(file_path)
108
-
109
- erb = RSpecKickstarter::ERBFactory.new(@full_template).get_instance_for_new_spec(rails_mode, file_path)
110
- code = erb.result(binding)
111
-
112
- if dry_run
113
- puts "----- #{spec_path} -----"
114
- puts code
115
- else
116
- if File.exist?(spec_path)
117
- puts "#{spec_path} already exists."
118
- else
119
- FileUtils.mkdir_p(File.dirname(spec_path))
120
- File.open(spec_path, 'w') { |f| f.write(code) }
121
- puts "#{spec_path} created."
122
- end
90
+ #
91
+ # Returns params part
92
+ # e.g. ["a","b"] -> "(a, b)"
93
+ # e.g. [] -> ""
94
+ #
95
+ def to_params_part(params)
96
+ param_csv = to_param_names_array(params).join(', ')
97
+ param_csv.empty? ? '' : "(#{param_csv})"
123
98
  end
124
- end
125
99
 
126
- #
127
- # Appends new tests to the existing spec.
128
- #
129
- def append_to_existing_spec(class_or_module, dry_run, rails_mode, spec_path)
130
- existing_spec = File.read(spec_path)
131
- lacking_methods = class_or_module.method_list
132
- .select { |m| m.visibility == :public }
133
- .reject { |m| existing_spec.match(m.name) }
134
-
135
- if lacking_methods.empty?
136
- puts "#{spec_path} skipped."
137
- else
100
+ #
101
+ # Creates new spec.
102
+ #
103
+ # rubocop:disable Metrics/AbcSize
104
+ def create_new_spec(class_or_module, dry_run, rails_mode, file_path, spec_path)
138
105
  # These names are used in ERB template, don't delete.
139
- methods_to_generate = lacking_methods
106
+ # rubocop:disable Lint/UselessAssignment
107
+ methods_to_generate = class_or_module.method_list.select { |m| m.visibility == :public }
140
108
  c = class_or_module
109
+ self_path = to_string_value_to_require(file_path)
110
+ # rubocop:enable Lint/UselessAssignment
141
111
 
142
- erb = RSpecKickstarter::ERBFactory.new(@delta_template).get_instance_for_appending(rails_mode, spec_path)
143
- additional_spec = erb.result(binding)
144
-
145
- last_end_not_found = true
146
- code = existing_spec.split("\n").reverse.reject { |line|
147
- before_modified = last_end_not_found
148
- last_end_not_found = line.gsub(/#.+$/, '').strip != 'end' if before_modified
149
- before_modified
150
- }.reverse.join("\n") + "\n" + additional_spec + "\nend\n"
112
+ erb = RSpecKickstarter::ERBFactory.new(@full_template).get_instance_for_new_spec(rails_mode, file_path)
113
+ code = erb.result(binding)
151
114
 
152
115
  if dry_run
153
116
  puts "----- #{spec_path} -----"
154
117
  puts code
155
118
  else
156
- File.open(spec_path, 'w') { |f| f.write(code) }
119
+ if File.exist?(spec_path)
120
+ puts "#{spec_path} already exists."
121
+ else
122
+ FileUtils.mkdir_p(File.dirname(spec_path))
123
+ File.open(spec_path, 'w') { |f| f.write(code) }
124
+ puts "#{spec_path} created."
125
+ end
157
126
  end
158
- puts "#{spec_path} modified."
159
127
  end
160
- end
161
128
 
162
- # -----
163
- # Code generation
164
- # -----
165
-
166
- #
167
- # e.g.
168
- # a = double('a')
169
- # b = double('b')
170
- # bar_baz = BarBaz.new(a, b)
171
- #
172
- def get_instantiation_code(c, method)
173
- if method.singleton
174
- ''
175
- else
176
- constructor = c.method_list.find { |m| m.name == 'new' }
177
- if constructor.nil?
178
- " #{instance_name(c)} = #{get_complete_class_name(c)}.new\n"
129
+ # rubocop:enable Metrics/AbcSize
130
+
131
+ #
132
+ # Appends new tests to the existing spec.
133
+ #
134
+ # rubocop:disable Metrics/AbcSize
135
+ def append_to_existing_spec(class_or_module, dry_run, rails_mode, spec_path)
136
+ existing_spec = File.read(spec_path)
137
+ lacking_methods = class_or_module.method_list.
138
+ select { |m| m.visibility == :public }.
139
+ reject { |m| existing_spec.match(m.name) }
140
+
141
+ if lacking_methods.empty?
142
+ puts "#{spec_path} skipped."
179
143
  else
180
- get_params_initialization_code(constructor) +
181
- " #{instance_name(c)} = #{get_complete_class_name(c)}.new#{to_params_part(constructor.params)}\n"
144
+ # These names are used in ERB template, don't delete.
145
+ # rubocop:disable Lint/UselessAssignment
146
+ methods_to_generate = lacking_methods
147
+ c = class_or_module
148
+ # rubocop:enable Lint/UselessAssignment
149
+
150
+ erb = RSpecKickstarter::ERBFactory.new(@delta_template).get_instance_for_appending(rails_mode, spec_path)
151
+ additional_spec = erb.result(binding)
152
+
153
+ last_end_not_found = true
154
+ code = existing_spec.split("\n").reverse.reject { |line|
155
+ before_modified = last_end_not_found
156
+ last_end_not_found = line.gsub(/#.+$/, '').strip != 'end' if before_modified
157
+ before_modified
158
+ }.reverse.join("\n") + "\n" + additional_spec + "\nend\n"
159
+
160
+ if dry_run
161
+ puts "----- #{spec_path} -----"
162
+ puts code
163
+ else
164
+ File.open(spec_path, 'w') { |f| f.write(code) }
165
+ end
166
+ puts "#{spec_path} modified."
182
167
  end
183
168
  end
184
- end
185
169
 
186
- #
187
- # e.g.
188
- # a = double('a')
189
- # b = double('b')
190
- #
191
- def get_params_initialization_code(method)
192
- code = to_param_names_array(method.params).map { |p| " #{p} = double('#{p}')" }.join("\n")
193
- code.empty? ? '' : "#{code}\n"
194
- end
170
+ # rubocop:enable Metrics/AbcSize
171
+
172
+ # -----
173
+ # Code generation
174
+ # -----
175
+
176
+ #
177
+ # e.g.
178
+ # a = double('a')
179
+ # b = double('b')
180
+ # bar_baz = BarBaz.new(a, b)
181
+ #
182
+ def get_instantiation_code(c, method)
183
+ if method.singleton
184
+ ''
185
+ else
186
+ constructor = c.method_list.find { |m| m.name == 'new' }
187
+ if constructor.nil?
188
+ " #{instance_name(c)} = #{get_complete_class_name(c)}.new\n"
189
+ else
190
+ get_params_initialization_code(constructor) +
191
+ " #{instance_name(c)} = #{get_complete_class_name(c)}.new#{to_params_part(constructor.params)}\n"
192
+ end
193
+ end
194
+ end
195
195
 
196
- #
197
- # e.g. BarBaz.do_something(a, b) { |c| }
198
- #
199
- def get_method_invocation_code(c, method)
200
- target = method.singleton ? get_complete_class_name(c) : instance_name(c)
201
- "#{target}.#{method.name}#{to_params_part(method.params)}#{get_block_code(method)}"
202
- end
196
+ #
197
+ # e.g.
198
+ # a = double('a')
199
+ # b = double('b')
200
+ #
201
+ def get_params_initialization_code(method)
202
+ code = to_param_names_array(method.params).map { |p| " #{p} = double('#{p}')" }.join("\n")
203
+ code.empty? ? '' : "#{code}\n"
204
+ end
203
205
 
204
- #
205
- # e.g. do_something(a, b) { |c| }
206
- #
207
- def get_rails_helper_method_invocation_code(method)
208
- "#{method.name}#{to_params_part(method.params)}#{get_block_code(method)}"
209
- end
206
+ #
207
+ # e.g. BarBaz.do_something(a, b) { |c| }
208
+ #
209
+ def get_method_invocation_code(c, method)
210
+ target = method.singleton ? get_complete_class_name(c) : instance_name(c)
211
+ "#{target}.#{method.name}#{to_params_part(method.params)}#{get_block_code(method)}"
212
+ end
210
213
 
211
- #
212
- # e.g. { |a, b| }
213
- #
214
- def get_block_code(method)
215
- if method.block_params.nil? || method.block_params.empty?
216
- ''
217
- else
218
- " { |#{method.block_params}| }"
214
+ #
215
+ # e.g. do_something(a, b) { |c| }
216
+ #
217
+ def get_rails_helper_method_invocation_code(method)
218
+ "#{method.name}#{to_params_part(method.params)}#{get_block_code(method)}"
219
219
  end
220
- end
221
220
 
222
- def get_rails_http_method(method_name)
223
- http_method = RAILS_RESOURCE_METHOD_AND_HTTPMETHOD[method_name]
224
- http_method.nil? ? 'get' : http_method
225
- end
221
+ #
222
+ # e.g. { |a, b| }
223
+ #
224
+ def get_block_code(method)
225
+ if method.block_params.nil? || method.block_params.empty?
226
+ ''
227
+ else
228
+ " { |#{method.block_params}| }"
229
+ end
230
+ end
226
231
 
227
- RAILS_RESOURCE_METHOD_AND_HTTPMETHOD = {
228
- 'index' => 'get',
229
- 'new' => 'get',
230
- 'create' => 'post',
231
- 'show' => 'get',
232
- 'edit' => 'get',
233
- 'update' => 'put',
234
- 'destroy' => 'delete'
235
- }
232
+ def get_rails_http_method(method_name)
233
+ http_method = RAILS_RESOURCE_METHOD_AND_HTTP_METHOD[method_name]
234
+ http_method.nil? ? 'get' : http_method
235
+ end
236
236
 
237
+ RAILS_RESOURCE_METHOD_AND_HTTP_METHOD = {
238
+ 'index' => 'get',
239
+ 'new' => 'get',
240
+ 'create' => 'post',
241
+ 'show' => 'get',
242
+ 'edit' => 'get',
243
+ 'update' => 'put',
244
+ 'destroy' => 'delete'
245
+ }
246
+
247
+ end
237
248
  end
238
249
 
@@ -5,68 +5,67 @@ require 'rdoc/generator'
5
5
  require 'rdoc/options'
6
6
  require 'rdoc/parser/ruby'
7
7
  require 'rdoc/stats'
8
-
9
8
  require 'rspec_kickstarter'
10
9
 
11
10
  #
12
11
  # RDoc instance factory
13
12
  #
14
- class RSpecKickstarter::RDocFactory
13
+ module RSpecKickstarter
14
+ class RDocFactory
15
15
 
16
- #
17
- # Returns RDoc::NormalClass/RDoc::NormalModule instance.
18
- #
19
- def self.get_rdoc_class_or_module(file_path)
20
- top_level = self.get_ruby_parser(file_path).scan
21
- self.extract_target_class_or_module(top_level)
22
- end
16
+ #
17
+ # Returns RDoc::NormalClass/RDoc::NormalModule instance.
18
+ #
19
+ def self.get_rdoc_class_or_module(file_path)
20
+ top_level = get_ruby_parser(file_path).scan
21
+ extract_target_class_or_module(top_level)
22
+ end
23
23
 
24
- private
24
+ #
25
+ # Creates new RDoc::Parser::Ruby instance.
26
+ #
27
+ def self.get_ruby_parser(file_path)
28
+ top_level = RDoc::TopLevel.new(file_path)
29
+ if RUBY_VERSION.to_f < 2.0
30
+ # reset is removed since 2.0
31
+ RDoc::TopLevel.reset
32
+ end
25
33
 
26
- #
27
- # Creates new RDoc::Parser::Ruby instance.
28
- #
29
- def self.get_ruby_parser(file_path)
30
- top_level = RDoc::TopLevel.new(file_path)
31
- if RUBY_VERSION.to_f < 2.0
32
- # reset is removed since 2.0
33
- RDoc::TopLevel.reset
34
- end
34
+ # RDoc::Stats initialization
35
+ if defined?(RDoc::Store)
36
+ # RDoc 4.0.0 requires RDoc::Store internally.
37
+ store = RDoc::Store.new
38
+ top_level.store = store
39
+ stats = RDoc::Stats.new(store, 1)
40
+ else
41
+ stats = RDoc::Stats.new(1)
42
+ end
35
43
 
36
- # RDoc::Stats initialization
37
- if defined?(RDoc::Store)
38
- # RDoc 4.0.0 requires RDoc::Store internally.
39
- store = RDoc::Store.new
40
- top_level.store = store
41
- stats = RDoc::Stats.new(store, 1)
42
- else
43
- stats = RDoc::Stats.new(1)
44
+ RDoc::Parser::Ruby.new(
45
+ top_level,
46
+ file_path,
47
+ File.read(file_path),
48
+ RDoc::Options.new,
49
+ stats
50
+ )
44
51
  end
45
52
 
46
- RDoc::Parser::Ruby.new(
47
- top_level,
48
- file_path,
49
- File.read(file_path),
50
- RDoc::Options.new,
51
- stats
52
- )
53
- end
54
-
55
- #
56
- # Extracts RDoc::NormalClass/RDoc::NormalModule from RDoc::TopLevel.
57
- #
58
- def self.extract_target_class_or_module(top_level)
59
- c = top_level.classes.first
60
- if c.nil?
61
- m = top_level.modules.first
62
- if m.nil?
63
- top_level.is_a?(RDoc::NormalModule) ? top_level : nil
53
+ #
54
+ # Extracts RDoc::NormalClass/RDoc::NormalModule from RDoc::TopLevel.
55
+ #
56
+ def self.extract_target_class_or_module(top_level)
57
+ c = top_level.classes.first
58
+ if c.nil?
59
+ m = top_level.modules.first
60
+ if m.nil?
61
+ top_level.is_a?(RDoc::NormalModule) ? top_level : nil
62
+ else
63
+ extract_target_class_or_module(m)
64
+ end
64
65
  else
65
- extract_target_class_or_module(m)
66
+ c
66
67
  end
67
- else
68
- c
69
68
  end
70
- end
71
69
 
70
+ end
72
71
  end
@@ -4,5 +4,5 @@
4
4
  # Gem version
5
5
  #
6
6
  module RSpecKickstarter
7
- VERSION = '0.3.0'
7
+ VERSION = '1.0.0'
8
8
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-kickstarter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Kazuhiro Sera
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-07-31 00:00:00.000000000 Z
11
+ date: 2014-12-20 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: rspec-kickstarter supports you writing tests for existing code.
15
14
  email:
@@ -20,35 +19,34 @@ extensions: []
20
19
  extra_rdoc_files: []
21
20
  files:
22
21
  - bin/rspec-kickstarter
22
+ - lib/rspec_kickstarter.rb
23
23
  - lib/rspec_kickstarter/erb_factory.rb
24
24
  - lib/rspec_kickstarter/erb_templates.rb
25
25
  - lib/rspec_kickstarter/generator.rb
26
26
  - lib/rspec_kickstarter/rdoc_factory.rb
27
27
  - lib/rspec_kickstarter/version.rb
28
- - lib/rspec_kickstarter.rb
29
28
  homepage: https://github.com/seratch/rspec-kickstarter
30
29
  licenses:
31
30
  - MIT
31
+ metadata: {}
32
32
  post_install_message:
33
33
  rdoc_options: []
34
34
  require_paths:
35
35
  - lib
36
36
  required_ruby_version: !ruby/object:Gem::Requirement
37
- none: false
38
37
  requirements:
39
- - - ! '>='
38
+ - - ">="
40
39
  - !ruby/object:Gem::Version
41
40
  version: '0'
42
41
  required_rubygems_version: !ruby/object:Gem::Requirement
43
- none: false
44
42
  requirements:
45
- - - ! '>='
43
+ - - ">="
46
44
  - !ruby/object:Gem::Version
47
45
  version: '0'
48
46
  requirements: []
49
47
  rubyforge_project:
50
- rubygems_version: 1.8.23
48
+ rubygems_version: 2.2.2
51
49
  signing_key:
52
- specification_version: 3
50
+ specification_version: 4
53
51
  summary: rspec-kickstarter supports you writing tests for existing code.
54
52
  test_files: []