annotaterb 4.1.1 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +68 -0
  3. data/VERSION +1 -1
  4. data/exe/annotaterb +7 -7
  5. data/lib/annotate_rb/active_record_patch.rb +2 -0
  6. data/lib/annotate_rb/commands/annotate_models.rb +0 -1
  7. data/lib/annotate_rb/commands/annotate_routes.rb +0 -1
  8. data/lib/annotate_rb/commands/print_help.rb +0 -1
  9. data/lib/annotate_rb/commands/print_version.rb +0 -1
  10. data/lib/annotate_rb/commands.rb +4 -4
  11. data/lib/annotate_rb/config_finder.rb +1 -1
  12. data/lib/annotate_rb/config_loader.rb +2 -2
  13. data/lib/annotate_rb/core.rb +3 -3
  14. data/lib/annotate_rb/helper.rb +16 -0
  15. data/lib/annotate_rb/model_annotator/{annotation_generator.rb → annotation_builder.rb} +18 -14
  16. data/lib/annotate_rb/model_annotator/annotation_decider.rb +10 -12
  17. data/lib/annotate_rb/model_annotator/annotation_diff.rb +1 -1
  18. data/lib/annotate_rb/model_annotator/annotation_diff_generator.rb +9 -9
  19. data/lib/annotate_rb/model_annotator/annotation_pattern_generator.rb +3 -3
  20. data/lib/annotate_rb/model_annotator/annotator.rb +12 -53
  21. data/lib/annotate_rb/model_annotator/column_annotation/annotation_builder.rb +135 -0
  22. data/lib/annotate_rb/model_annotator/column_annotation/attributes_builder.rb +104 -0
  23. data/lib/annotate_rb/model_annotator/column_annotation/column_wrapper.rb +103 -0
  24. data/lib/annotate_rb/model_annotator/column_annotation/type_builder.rb +54 -0
  25. data/lib/annotate_rb/model_annotator/column_annotation.rb +12 -0
  26. data/lib/annotate_rb/model_annotator/file_builder.rb +58 -0
  27. data/lib/annotate_rb/model_annotator/file_components.rb +78 -0
  28. data/lib/annotate_rb/model_annotator/file_name_resolver.rb +3 -3
  29. data/lib/annotate_rb/model_annotator/foreign_key_annotation/annotation_builder.rb +57 -0
  30. data/lib/annotate_rb/model_annotator/foreign_key_annotation.rb +9 -0
  31. data/lib/annotate_rb/model_annotator/index_annotation/annotation_builder.rb +113 -0
  32. data/lib/annotate_rb/model_annotator/index_annotation.rb +9 -0
  33. data/lib/annotate_rb/model_annotator/magic_comment_parser.rb +32 -0
  34. data/lib/annotate_rb/model_annotator/model_class_getter.rb +6 -6
  35. data/lib/annotate_rb/model_annotator/model_files_getter.rb +12 -10
  36. data/lib/annotate_rb/model_annotator/model_wrapper.rb +44 -37
  37. data/lib/annotate_rb/model_annotator/pattern_getter.rb +142 -10
  38. data/lib/annotate_rb/model_annotator/project_annotation_remover.rb +65 -0
  39. data/lib/annotate_rb/model_annotator/project_annotator.rb +63 -0
  40. data/lib/annotate_rb/model_annotator/related_files_list_builder.rb +16 -18
  41. data/lib/annotate_rb/model_annotator/single_file_annotation_remover.rb +37 -0
  42. data/lib/annotate_rb/model_annotator/single_file_annotator.rb +49 -0
  43. data/lib/annotate_rb/model_annotator/{file_annotator_instruction.rb → single_file_annotator_instruction.rb} +2 -2
  44. data/lib/annotate_rb/model_annotator/single_file_remove_annotation_instruction.rb +15 -0
  45. data/lib/annotate_rb/model_annotator.rb +25 -26
  46. data/lib/annotate_rb/options.rb +20 -25
  47. data/lib/annotate_rb/parser.rb +150 -142
  48. data/lib/annotate_rb/rake_bootstrapper.rb +8 -8
  49. data/lib/annotate_rb/route_annotator/annotation_processor.rb +7 -8
  50. data/lib/annotate_rb/route_annotator/annotator.rb +2 -2
  51. data/lib/annotate_rb/route_annotator/base_processor.rb +3 -3
  52. data/lib/annotate_rb/route_annotator/header_generator.rb +15 -15
  53. data/lib/annotate_rb/route_annotator/helper.rb +9 -9
  54. data/lib/annotate_rb/route_annotator/removal_processor.rb +4 -4
  55. data/lib/annotate_rb/route_annotator.rb +6 -6
  56. data/lib/annotate_rb/runner.rb +0 -4
  57. data/lib/annotate_rb/tasks/annotate_models_migrate.rake +5 -5
  58. data/lib/annotate_rb.rb +19 -19
  59. data/lib/generators/annotate_rb/install/install_generator.rb +3 -2
  60. data/lib/generators/annotate_rb/install/templates/annotate_rb.rake +1 -1
  61. metadata +22 -16
  62. data/lib/annotate_rb/model_annotator/column_annotation_builder.rb +0 -92
  63. data/lib/annotate_rb/model_annotator/column_attributes_builder.rb +0 -102
  64. data/lib/annotate_rb/model_annotator/column_type_builder.rb +0 -51
  65. data/lib/annotate_rb/model_annotator/column_wrapper.rb +0 -84
  66. data/lib/annotate_rb/model_annotator/constants.rb +0 -22
  67. data/lib/annotate_rb/model_annotator/file_annotation_remover.rb +0 -25
  68. data/lib/annotate_rb/model_annotator/file_annotator.rb +0 -77
  69. data/lib/annotate_rb/model_annotator/file_patterns.rb +0 -129
  70. data/lib/annotate_rb/model_annotator/foreign_key_annotation_builder.rb +0 -55
  71. data/lib/annotate_rb/model_annotator/helper.rb +0 -107
  72. data/lib/annotate_rb/model_annotator/index_annotation_builder.rb +0 -74
  73. data/lib/annotate_rb/model_annotator/model_file_annotator.rb +0 -55
@@ -1,4 +1,4 @@
1
- require 'optparse'
1
+ require "optparse"
2
2
 
3
3
  module AnnotateRb
4
4
  # Class for handling command line arguments
@@ -28,10 +28,10 @@ module AnnotateRb
28
28
  FORMAT_TYPES = %w[bare rdoc yard markdown].freeze
29
29
 
30
30
  COMMAND_MAP = {
31
- 'models' => :models,
32
- 'routes' => :routes,
33
- 'version' => :version,
34
- 'help' => :help
31
+ "models" => :models,
32
+ "routes" => :routes,
33
+ "version" => :version,
34
+ "help" => :help
35
35
  }.freeze
36
36
 
37
37
  def initialize(args, existing_options)
@@ -72,13 +72,13 @@ module AnnotateRb
72
72
  version: Commands::PrintVersion.new
73
73
  }
74
74
 
75
- if @commands.any?
76
- @options[:command] = map[@commands.first]
75
+ @options[:command] = if @commands.any?
76
+ map[@commands.first]
77
77
  elsif @commands.size > 1
78
78
  # TODO: Should raise or alert user that multiple commands were selected but only 1 command will be ran
79
- @options[:command] = map[@commands.first]
79
+ map[@commands.first]
80
80
  else # None
81
- @options[:command] = map[:help]
81
+ map[:help]
82
82
  end
83
83
  end
84
84
 
@@ -87,14 +87,14 @@ module AnnotateRb
87
87
  option_parser.banner = BANNER_STRING
88
88
 
89
89
  # ------------------------------------------------------------------------------------------------------------=
90
- option_parser.separator('')
91
- option_parser.separator('Options:')
90
+ option_parser.separator("")
91
+ option_parser.separator("Options:")
92
92
 
93
- option_parser.on('-v', '--version', "Display the version..") do
93
+ option_parser.on("-v", "--version", "Display the version..") do
94
94
  @commands << :version
95
95
  end
96
96
 
97
- option_parser.on('-h', '--help', "You're looking at it.") do
97
+ option_parser.on("-h", "--help", "You're looking at it.") do
98
98
  @commands << :help
99
99
  end
100
100
 
@@ -108,130 +108,130 @@ module AnnotateRb
108
108
  end
109
109
 
110
110
  def add_wrapper_options_to_parser(option_parser)
111
- option_parser.on('--w',
112
- '--wrapper STR',
113
- 'Wrap annotation with the text passed as parameter.',
114
- 'If --w option is used, the same text will be used as opening and closing') do |wrapper|
111
+ option_parser.on("--w",
112
+ "--wrapper STR",
113
+ "Wrap annotation with the text passed as parameter.",
114
+ "If --w option is used, the same text will be used as opening and closing") do |wrapper|
115
115
  @options[:wrapper] = wrapper
116
116
  end
117
117
 
118
- option_parser.on('--wo',
119
- '--wrapper-open STR',
120
- 'Annotation wrapper opening.') do |wrapper_open|
118
+ option_parser.on("--wo",
119
+ "--wrapper-open STR",
120
+ "Annotation wrapper opening.") do |wrapper_open|
121
121
  @options[:wrapper_open] = wrapper_open
122
122
  end
123
123
 
124
- option_parser.on('--wc',
125
- '--wrapper-close STR',
126
- 'Annotation wrapper closing') do |wrapper_close|
124
+ option_parser.on("--wc",
125
+ "--wrapper-close STR",
126
+ "Annotation wrapper closing") do |wrapper_close|
127
127
  @options[:wrapper_close] = wrapper_close
128
128
  end
129
129
  end
130
130
 
131
131
  def add_utils_to_parser(option_parser)
132
- option_parser.on('--force',
133
- 'Force new annotations even if there are no changes.') do
132
+ option_parser.on("--force",
133
+ "Force new annotations even if there are no changes.") do
134
134
  @options[:force] = true
135
135
  end
136
136
 
137
- option_parser.on('--debug',
138
- 'Prints the options and outputs messages to make it easier to debug.') do
137
+ option_parser.on("--debug",
138
+ "Prints the options and outputs messages to make it easier to debug.") do
139
139
  @options[:debug] = true
140
140
  end
141
141
 
142
- option_parser.on('--frozen',
143
- 'Do not allow to change annotations. Exits non-zero if there are going to be changes to files.') do
142
+ option_parser.on("--frozen",
143
+ "Do not allow to change annotations. Exits non-zero if there are going to be changes to files.") do
144
144
  @options[:frozen] = true
145
145
  end
146
146
 
147
- option_parser.on('--trace',
148
- 'If unable to annotate a file, print the full stack trace, not just the exception message.') do
147
+ option_parser.on("--trace",
148
+ "If unable to annotate a file, print the full stack trace, not just the exception message.") do
149
149
  @options[:trace] = true
150
150
  end
151
151
  end
152
152
 
153
153
  def add_model_options_to_parser(option_parser)
154
- option_parser.separator('')
155
- option_parser.separator('Annotate model options:')
156
- option_parser.separator(' ' * 4 + 'Usage: annotaterb models [options]')
157
- option_parser.separator('')
158
-
159
- option_parser.on('-a',
160
- '--active-admin',
161
- 'Annotate active_admin models') do
154
+ option_parser.separator("")
155
+ option_parser.separator("Annotate model options:")
156
+ option_parser.separator(" " * 4 + "Usage: annotaterb models [options]")
157
+ option_parser.separator("")
158
+
159
+ option_parser.on("-a",
160
+ "--active-admin",
161
+ "Annotate active_admin models") do
162
162
  @options[:active_admin] = true
163
163
  end
164
164
 
165
- option_parser.on('--show-migration',
166
- 'Include the migration version number in the annotation') do
165
+ option_parser.on("--show-migration",
166
+ "Include the migration version number in the annotation") do
167
167
  @options[:include_version] = true
168
168
  end
169
169
 
170
- option_parser.on('-k',
171
- '--show-foreign-keys',
172
- "List the table's foreign key constraints in the annotation") do
170
+ option_parser.on("-k",
171
+ "--show-foreign-keys",
172
+ "List the table's foreign key constraints in the annotation") do
173
173
  @options[:show_foreign_keys] = true
174
174
  end
175
175
 
176
- option_parser.on('--ck',
177
- '--complete-foreign-keys',
178
- 'Complete foreign key names in the annotation') do
176
+ option_parser.on("--ck",
177
+ "--complete-foreign-keys",
178
+ "Complete foreign key names in the annotation") do
179
179
  @options[:show_foreign_keys] = true
180
180
  @options[:show_complete_foreign_keys] = true
181
181
  end
182
182
 
183
- option_parser.on('-i',
184
- '--show-indexes',
185
- "List the table's database indexes in the annotation") do
183
+ option_parser.on("-i",
184
+ "--show-indexes",
185
+ "List the table's database indexes in the annotation") do
186
186
  @options[:show_indexes] = true
187
187
  end
188
188
 
189
- option_parser.on('-s',
190
- '--simple-indexes',
191
- "Concat the column's related indexes in the annotation") do
189
+ option_parser.on("-s",
190
+ "--simple-indexes",
191
+ "Concat the column's related indexes in the annotation") do
192
192
  @options[:simple_indexes] = true
193
193
  end
194
194
 
195
- option_parser.on('--hide-limit-column-types VALUES',
196
- "don't show limit for given column types, separated by commas (i.e., `integer,boolean,text`)") do |values|
195
+ option_parser.on("--hide-limit-column-types VALUES",
196
+ "don't show limit for given column types, separated by commas (i.e., `integer,boolean,text`)") do |values|
197
197
  @options[:hide_limit_column_types] = values.to_s
198
198
  end
199
199
 
200
- option_parser.on('--hide-default-column-types VALUES',
201
- "don't show default for given column types, separated by commas (i.e., `json,jsonb,hstore`)") do |values|
200
+ option_parser.on("--hide-default-column-types VALUES",
201
+ "don't show default for given column types, separated by commas (i.e., `json,jsonb,hstore`)") do |values|
202
202
  @options[:hide_default_column_types] = values.to_s
203
203
  end
204
204
 
205
- option_parser.on('--ignore-unknown-models',
206
- "don't display warnings for bad model files") do
205
+ option_parser.on("--ignore-unknown-models",
206
+ "don't display warnings for bad model files") do
207
207
  @options[:ignore_unknown_models] = true
208
208
  end
209
209
 
210
- option_parser.on('-I',
211
- '--ignore-columns REGEX',
212
- "don't annotate columns that match a given REGEX (i.e., `annotate -I '^(id|updated_at|created_at)'`") do |regex|
210
+ option_parser.on("-I",
211
+ "--ignore-columns REGEX",
212
+ "don't annotate columns that match a given REGEX (i.e., `annotate -I '^(id|updated_at|created_at)'`") do |regex|
213
213
  @options[:ignore_columns] = regex
214
214
  end
215
215
 
216
- option_parser.on('--with-comment',
217
- "include database comments in model annotations") do
216
+ option_parser.on("--with-comment",
217
+ "include database comments in model annotations") do
218
218
  @options[:with_comment] = true
219
219
  end
220
220
  end
221
221
 
222
222
  def add_route_options_to_parser(option_parser)
223
- option_parser.separator('')
224
- option_parser.separator('Annotate routes options:')
225
- option_parser.separator(' ' * 4 + 'Usage: annotaterb routes [options]')
226
- option_parser.separator('')
223
+ option_parser.separator("")
224
+ option_parser.separator("Annotate routes options:")
225
+ option_parser.separator(" " * 4 + "Usage: annotaterb routes [options]")
226
+ option_parser.separator("")
227
227
 
228
- option_parser.on('--ignore-routes REGEX',
229
- "don't annotate routes that match a given REGEX (i.e., `annotate -I '(mobile|resque|pghero)'`") do |regex|
228
+ option_parser.on("--ignore-routes REGEX",
229
+ "don't annotate routes that match a given REGEX (i.e., `annotate -I '(mobile|resque|pghero)'`") do |regex|
230
230
  @options[:ignore_routes] = regex
231
231
  end
232
232
 
233
- option_parser.on('--timestamp',
234
- 'Include timestamp in (routes) annotation') do
233
+ option_parser.on("--timestamp",
234
+ "Include timestamp in (routes) annotation") do
235
235
  @options[:timestamp] = true
236
236
  end
237
237
  end
@@ -239,10 +239,10 @@ module AnnotateRb
239
239
  def add_position_options_to_parser(option_parser)
240
240
  has_set_position = {}
241
241
 
242
- option_parser.on('-p',
243
- '--position [before|top|after|bottom]',
244
- ANNOTATION_POSITIONS,
245
- 'Place the annotations at the top (before) or the bottom (after) of the model/test/fixture/factory/route/serializer file(s)') do |position|
242
+ option_parser.on("-p",
243
+ "--position [before|top|after|bottom]",
244
+ ANNOTATION_POSITIONS,
245
+ "Place the annotations at the top (before) or the bottom (after) of the model/test/fixture/factory/route/serializer file(s)") do |position|
246
246
  @options[:position] = position
247
247
 
248
248
  FILE_TYPE_POSITIONS.each do |key|
@@ -250,120 +250,128 @@ module AnnotateRb
250
250
  end
251
251
  end
252
252
 
253
- option_parser.on('--pc',
254
- '--position-in-class [before|top|after|bottom]',
255
- ANNOTATION_POSITIONS,
256
- 'Place the annotations at the top (before) or the bottom (after) of the model file') do |position_in_class|
253
+ option_parser.on("--pc",
254
+ "--position-in-class [before|top|after|bottom]",
255
+ ANNOTATION_POSITIONS,
256
+ "Place the annotations at the top (before) or the bottom (after) of the model file") do |position_in_class|
257
257
  @options[:position_in_class] = position_in_class
258
- has_set_position['position_in_class'] = true
258
+ has_set_position["position_in_class"] = true
259
259
  end
260
260
 
261
- option_parser.on('--pf',
262
- '--position-in-factory [before|top|after|bottom]',
263
- ANNOTATION_POSITIONS,
264
- 'Place the annotations at the top (before) or the bottom (after) of any factory files') do |position_in_factory|
261
+ option_parser.on("--pf",
262
+ "--position-in-factory [before|top|after|bottom]",
263
+ ANNOTATION_POSITIONS,
264
+ "Place the annotations at the top (before) or the bottom (after) of any factory files") do |position_in_factory|
265
265
  @options[:position_in_factory] = position_in_factory
266
- has_set_position['position_in_factory'] = true
266
+ has_set_position["position_in_factory"] = true
267
267
  end
268
268
 
269
- option_parser.on('--px',
270
- '--position-in-fixture [before|top|after|bottom]',
271
- ANNOTATION_POSITIONS,
272
- 'Place the annotations at the top (before) or the bottom (after) of any fixture files') do |position_in_fixture|
269
+ option_parser.on("--px",
270
+ "--position-in-fixture [before|top|after|bottom]",
271
+ ANNOTATION_POSITIONS,
272
+ "Place the annotations at the top (before) or the bottom (after) of any fixture files") do |position_in_fixture|
273
273
  @options[:position_in_fixture] = position_in_fixture
274
- has_set_position['position_in_fixture'] = true
274
+ has_set_position["position_in_fixture"] = true
275
275
  end
276
276
 
277
- option_parser.on('--pt',
278
- '--position-in-test [before|top|after|bottom]',
279
- ANNOTATION_POSITIONS,
280
- 'Place the annotations at the top (before) or the bottom (after) of any test files') do |position_in_test|
277
+ option_parser.on("--pt",
278
+ "--position-in-test [before|top|after|bottom]",
279
+ ANNOTATION_POSITIONS,
280
+ "Place the annotations at the top (before) or the bottom (after) of any test files") do |position_in_test|
281
281
  @options[:position_in_test] = position_in_test
282
- has_set_position['position_in_test'] = true
282
+ has_set_position["position_in_test"] = true
283
283
  end
284
284
 
285
- option_parser.on('--pr',
286
- '--position-in-routes [before|top|after|bottom]',
287
- ANNOTATION_POSITIONS,
288
- 'Place the annotations at the top (before) or the bottom (after) of the routes.rb file') do |position_in_routes|
285
+ option_parser.on("--pr",
286
+ "--position-in-routes [before|top|after|bottom]",
287
+ ANNOTATION_POSITIONS,
288
+ "Place the annotations at the top (before) or the bottom (after) of the routes.rb file") do |position_in_routes|
289
289
  @options[:position_in_routes] = position_in_routes
290
- has_set_position['position_in_routes'] = true
290
+ has_set_position["position_in_routes"] = true
291
291
  end
292
292
 
293
- option_parser.on('--ps',
294
- '--position-in-serializer [before|top|after|bottom]',
295
- ANNOTATION_POSITIONS,
296
- 'Place the annotations at the top (before) or the bottom (after) of the serializer files') do |position_in_serializer|
293
+ option_parser.on("--ps",
294
+ "--position-in-serializer [before|top|after|bottom]",
295
+ ANNOTATION_POSITIONS,
296
+ "Place the annotations at the top (before) or the bottom (after) of the serializer files") do |position_in_serializer|
297
297
  @options[:position_in_serializer] = position_in_serializer
298
- has_set_position['position_in_serializer'] = true
298
+ has_set_position["position_in_serializer"] = true
299
+ end
300
+
301
+ option_parser.on("--pa",
302
+ "--position-in-additional-file-patterns [before|top|after|bottom]",
303
+ ANNOTATION_POSITIONS,
304
+ "Place the annotations at the top (before) or the bottom (after) of files captured in additional file patterns") do |position_in_serializer|
305
+ @options[:position_in_additional_file_patterns] = position_in_serializer
306
+ has_set_position["position_in_additional_file_patterns"] = true
299
307
  end
300
308
  end
301
309
 
302
310
  def add_options_to_parser(option_parser) # rubocop:disable Metrics/MethodLength
303
- option_parser.separator('')
304
- option_parser.separator('Command options:')
305
- option_parser.separator('Additional options that work for annotating models and routes')
306
- option_parser.separator('')
307
-
308
- option_parser.on('--additional-file-patterns path1,path2,path3',
309
- Array,
310
- "Additional file paths or globs to annotate, separated by commas (e.g. `/foo/bar/%model_name%/*.rb,/baz/%model_name%.rb`)") do |additional_file_patterns|
311
+ option_parser.separator("")
312
+ option_parser.separator("Command options:")
313
+ option_parser.separator("Additional options that work for annotating models and routes")
314
+ option_parser.separator("")
315
+
316
+ option_parser.on("--additional-file-patterns path1,path2,path3",
317
+ Array,
318
+ "Additional file paths or globs to annotate, separated by commas (e.g. `/foo/bar/%model_name%/*.rb,/baz/%model_name%.rb`)") do |additional_file_patterns|
311
319
  @options[:additional_file_patterns] = additional_file_patterns
312
320
  end
313
321
 
314
- option_parser.on('-d',
315
- '--delete',
316
- 'Remove annotations from all model files or the routes.rb file') do
322
+ option_parser.on("-d",
323
+ "--delete",
324
+ "Remove annotations from all model files or the routes.rb file") do
317
325
  @options[:target_action] = :remove_annotations
318
326
  end
319
327
 
320
- option_parser.on('--model-dir dir',
321
- "Annotate model files stored in dir rather than app/models, separate multiple dirs with commas") do |dir|
328
+ option_parser.on("--model-dir dir",
329
+ "Annotate model files stored in dir rather than app/models, separate multiple dirs with commas") do |dir|
322
330
  @options[:model_dir] = dir
323
331
  end
324
332
 
325
- option_parser.on('--root-dir dir',
326
- "Annotate files stored within root dir projects, separate multiple dirs with commas") do |dir|
333
+ option_parser.on("--root-dir dir",
334
+ "Annotate files stored within root dir projects, separate multiple dirs with commas") do |dir|
327
335
  @options[:root_dir] = dir
328
336
  end
329
337
 
330
- option_parser.on('--ignore-model-subdirects',
331
- "Ignore subdirectories of the models directory") do
338
+ option_parser.on("--ignore-model-subdirects",
339
+ "Ignore subdirectories of the models directory") do
332
340
  @options[:ignore_model_sub_dir] = true
333
341
  end
334
342
 
335
- option_parser.on('--sort',
336
- "Sort columns alphabetically, rather than in creation order") do
343
+ option_parser.on("--sort",
344
+ "Sort columns alphabetically, rather than in creation order") do
337
345
  @options[:sort] = true
338
346
  end
339
347
 
340
- option_parser.on('--classified-sort',
341
- "Sort columns alphabetically, but first goes id, then the rest columns, then the timestamp columns and then the association columns") do
348
+ option_parser.on("--classified-sort",
349
+ "Sort columns alphabetically, but first goes id, then the rest columns, then the timestamp columns and then the association columns") do
342
350
  @options[:classified_sort] = true
343
351
  end
344
352
 
345
- option_parser.on('-R',
346
- '--require path',
347
- "Additional file to require before loading models, may be used multiple times") do |path|
353
+ option_parser.on("-R",
354
+ "--require path",
355
+ "Additional file to require before loading models, may be used multiple times") do |path|
348
356
  @options[:require] = if @options[:require].present?
349
- [@options[:require], path].join(',')
350
- else
351
- path
352
- end
357
+ [@options[:require], path].join(",")
358
+ else
359
+ path
360
+ end
353
361
  end
354
362
 
355
- option_parser.on('-e',
356
- '--exclude [tests,fixtures,factories,serializers]',
357
- Array,
358
- "Do not annotate fixtures, test files, factories, and/or serializers") do |exclusions|
363
+ option_parser.on("-e",
364
+ "--exclude [tests,fixtures,factories,serializers]",
365
+ Array,
366
+ "Do not annotate fixtures, test files, factories, and/or serializers") do |exclusions|
359
367
  exclusions ||= EXCLUSION_LIST
360
368
  exclusions.each { |exclusion| @options["exclude_#{exclusion}".to_sym] = true }
361
369
  end
362
370
 
363
- option_parser.on('-f',
364
- '--format [bare|rdoc|yard|markdown]',
365
- FORMAT_TYPES,
366
- 'Render Schema Information as plain/RDoc/Yard/Markdown') do |format_type|
371
+ option_parser.on("-f",
372
+ "--format [bare|rdoc|yard|markdown]",
373
+ FORMAT_TYPES,
374
+ "Render Schema Information as plain/RDoc/Yard/Markdown") do |format_type|
367
375
  @options["format_#{format_type}".to_sym] = true
368
376
  end
369
377
  end
@@ -5,15 +5,15 @@ module AnnotateRb
5
5
  class << self
6
6
  def call(options)
7
7
  begin
8
- require 'rake/dsl_definition'
9
- rescue StandardError => e
8
+ require "rake/dsl_definition"
9
+ rescue => e
10
10
  # We might just be on an old version of Rake...
11
- $stderr.puts e.message
11
+ warn e.message
12
12
  exit e.status_code
13
13
  end
14
14
 
15
- require 'rake'
16
- load './Rakefile' if File.exist?('./Rakefile')
15
+ require "rake"
16
+ load "./Rakefile" if File.exist?("./Rakefile")
17
17
 
18
18
  begin
19
19
  Rake::Task[:environment].invoke
@@ -24,9 +24,9 @@ module AnnotateRb
24
24
  unless defined?(Rails)
25
25
  # Not in a Rails project, so time to load up the parts of
26
26
  # ActiveSupport we need.
27
- require 'active_support'
28
- require 'active_support/core_ext/class/subclasses'
29
- require 'active_support/core_ext/string/inflections'
27
+ require "active_support"
28
+ require "active_support/core_ext/class/subclasses"
29
+ require "active_support/core_ext/string/inflections"
30
30
  end
31
31
  end
32
32
  end
@@ -5,7 +5,6 @@ module AnnotateRb
5
5
  module RouteAnnotator
6
6
  # This class is abstract class of classes adding and removing annotation to config/routes.rb.
7
7
  class AnnotationProcessor < BaseProcessor
8
-
9
8
  # @return [String]
10
9
  def execute
11
10
  if routes_file_exist?
@@ -27,30 +26,30 @@ module AnnotateRb
27
26
 
28
27
  def generate_new_content_array(content, header_position)
29
28
  magic_comments_map, content = Helper.extract_magic_comments_from_array(content)
30
- if %w(before top).include?(options[:position_in_routes])
29
+ if %w[before top].include?(options[:position_in_routes])
31
30
  new_content_array = []
32
31
  new_content_array += magic_comments_map
33
- new_content_array << '' if magic_comments_map.any?
32
+ new_content_array << "" if magic_comments_map.any?
34
33
  new_content_array += header
35
- new_content_array << '' if content.first != ''
34
+ new_content_array << "" if content.first != ""
36
35
  new_content_array += content
37
36
  else
38
37
  # Ensure we have adequate trailing newlines at the end of the file to
39
38
  # ensure a blank line separating the content from the annotation.
40
- content << '' unless content.last == ''
39
+ content << "" unless content.last == ""
41
40
 
42
41
  # We're moving something from the top of the file to the bottom, so ditch
43
42
  # the spacer we put in the first time around.
44
- content.shift if header_position == :before && content.first == ''
43
+ content.shift if header_position == :before && content.first == ""
45
44
 
46
45
  new_content_array = magic_comments_map + content + header
47
46
  end
48
47
 
49
48
  # Make sure we end on a trailing newline.
50
- new_content_array << '' unless new_content_array.last == ''
49
+ new_content_array << "" unless new_content_array.last == ""
51
50
 
52
51
  new_content_array
53
52
  end
54
53
  end
55
54
  end
56
- end
55
+ end
@@ -23,14 +23,14 @@ module AnnotateRb
23
23
  end
24
24
 
25
25
  def add_annotations
26
- routes_file = File.join('config', 'routes.rb')
26
+ routes_file = File.join("config", "routes.rb")
27
27
  AnnotationProcessor.execute(@options, routes_file).tap do |result|
28
28
  puts result
29
29
  end
30
30
  end
31
31
 
32
32
  def remove_annotations
33
- routes_file = File.join('config', 'routes.rb')
33
+ routes_file = File.join("config", "routes.rb")
34
34
  RemovalProcessor.execute(@options, routes_file).tap do |result|
35
35
  puts result
36
36
  end
@@ -55,7 +55,7 @@ module AnnotateRb
55
55
  end
56
56
 
57
57
  def write(text)
58
- File.open(routes_file, 'wb') { |f| f.puts(text) }
58
+ File.open(routes_file, "wb") { |f| f.puts(text) }
59
59
  end
60
60
 
61
61
  # TODO: write the method doc using ruby rdoc formats
@@ -75,7 +75,7 @@ module AnnotateRb
75
75
  mode = :content
76
76
  real_content << line unless line.blank?
77
77
  elsif mode == :content
78
- if line =~ /^\s*#\s*== Route.*$/
78
+ if /^\s*#\s*== Route.*$/.match?(line)
79
79
  header_position = line_number + 1 # index start's at 0
80
80
  mode = :header
81
81
  else
@@ -97,7 +97,7 @@ module AnnotateRb
97
97
  return real_content, :after if header_position >= real_content.count
98
98
 
99
99
  # and the default
100
- return real_content, header_position
100
+ [real_content, header_position]
101
101
  end
102
102
  end
103
103
  end