annotaterb 4.1.1 → 4.2.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 (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