annotaterb 4.1.0 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +68 -0
  3. data/README.md +4 -5
  4. data/VERSION +1 -1
  5. data/exe/annotaterb +7 -7
  6. data/lib/annotate_rb/active_record_patch.rb +2 -0
  7. data/lib/annotate_rb/commands/annotate_models.rb +0 -1
  8. data/lib/annotate_rb/commands/annotate_routes.rb +0 -1
  9. data/lib/annotate_rb/commands/print_help.rb +0 -1
  10. data/lib/annotate_rb/commands/print_version.rb +0 -1
  11. data/lib/annotate_rb/commands.rb +4 -4
  12. data/lib/annotate_rb/config_finder.rb +1 -1
  13. data/lib/annotate_rb/config_loader.rb +2 -2
  14. data/lib/annotate_rb/core.rb +3 -3
  15. data/lib/annotate_rb/helper.rb +16 -0
  16. data/lib/annotate_rb/model_annotator/{annotation_generator.rb → annotation_builder.rb} +18 -14
  17. data/lib/annotate_rb/model_annotator/annotation_decider.rb +10 -12
  18. data/lib/annotate_rb/model_annotator/annotation_diff.rb +19 -0
  19. data/lib/annotate_rb/model_annotator/annotation_diff_generator.rb +44 -0
  20. data/lib/annotate_rb/model_annotator/annotation_pattern_generator.rb +3 -3
  21. data/lib/annotate_rb/model_annotator/annotator.rb +12 -53
  22. data/lib/annotate_rb/model_annotator/column_annotation/annotation_builder.rb +135 -0
  23. data/lib/annotate_rb/model_annotator/column_annotation/attributes_builder.rb +104 -0
  24. data/lib/annotate_rb/model_annotator/column_annotation/column_wrapper.rb +103 -0
  25. data/lib/annotate_rb/model_annotator/column_annotation/type_builder.rb +54 -0
  26. data/lib/annotate_rb/model_annotator/column_annotation.rb +12 -0
  27. data/lib/annotate_rb/model_annotator/file_builder.rb +58 -0
  28. data/lib/annotate_rb/model_annotator/file_components.rb +78 -0
  29. data/lib/annotate_rb/model_annotator/file_name_resolver.rb +3 -3
  30. data/lib/annotate_rb/model_annotator/foreign_key_annotation/annotation_builder.rb +57 -0
  31. data/lib/annotate_rb/model_annotator/foreign_key_annotation.rb +9 -0
  32. data/lib/annotate_rb/model_annotator/index_annotation/annotation_builder.rb +113 -0
  33. data/lib/annotate_rb/model_annotator/index_annotation.rb +9 -0
  34. data/lib/annotate_rb/model_annotator/magic_comment_parser.rb +32 -0
  35. data/lib/annotate_rb/model_annotator/model_class_getter.rb +6 -6
  36. data/lib/annotate_rb/model_annotator/model_files_getter.rb +12 -10
  37. data/lib/annotate_rb/model_annotator/model_wrapper.rb +44 -37
  38. data/lib/annotate_rb/model_annotator/pattern_getter.rb +142 -10
  39. data/lib/annotate_rb/model_annotator/project_annotation_remover.rb +65 -0
  40. data/lib/annotate_rb/model_annotator/project_annotator.rb +63 -0
  41. data/lib/annotate_rb/model_annotator/related_files_list_builder.rb +16 -18
  42. data/lib/annotate_rb/model_annotator/single_file_annotation_remover.rb +37 -0
  43. data/lib/annotate_rb/model_annotator/single_file_annotator.rb +49 -0
  44. data/lib/annotate_rb/model_annotator/{file_annotator_instruction.rb → single_file_annotator_instruction.rb} +2 -2
  45. data/lib/annotate_rb/model_annotator/single_file_remove_annotation_instruction.rb +15 -0
  46. data/lib/annotate_rb/model_annotator.rb +25 -24
  47. data/lib/annotate_rb/options.rb +20 -25
  48. data/lib/annotate_rb/parser.rb +150 -142
  49. data/lib/annotate_rb/rake_bootstrapper.rb +8 -8
  50. data/lib/annotate_rb/route_annotator/annotation_processor.rb +7 -8
  51. data/lib/annotate_rb/route_annotator/annotator.rb +2 -2
  52. data/lib/annotate_rb/route_annotator/base_processor.rb +3 -3
  53. data/lib/annotate_rb/route_annotator/header_generator.rb +15 -15
  54. data/lib/annotate_rb/route_annotator/helper.rb +9 -9
  55. data/lib/annotate_rb/route_annotator/removal_processor.rb +4 -4
  56. data/lib/annotate_rb/route_annotator.rb +6 -6
  57. data/lib/annotate_rb/runner.rb +0 -4
  58. data/lib/annotate_rb/tasks/annotate_models_migrate.rake +5 -5
  59. data/lib/annotate_rb.rb +19 -19
  60. data/lib/generators/annotate_rb/install/install_generator.rb +3 -2
  61. data/lib/generators/annotate_rb/install/templates/annotate_rb.rake +1 -1
  62. metadata +24 -16
  63. data/lib/annotate_rb/model_annotator/column_annotation_builder.rb +0 -92
  64. data/lib/annotate_rb/model_annotator/column_attributes_builder.rb +0 -102
  65. data/lib/annotate_rb/model_annotator/column_type_builder.rb +0 -51
  66. data/lib/annotate_rb/model_annotator/column_wrapper.rb +0 -84
  67. data/lib/annotate_rb/model_annotator/constants.rb +0 -22
  68. data/lib/annotate_rb/model_annotator/file_annotation_remover.rb +0 -25
  69. data/lib/annotate_rb/model_annotator/file_annotator.rb +0 -83
  70. data/lib/annotate_rb/model_annotator/file_patterns.rb +0 -129
  71. data/lib/annotate_rb/model_annotator/foreign_key_annotation_builder.rb +0 -55
  72. data/lib/annotate_rb/model_annotator/helper.rb +0 -107
  73. data/lib/annotate_rb/model_annotator/index_annotation_builder.rb +0 -74
  74. data/lib/annotate_rb/model_annotator/model_file_annotator.rb +0 -55
@@ -5,7 +5,7 @@ module AnnotateRb
5
5
  # Given a model file and options, this class will return a list of related files (e.g. fixture, controllers, etc)
6
6
  # to also annotate
7
7
  class RelatedFilesListBuilder
8
- RELATED_TYPES = %w(test fixture factory serializer scaffold controller helper).freeze
8
+ RELATED_TYPES = %w[test fixture factory serializer scaffold controller helper].freeze
9
9
 
10
10
  def initialize(file, model_name, table_name, options)
11
11
  @file = file
@@ -35,17 +35,15 @@ module AnnotateRb
35
35
  def related_files_for_pattern(pattern_type)
36
36
  patterns = PatternGetter.call(@options, pattern_type)
37
37
 
38
- _related_files = patterns
39
- .map { |f| FileNameResolver.call(f, @model_name, @table_name) }
40
- .map { |f| Dir.glob(f) }
41
- .flatten
42
-
43
- _related_files
38
+ patterns
39
+ .map { |f| FileNameResolver.call(f, @model_name, @table_name) }
40
+ .map { |f| Dir.glob(f) }
41
+ .flatten
44
42
  end
45
43
 
46
44
  def add_related_test_files
47
45
  position_key = :position_in_test
48
- pattern_type = 'test'
46
+ pattern_type = "test"
49
47
 
50
48
  related_files = related_files_for_pattern(pattern_type)
51
49
  files_with_position_key = related_files.map { |f| [f, position_key] }
@@ -55,7 +53,7 @@ module AnnotateRb
55
53
 
56
54
  def add_related_fixture_files
57
55
  position_key = :position_in_fixture
58
- pattern_type = 'fixture'
56
+ pattern_type = "fixture"
59
57
 
60
58
  related_files = related_files_for_pattern(pattern_type)
61
59
  files_with_position_key = related_files.map { |f| [f, position_key] }
@@ -65,7 +63,7 @@ module AnnotateRb
65
63
 
66
64
  def add_related_factory_files
67
65
  position_key = :position_in_factory
68
- pattern_type = 'factory'
66
+ pattern_type = "factory"
69
67
 
70
68
  related_files = related_files_for_pattern(pattern_type)
71
69
  files_with_position_key = related_files.map { |f| [f, position_key] }
@@ -75,7 +73,7 @@ module AnnotateRb
75
73
 
76
74
  def add_related_serializer_files
77
75
  position_key = :position_in_serializer
78
- pattern_type = 'serializer'
76
+ pattern_type = "serializer"
79
77
 
80
78
  related_files = related_files_for_pattern(pattern_type)
81
79
  files_with_position_key = related_files.map { |f| [f, position_key] }
@@ -85,7 +83,7 @@ module AnnotateRb
85
83
 
86
84
  def add_related_scaffold_files
87
85
  position_key = :position_in_scaffold # Key does not exist
88
- pattern_type = 'scaffold'
86
+ pattern_type = "scaffold"
89
87
 
90
88
  related_files = related_files_for_pattern(pattern_type)
91
89
  files_with_position_key = related_files.map { |f| [f, position_key] }
@@ -95,7 +93,7 @@ module AnnotateRb
95
93
 
96
94
  def add_related_controller_files
97
95
  position_key = :position_in_controller # Key does not exist
98
- pattern_type = 'controller'
96
+ pattern_type = "controller"
99
97
 
100
98
  related_files = related_files_for_pattern(pattern_type)
101
99
  files_with_position_key = related_files.map { |f| [f, position_key] }
@@ -105,7 +103,7 @@ module AnnotateRb
105
103
 
106
104
  def add_related_helper_files
107
105
  position_key = :position_in_helper # Key does not exist
108
- pattern_type = 'helper'
106
+ pattern_type = "helper"
109
107
 
110
108
  related_files = related_files_for_pattern(pattern_type)
111
109
  files_with_position_key = related_files.map { |f| [f, position_key] }
@@ -115,7 +113,7 @@ module AnnotateRb
115
113
 
116
114
  def add_related_admin_files
117
115
  position_key = :position_in_admin # Key does not exist
118
- pattern_type = 'admin'
116
+ pattern_type = "admin"
119
117
 
120
118
  related_files = related_files_for_pattern(pattern_type)
121
119
  files_with_position_key = related_files.map { |f| [f, position_key] }
@@ -124,8 +122,8 @@ module AnnotateRb
124
122
  end
125
123
 
126
124
  def add_additional_file_patterns
127
- position_key = :position_in_additional_file_patterns # Key does not exist
128
- pattern_type = 'additional_file_patterns'
125
+ position_key = :position_in_additional_file_patterns
126
+ pattern_type = "additional_file_patterns"
129
127
 
130
128
  related_files = related_files_for_pattern(pattern_type)
131
129
  files_with_position_key = related_files.map { |f| [f, position_key] }
@@ -134,4 +132,4 @@ module AnnotateRb
134
132
  end
135
133
  end
136
134
  end
137
- end
135
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AnnotateRb
4
+ module ModelAnnotator
5
+ class SingleFileAnnotationRemover
6
+ class << self
7
+ def call_with_instructions(instruction)
8
+ call(instruction.file, instruction.options)
9
+ end
10
+
11
+ def call(file_name, options = Options.from({}))
12
+ return false unless File.exist?(file_name)
13
+ old_content = File.read(file_name)
14
+
15
+ file_components = FileComponents.new(old_content, "", options)
16
+
17
+ return false if file_components.has_skip_string?
18
+ # TODO: Uncomment below after tests are fixed
19
+ # return false if !file_components.has_annotations?
20
+
21
+ wrapper_open = if options[:wrapper_open]
22
+ "# #{options[:wrapper_open]}\n"
23
+ else
24
+ ""
25
+ end
26
+
27
+ generated_pattern = AnnotationPatternGenerator.call(options)
28
+ updated_file_content = old_content.sub!(/(#{wrapper_open})?#{generated_pattern}/, "")
29
+
30
+ File.open(file_name, "wb") { |f| f.puts updated_file_content }
31
+
32
+ true
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AnnotateRb
4
+ module ModelAnnotator
5
+ class SingleFileAnnotator
6
+ class << self
7
+ def call_with_instructions(instruction)
8
+ call(instruction.file, instruction.annotation, instruction.position, instruction.options)
9
+ end
10
+
11
+ # Add a schema block to a file. If the file already contains
12
+ # a schema info block (a comment starting with "== Schema Information"),
13
+ # check if it matches the block that is already there. If so, leave it be.
14
+ # If not, remove the old info block and write a new one.
15
+ #
16
+ # == Returns:
17
+ # true or false depending on whether the file was modified.
18
+ #
19
+ # === Options (opts)
20
+ # :force<Symbol>:: whether to update the file even if it doesn't seem to need it.
21
+ # :position_in_*<Symbol>:: where to place the annotated section in fixture or model file,
22
+ # :before, :top, :after or :bottom. Default is :before.
23
+ #
24
+ def call(file_name, annotation, annotation_position, options = {})
25
+ return false unless File.exist?(file_name)
26
+ old_content = File.read(file_name)
27
+
28
+ file_components = FileComponents.new(old_content, annotation, options)
29
+ builder = FileBuilder.new(file_components, annotation, annotation_position, options)
30
+
31
+ return false if file_components.has_skip_string?
32
+ return false if !file_components.annotations_changed? && !options[:force]
33
+
34
+ abort "AnnotateRb error. #{file_name} needs to be updated, but annotaterb was run with `--frozen`." if options[:frozen]
35
+
36
+ updated_file_content = if !file_components.has_annotations? || options[:force]
37
+ builder.generate_content_with_new_annotations
38
+ else
39
+ builder.update_existing_annotations
40
+ end
41
+
42
+ File.open(file_name, "wb") { |f| f.puts updated_file_content }
43
+
44
+ true
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -2,8 +2,8 @@
2
2
 
3
3
  module AnnotateRb
4
4
  module ModelAnnotator
5
- # A plain old Ruby object (PORO) that contains all necessary information for FileAnnotator
6
- class FileAnnotatorInstruction
5
+ # A plain old Ruby object (PORO) that contains all necessary information for SingleFileAnnotator
6
+ class SingleFileAnnotatorInstruction
7
7
  def initialize(file, annotation, position, options = {})
8
8
  @file = file # Path to file
9
9
  @annotation = annotation # Annotation string
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AnnotateRb
4
+ module ModelAnnotator
5
+ # A plain old Ruby object (PORO) that contains all necessary information for SingleFileAnnotationRemover
6
+ class SingleFileRemoveAnnotationInstruction
7
+ def initialize(file, options = {})
8
+ @file = file # Path to file
9
+ @options = options
10
+ end
11
+
12
+ attr_reader :file, :options
13
+ end
14
+ end
15
+ end
@@ -2,29 +2,30 @@
2
2
 
3
3
  module AnnotateRb
4
4
  module ModelAnnotator
5
- autoload :Annotator, 'annotate_rb/model_annotator/annotator'
6
- autoload :Helper, 'annotate_rb/model_annotator/helper'
7
- autoload :FilePatterns, 'annotate_rb/model_annotator/file_patterns'
8
- autoload :Constants, 'annotate_rb/model_annotator/constants'
9
- autoload :PatternGetter, 'annotate_rb/model_annotator/pattern_getter'
10
- autoload :BadModelFileError, 'annotate_rb/model_annotator/bad_model_file_error'
11
- autoload :FileNameResolver, 'annotate_rb/model_annotator/file_name_resolver'
12
- autoload :FileAnnotationRemover, 'annotate_rb/model_annotator/file_annotation_remover'
13
- autoload :AnnotationPatternGenerator, 'annotate_rb/model_annotator/annotation_pattern_generator'
14
- autoload :ModelClassGetter, 'annotate_rb/model_annotator/model_class_getter'
15
- autoload :ModelFilesGetter, 'annotate_rb/model_annotator/model_files_getter'
16
- autoload :FileAnnotator, 'annotate_rb/model_annotator/file_annotator'
17
- autoload :ModelFileAnnotator, 'annotate_rb/model_annotator/model_file_annotator'
18
- autoload :ModelWrapper, 'annotate_rb/model_annotator/model_wrapper'
19
- autoload :AnnotationGenerator, 'annotate_rb/model_annotator/annotation_generator'
20
- autoload :ColumnAttributesBuilder, 'annotate_rb/model_annotator/column_attributes_builder'
21
- autoload :ColumnTypeBuilder, 'annotate_rb/model_annotator/column_type_builder'
22
- autoload :ColumnWrapper, 'annotate_rb/model_annotator/column_wrapper'
23
- autoload :ColumnAnnotationBuilder, 'annotate_rb/model_annotator/column_annotation_builder'
24
- autoload :IndexAnnotationBuilder, 'annotate_rb/model_annotator/index_annotation_builder'
25
- autoload :ForeignKeyAnnotationBuilder, 'annotate_rb/model_annotator/foreign_key_annotation_builder'
26
- autoload :RelatedFilesListBuilder, 'annotate_rb/model_annotator/related_files_list_builder'
27
- autoload :AnnotationDecider, 'annotate_rb/model_annotator/annotation_decider'
28
- autoload :FileAnnotatorInstruction, 'annotate_rb/model_annotator/file_annotator_instruction'
5
+ autoload :Annotator, "annotate_rb/model_annotator/annotator"
6
+ autoload :PatternGetter, "annotate_rb/model_annotator/pattern_getter"
7
+ autoload :BadModelFileError, "annotate_rb/model_annotator/bad_model_file_error"
8
+ autoload :FileNameResolver, "annotate_rb/model_annotator/file_name_resolver"
9
+ autoload :SingleFileAnnotationRemover, "annotate_rb/model_annotator/single_file_annotation_remover"
10
+ autoload :AnnotationPatternGenerator, "annotate_rb/model_annotator/annotation_pattern_generator"
11
+ autoload :ModelClassGetter, "annotate_rb/model_annotator/model_class_getter"
12
+ autoload :ModelFilesGetter, "annotate_rb/model_annotator/model_files_getter"
13
+ autoload :SingleFileAnnotator, "annotate_rb/model_annotator/single_file_annotator"
14
+ autoload :ModelWrapper, "annotate_rb/model_annotator/model_wrapper"
15
+ autoload :AnnotationBuilder, "annotate_rb/model_annotator/annotation_builder"
16
+ autoload :ColumnAnnotation, "annotate_rb/model_annotator/column_annotation"
17
+ autoload :IndexAnnotation, "annotate_rb/model_annotator/index_annotation"
18
+ autoload :ForeignKeyAnnotation, "annotate_rb/model_annotator/foreign_key_annotation"
19
+ autoload :RelatedFilesListBuilder, "annotate_rb/model_annotator/related_files_list_builder"
20
+ autoload :AnnotationDecider, "annotate_rb/model_annotator/annotation_decider"
21
+ autoload :SingleFileAnnotatorInstruction, "annotate_rb/model_annotator/single_file_annotator_instruction"
22
+ autoload :SingleFileRemoveAnnotationInstruction, "annotate_rb/model_annotator/single_file_remove_annotation_instruction"
23
+ autoload :AnnotationDiffGenerator, "annotate_rb/model_annotator/annotation_diff_generator"
24
+ autoload :AnnotationDiff, "annotate_rb/model_annotator/annotation_diff"
25
+ autoload :FileBuilder, "annotate_rb/model_annotator/file_builder"
26
+ autoload :MagicCommentParser, "annotate_rb/model_annotator/magic_comment_parser"
27
+ autoload :FileComponents, "annotate_rb/model_annotator/file_components"
28
+ autoload :ProjectAnnotator, "annotate_rb/model_annotator/project_annotator"
29
+ autoload :ProjectAnnotationRemover, "annotate_rb/model_annotator/project_annotation_remover"
29
30
  end
30
31
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'forwardable'
3
+ require "forwardable"
4
4
 
5
5
  module AnnotateRb
6
6
  # Used to hold all of the options when annotating models and routes.
@@ -16,12 +16,13 @@ module AnnotateRb
16
16
 
17
17
  POSITION_OPTIONS = {
18
18
  position: nil, # ModelAnnotator, RouteAnnotator
19
+ position_in_additional_file_patterns: nil, # ModelAnnotator
19
20
  position_in_class: nil, # ModelAnnotator
20
- position_in_factory: nil, # Unused
21
- position_in_fixture: nil, # Unused
21
+ position_in_factory: nil, # ModelAnnotator
22
+ position_in_fixture: nil, # ModelAnnotator
22
23
  position_in_routes: nil, # RouteAnnotator
23
- position_in_serializer: nil, # Unused
24
- position_in_test: nil, # Unused
24
+ position_in_serializer: nil, # ModelAnnotator
25
+ position_in_test: nil # ModelAnnotator
25
26
  }.freeze
26
27
 
27
28
  FLAG_OPTIONS = {
@@ -50,7 +51,7 @@ module AnnotateRb
50
51
  sort: false, # ModelAnnotator
51
52
  timestamp: false, # RouteAnnotator
52
53
  trace: false, # ModelAnnotator, but is part of Core
53
- with_comment: true, # ModelAnnotator
54
+ with_comment: true # ModelAnnotator
54
55
  }.freeze
55
56
 
56
57
  OTHER_OPTIONS = {
@@ -59,10 +60,10 @@ module AnnotateRb
59
60
  debug: false, # Core
60
61
 
61
62
  # ModelAnnotator
62
- hide_default_column_types: '',
63
+ hide_default_column_types: "",
63
64
 
64
65
  # ModelAnnotator
65
- hide_limit_column_types: '',
66
+ hide_limit_column_types: "",
66
67
 
67
68
  ignore_columns: nil, # ModelAnnotator
68
69
  ignore_routes: nil, # RouteAnnotator
@@ -73,26 +74,20 @@ module AnnotateRb
73
74
  target_action: :do_annotations, # Core; Possible values: :do_annotations, :remove_annotations
74
75
  wrapper: nil, # ModelAnnotator, RouteAnnotator
75
76
  wrapper_close: nil, # ModelAnnotator, RouteAnnotator
76
- wrapper_open: nil, # ModelAnnotator, RouteAnnotator
77
+ wrapper_open: nil # ModelAnnotator, RouteAnnotator
77
78
  }.freeze
78
79
 
79
80
  PATH_OPTIONS = {
80
81
  additional_file_patterns: [], # ModelAnnotator
81
- model_dir: ['app/models'], # ModelAnnotator
82
+ model_dir: ["app/models"], # ModelAnnotator
82
83
  require: [], # Core
83
- root_dir: [''], # Core; Old model Annotate code depends on it being empty when not provided another value
84
+ root_dir: [""] # Core; Old model Annotate code depends on it being empty when not provided another value
84
85
  # `root_dir` can also be a string but should get converted into an array with that string as the sole element when
85
86
  # that happens.
86
87
  }.freeze
87
88
 
88
89
  DEFAULT_OPTIONS = {}.merge(POSITION_OPTIONS, FLAG_OPTIONS, OTHER_OPTIONS, PATH_OPTIONS).freeze
89
90
 
90
- POSITION_OPTION_KEYS = [
91
- :position,
92
- :position_in_class,
93
- :position_in_routes,
94
- ].freeze
95
-
96
91
  FLAG_OPTION_KEYS = [
97
92
  :classified_sort,
98
93
  :exclude_controllers,
@@ -118,7 +113,7 @@ module AnnotateRb
118
113
  :sort,
119
114
  :timestamp,
120
115
  :trace,
121
- :with_comment,
116
+ :with_comment
122
117
  ].freeze
123
118
 
124
119
  OTHER_OPTION_KEYS = [
@@ -136,21 +131,21 @@ module AnnotateRb
136
131
  :target_action,
137
132
  :wrapper,
138
133
  :wrapper_close,
139
- :wrapper_open,
134
+ :wrapper_open
140
135
  ].freeze
141
136
 
142
137
  PATH_OPTION_KEYS = [
143
138
  :additional_file_patterns,
144
139
  :model_dir,
145
140
  :require,
146
- :root_dir,
141
+ :root_dir
147
142
  ].freeze
148
143
 
149
144
  ALL_OPTION_KEYS = [
150
- POSITION_OPTION_KEYS, FLAG_OPTION_KEYS, OTHER_OPTION_KEYS, PATH_OPTION_KEYS
145
+ POSITION_OPTIONS.keys, FLAG_OPTION_KEYS, OTHER_OPTION_KEYS, PATH_OPTION_KEYS
151
146
  ].flatten.freeze
152
147
 
153
- POSITION_DEFAULT = 'before'
148
+ POSITION_DEFAULT = "before"
154
149
 
155
150
  # Want this to be read only after initializing
156
151
  def_delegator :@options, :[]
@@ -175,8 +170,8 @@ module AnnotateRb
175
170
  # 1) Use the value if it's defined
176
171
  # 2) Use value from :position if it's defined
177
172
  # 3) Use default
178
- POSITION_OPTION_KEYS.each do |key|
179
- @options[key] = ModelAnnotator::Helper.fallback(
173
+ POSITION_OPTIONS.keys.each do |key|
174
+ @options[key] = Helper.fallback(
180
175
  @options[key], @options[:position], POSITION_DEFAULT
181
176
  )
182
177
  end
@@ -184,7 +179,7 @@ module AnnotateRb
184
179
  # Unpack path options if we're passed in a String
185
180
  PATH_OPTION_KEYS.each do |key|
186
181
  if @options[key].is_a?(String)
187
- @options[key] = @options[key].split(',').map(&:strip).reject(&:empty?)
182
+ @options[key] = @options[key].split(",").map(&:strip).reject(&:empty?)
188
183
  end
189
184
  end
190
185