annotate 3.1.0 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
- - ">="
|