annotate 3.1.0 → 3.1.1
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 +4 -4
- data/CHANGELOG.md +14 -0
- data/annotate.gemspec +1 -1
- data/lib/annotate/annotate_models.rb +2 -2
- data/lib/annotate/annotate_routes.rb +7 -66
- data/lib/annotate/annotate_routes/helpers.rb +69 -0
- data/lib/annotate/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14932a4a189792b68c9d85c63313d0d60322ca22fed18a7a4a00edd47348743a
|
4
|
+
data.tar.gz: 351b61b7b3eac94f1ce6d8a86e1630bbbf6c0920cacfe46319163a86bc189887
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a717f48aff793ea4566fca6919eb4fe85b1545fe93b0bece91c5a9507cbb87fe14aa35ac520e618e98f8db92fe11010a8fe8653802b25b83b24590467e5d64f1
|
7
|
+
data.tar.gz: d13aab072e5e3901788f4aff809e08f3d28ac24cf0eed4187b0e5c0f98008f3c95a7553b58c4f50705f2f42729e96a05a57631356715953bb7d29531e4365fbd
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
## 3.1.1
|
2
|
+
Changes
|
3
|
+
- Bump required ruby version to >= 2.4 [#772](https://github.com/ctran/annotate_models/pull/772)
|
4
|
+
- [Revert #677] Fix column default annotations [#768](https://github.com/ctran/annotate_models/pull/768)
|
5
|
+
|
6
|
+
Project Improvements
|
7
|
+
- Refactor by adding AnnotateRoutes::Helpers [#770](https://github.com/ctran/annotate_models/pull/770)
|
8
|
+
- Bump puma from 4.3.1 to 4.3.3 in /spec/integration/rails_6.0.2.1 [#771](https://github.com/ctran/annotate_models/pull/771)
|
9
|
+
- Bump puma from 3.12.2 to 4.3.3 in /spec/integration/rails_5.2.4.1 [#769](https://github.com/ctran/annotate_models/pull/769)
|
10
|
+
- Bump nokogiri from 1.10.7 to 1.10.8 in /spec/integration/rails_5.2.4.1 [#766](https://github.com/ctran/annotate_models/pull/766)
|
11
|
+
- Bump nokogiri from 1.10.7 to 1.10.8 in /spec/integration/rails_6.0.2.1 [#765](https://github.com/ctran/annotate_models/pull/765)
|
12
|
+
- Refactor test cases of AnnotateRoutes [#760](https://github.com/ctran/annotate_models/pull/760)
|
13
|
+
- Rename FactoryGirl -> FactoryBot comment [#759](https://github.com/ctran/annotate_models/pull/759)
|
14
|
+
|
1
15
|
## 3.1.0
|
2
16
|
Changes
|
3
17
|
- Fix new lines after comments for rubocop compatibility [#757](https://github.com/ctran/annotate_models/pull/757)
|
data/annotate.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.name = 'annotate'
|
8
8
|
s.version = Annotate.version
|
9
9
|
|
10
|
-
s.required_ruby_version = '>= 2.
|
10
|
+
s.required_ruby_version = '>= 2.4.0'
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
12
12
|
s.authors = ['Alex Chaffee', 'Cuong Tran', 'Marcos Piccinini', 'Turadg Aleahmad', 'Jon Frisby']
|
13
13
|
s.description = 'Annotates Rails/ActiveRecord Models, routes, fixtures, and others based on the database schema.'
|
@@ -38,7 +38,7 @@ module AnnotateModels
|
|
38
38
|
BLUEPRINTS_TEST_DIR = File.join('test', "blueprints")
|
39
39
|
BLUEPRINTS_SPEC_DIR = File.join('spec', "blueprints")
|
40
40
|
|
41
|
-
# Factory
|
41
|
+
# Factory Bot https://github.com/thoughtbot/factory_bot
|
42
42
|
FACTORY_BOT_TEST_DIR = File.join('test', "factories")
|
43
43
|
FACTORY_BOT_SPEC_DIR = File.join('spec', "factories")
|
44
44
|
|
@@ -213,7 +213,7 @@ module AnnotateModels
|
|
213
213
|
end
|
214
214
|
|
215
215
|
def schema_default(klass, column)
|
216
|
-
quote(klass.
|
216
|
+
quote(klass.column_defaults[column.name])
|
217
217
|
end
|
218
218
|
|
219
219
|
def retrieve_indexes_from_table(klass)
|
@@ -19,18 +19,19 @@
|
|
19
19
|
#
|
20
20
|
# Released under the same license as Ruby. No Support. No Warranty.
|
21
21
|
#
|
22
|
+
|
23
|
+
require_relative './annotate_routes/helpers'
|
24
|
+
|
22
25
|
module AnnotateRoutes
|
23
26
|
PREFIX = '== Route Map'.freeze
|
24
27
|
PREFIX_MD = '## Route Map'.freeze
|
25
28
|
HEADER_ROW = ['Prefix', 'Verb', 'URI Pattern', 'Controller#Action'].freeze
|
26
29
|
|
27
|
-
MAGIC_COMMENT_MATCHER = Regexp.new(/(^#\s*encoding:.*)|(^# coding:.*)|(^# -\*- coding:.*)|(^# -\*- encoding\s?:.*)|(^#\s*frozen_string_literal:.+)|(^# -\*- frozen_string_literal\s*:.+-\*-)/).freeze
|
28
|
-
|
29
30
|
class << self
|
30
31
|
def do_annotations(options = {})
|
31
32
|
if routes_file_exist?
|
32
33
|
existing_text = File.read(routes_file)
|
33
|
-
content, header_position = strip_annotations(existing_text)
|
34
|
+
content, header_position = Helpers.strip_annotations(existing_text)
|
34
35
|
new_content = annotate_routes(header(options), content, header_position, options)
|
35
36
|
new_text = new_content.join("\n")
|
36
37
|
|
@@ -47,7 +48,7 @@ module AnnotateRoutes
|
|
47
48
|
def remove_annotations(_options={})
|
48
49
|
if routes_file_exist?
|
49
50
|
existing_text = File.read(routes_file)
|
50
|
-
content, header_position = strip_annotations(existing_text)
|
51
|
+
content, header_position = Helpers.strip_annotations(existing_text)
|
51
52
|
new_content = strip_on_removal(content, header_position)
|
52
53
|
new_text = new_content.join("\n")
|
53
54
|
if rewrite_contents(existing_text, new_text)
|
@@ -73,7 +74,7 @@ module AnnotateRoutes
|
|
73
74
|
def header(options = {})
|
74
75
|
routes_map = app_routes_map(options)
|
75
76
|
|
76
|
-
magic_comments_map, routes_map = extract_magic_comments_from_array(routes_map)
|
77
|
+
magic_comments_map, routes_map = Helpers.extract_magic_comments_from_array(routes_map)
|
77
78
|
|
78
79
|
out = []
|
79
80
|
|
@@ -113,35 +114,6 @@ module AnnotateRoutes
|
|
113
114
|
end
|
114
115
|
end
|
115
116
|
|
116
|
-
# TODO: write the method doc using ruby rdoc formats
|
117
|
-
# This method returns an array of 'real_content' and 'header_position'.
|
118
|
-
# 'header_position' will either be :before, :after, or
|
119
|
-
# a number. If the number is > 0, the
|
120
|
-
# annotation was found somewhere in the
|
121
|
-
# middle of the file. If the number is
|
122
|
-
# zero, no annotation was found.
|
123
|
-
def strip_annotations(content)
|
124
|
-
real_content = []
|
125
|
-
mode = :content
|
126
|
-
header_position = 0
|
127
|
-
|
128
|
-
content.split(/\n/, -1).each_with_index do |line, line_number|
|
129
|
-
if mode == :header && line !~ /\s*#/
|
130
|
-
mode = :content
|
131
|
-
real_content << line unless line.blank?
|
132
|
-
elsif mode == :content
|
133
|
-
if line =~ /^\s*#\s*== Route.*$/
|
134
|
-
header_position = line_number + 1 # index start's at 0
|
135
|
-
mode = :header
|
136
|
-
else
|
137
|
-
real_content << line
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
real_content_and_header_position(real_content, header_position)
|
143
|
-
end
|
144
|
-
|
145
117
|
def strip_on_removal(content, header_position)
|
146
118
|
if header_position == :before
|
147
119
|
content.shift while content.first == ''
|
@@ -168,7 +140,7 @@ module AnnotateRoutes
|
|
168
140
|
end
|
169
141
|
|
170
142
|
def annotate_routes(header, content, header_position, options = {})
|
171
|
-
magic_comments_map, content = extract_magic_comments_from_array(content)
|
143
|
+
magic_comments_map, content = Helpers.extract_magic_comments_from_array(content)
|
172
144
|
if %w(before top).include?(options[:position_in_routes])
|
173
145
|
header = header << '' if content.first != ''
|
174
146
|
magic_comments_map << '' if magic_comments_map.any?
|
@@ -208,24 +180,6 @@ module AnnotateRoutes
|
|
208
180
|
routes_map
|
209
181
|
end
|
210
182
|
|
211
|
-
# @param [Array<String>] content
|
212
|
-
# @return [Array<String>] all found magic comments
|
213
|
-
# @return [Array<String>] content without magic comments
|
214
|
-
def extract_magic_comments_from_array(content_array)
|
215
|
-
magic_comments = []
|
216
|
-
new_content = []
|
217
|
-
|
218
|
-
content_array.each do |row|
|
219
|
-
if row =~ MAGIC_COMMENT_MATCHER
|
220
|
-
magic_comments << row.strip
|
221
|
-
else
|
222
|
-
new_content << row
|
223
|
-
end
|
224
|
-
end
|
225
|
-
|
226
|
-
[magic_comments, new_content]
|
227
|
-
end
|
228
|
-
|
229
183
|
def content(line, maxs, options = {})
|
230
184
|
return line.rstrip unless options[:format_markdown]
|
231
185
|
|
@@ -235,18 +189,5 @@ module AnnotateRoutes
|
|
235
189
|
sprintf("%-#{min_length}.#{min_length}s", elem.tr('|', '-'))
|
236
190
|
end.join(' | ')
|
237
191
|
end
|
238
|
-
|
239
|
-
def real_content_and_header_position(real_content, header_position)
|
240
|
-
# By default assume the annotation was found in the middle of the file
|
241
|
-
|
242
|
-
# ... unless we have evidence it was at the beginning ...
|
243
|
-
return real_content, :before if header_position == 1
|
244
|
-
|
245
|
-
# ... or that it was at the end.
|
246
|
-
return real_content, :after if header_position >= real_content.count
|
247
|
-
|
248
|
-
# and the default
|
249
|
-
return real_content, header_position
|
250
|
-
end
|
251
192
|
end
|
252
193
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module AnnotateRoutes
|
2
|
+
module Helpers
|
3
|
+
MAGIC_COMMENT_MATCHER = Regexp.new(/(^#\s*encoding:.*)|(^# coding:.*)|(^# -\*- coding:.*)|(^# -\*- encoding\s?:.*)|(^#\s*frozen_string_literal:.+)|(^# -\*- frozen_string_literal\s*:.+-\*-)/).freeze
|
4
|
+
|
5
|
+
class << self
|
6
|
+
# TODO: write the method doc using ruby rdoc formats
|
7
|
+
# This method returns an array of 'real_content' and 'header_position'.
|
8
|
+
# 'header_position' will either be :before, :after, or
|
9
|
+
# a number. If the number is > 0, the
|
10
|
+
# annotation was found somewhere in the
|
11
|
+
# middle of the file. If the number is
|
12
|
+
# zero, no annotation was found.
|
13
|
+
def strip_annotations(content)
|
14
|
+
real_content = []
|
15
|
+
mode = :content
|
16
|
+
header_position = 0
|
17
|
+
|
18
|
+
content.split(/\n/, -1).each_with_index do |line, line_number|
|
19
|
+
if mode == :header && line !~ /\s*#/
|
20
|
+
mode = :content
|
21
|
+
real_content << line unless line.blank?
|
22
|
+
elsif mode == :content
|
23
|
+
if line =~ /^\s*#\s*== Route.*$/
|
24
|
+
header_position = line_number + 1 # index start's at 0
|
25
|
+
mode = :header
|
26
|
+
else
|
27
|
+
real_content << line
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
real_content_and_header_position(real_content, header_position)
|
33
|
+
end
|
34
|
+
|
35
|
+
# @param [Array<String>] content
|
36
|
+
# @return [Array<String>] all found magic comments
|
37
|
+
# @return [Array<String>] content without magic comments
|
38
|
+
def extract_magic_comments_from_array(content_array)
|
39
|
+
magic_comments = []
|
40
|
+
new_content = []
|
41
|
+
|
42
|
+
content_array.each do |row|
|
43
|
+
if row =~ MAGIC_COMMENT_MATCHER
|
44
|
+
magic_comments << row.strip
|
45
|
+
else
|
46
|
+
new_content << row
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
[magic_comments, new_content]
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def real_content_and_header_position(real_content, header_position)
|
56
|
+
# By default assume the annotation was found in the middle of the file
|
57
|
+
|
58
|
+
# ... unless we have evidence it was at the beginning ...
|
59
|
+
return real_content, :before if header_position == 1
|
60
|
+
|
61
|
+
# ... or that it was at the end.
|
62
|
+
return real_content, :after if header_position >= real_content.count
|
63
|
+
|
64
|
+
# and the default
|
65
|
+
return real_content, header_position
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/annotate/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: annotate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Chaffee
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2020-
|
15
|
+
date: 2020-03-24 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rake
|
@@ -80,6 +80,7 @@ files:
|
|
80
80
|
- lib/annotate/active_record_patch.rb
|
81
81
|
- lib/annotate/annotate_models.rb
|
82
82
|
- lib/annotate/annotate_routes.rb
|
83
|
+
- lib/annotate/annotate_routes/helpers.rb
|
83
84
|
- lib/annotate/constants.rb
|
84
85
|
- lib/annotate/helpers.rb
|
85
86
|
- lib/annotate/parser.rb
|
@@ -105,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
105
106
|
requirements:
|
106
107
|
- - ">="
|
107
108
|
- !ruby/object:Gem::Version
|
108
|
-
version: 2.
|
109
|
+
version: 2.4.0
|
109
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
111
|
requirements:
|
111
112
|
- - ">="
|