Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
annotate
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open-source
annotate
Commits
056fd421
Commit
056fd421
authored
Dec 20, 2015
by
Cuong Tran
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #302 from b264/2_3_ruby__support
Ruby 2.3 magic comments support
parents
b2b1706f
40060e3e
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
23 additions
and
12 deletions
+23
-12
annotate_models.rb
lib/annotate/annotate_models.rb
+5
-5
annotate_models_spec.rb
spec/annotate/annotate_models_spec.rb
+18
-7
No files found.
lib/annotate/annotate_models.rb
View file @
056fd421
...
@@ -330,8 +330,8 @@ module AnnotateModels
...
@@ -330,8 +330,8 @@ module AnnotateModels
old_columns
=
old_header
&&
old_header
.
scan
(
column_pattern
).
sort
old_columns
=
old_header
&&
old_header
.
scan
(
column_pattern
).
sort
new_columns
=
new_header
&&
new_header
.
scan
(
column_pattern
).
sort
new_columns
=
new_header
&&
new_header
.
scan
(
column_pattern
).
sort
encoding
=
Regexp
.
new
(
/(^#\s*encoding:.*\n)|(^# coding:.*\n)|(^# -\*- coding:.*\n)|(^# -\*- encoding\s?:.*
\n)/
)
magic_comment_matcher
=
Regexp
.
new
(
/(^#\s*encoding:.*\n)|(^# coding:.*\n)|(^# -\*- coding:.*\n)|(^# -\*- encoding\s?:.*\n)|(^#\s*frozen_string_literal:.+\n)|(^# -\*- frozen_string_literal\s*:.+-\*-
\n)/
)
encoding_header
=
old_content
.
match
(
encoding
).
to_s
magic_comments
=
old_content
.
scan
(
magic_comment_matcher
).
flatten
.
compact
if
old_columns
==
new_columns
&&
!
options
[
:force
]
if
old_columns
==
new_columns
&&
!
options
[
:force
]
return
false
return
false
...
@@ -349,12 +349,12 @@ module AnnotateModels
...
@@ -349,12 +349,12 @@ module AnnotateModels
# if there *was* no old schema info (no substitution happened) or :force was passed,
# if there *was* no old schema info (no substitution happened) or :force was passed,
# we simply need to insert it in correct position
# we simply need to insert it in correct position
if
new_content
==
old_content
||
options
[
:force
]
if
new_content
==
old_content
||
options
[
:force
]
old_content
.
sub!
(
encoding
,
''
)
old_content
.
sub!
(
magic_comment_matcher
,
''
)
old_content
.
sub!
(
PATTERN
,
''
)
old_content
.
sub!
(
PATTERN
,
''
)
new_content
=
%w(after bottom)
.
include?
(
options
[
position
].
to_s
)
?
new_content
=
%w(after bottom)
.
include?
(
options
[
position
].
to_s
)
?
(
encoding_header
+
(
old_content
.
rstrip
+
"
\n\n
"
+
wrapped_info_block
))
:
(
magic_comments
.
join
+
(
old_content
.
rstrip
+
"
\n\n
"
+
wrapped_info_block
))
:
(
encoding_header
+
wrapped_info_block
+
"
\n
"
+
old_content
)
(
magic_comments
.
join
+
wrapped_info_block
+
"
\n
"
+
old_content
)
end
end
File
.
open
(
file_name
,
"wb"
)
{
|
f
|
f
.
puts
new_content
}
File
.
open
(
file_name
,
"wb"
)
{
|
f
|
f
.
puts
new_content
}
...
...
spec/annotate/annotate_models_spec.rb
View file @
056fd421
...
@@ -502,14 +502,20 @@ end
...
@@ -502,14 +502,20 @@ end
Annotate
::
PATH_OPTIONS
.
each
{
|
key
|
ENV
[
key
.
to_s
]
=
''
}
Annotate
::
PATH_OPTIONS
.
each
{
|
key
|
ENV
[
key
.
to_s
]
=
''
}
end
end
def
encoding
_comments_list_each
def
magic
_comments_list_each
[
[
'# encoding: UTF-8'
,
'# encoding: UTF-8'
,
'# coding: UTF-8'
,
'# coding: UTF-8'
,
'# -*- coding: UTF-8 -*-'
,
'# -*- coding: UTF-8 -*-'
,
'#encoding: utf-8'
,
'#encoding: utf-8'
,
'# -*- encoding : utf-8 -*-'
'# encoding: utf-8'
,
].
each
{
|
encoding_comment
|
yield
encoding_comment
}
'# -*- encoding : utf-8 -*-'
,
"# encoding: utf-8
\n
# frozen_string_literal: true"
,
"# frozen_string_literal: true
\n
# encoding: utf-8"
,
'# frozen_string_literal: true'
,
'#frozen_string_literal: false'
,
'# -*- frozen_string_literal : true -*-'
,
].
each
{
|
magic_comment
|
yield
magic_comment
}
end
end
it
"should put annotation before class if :position == 'before'"
do
it
"should put annotation before class if :position == 'before'"
do
...
@@ -626,17 +632,22 @@ end
...
@@ -626,17 +632,22 @@ end
expect
(
File
.
read
(
model_file_name
)).
to
eq
(
"
#{
schema_info
}
\n
#{
file_content
}
"
)
expect
(
File
.
read
(
model_file_name
)).
to
eq
(
"
#{
schema_info
}
\n
#{
file_content
}
"
)
end
end
it
"should not touch
encoding
comments"
do
it
"should not touch
magic
comments"
do
encoding_comments_list_each
do
|
encoding
_comment
|
magic_comments_list_each
do
|
magic
_comment
|
write_model
"user.rb"
,
<<-
EOS
write_model
"user.rb"
,
<<-
EOS
#{
encoding
_comment
}
#{
magic
_comment
}
class User < ActiveRecord::Base
class User < ActiveRecord::Base
end
end
EOS
EOS
annotate_one_file
:position
=>
:before
annotate_one_file
:position
=>
:before
expect
(
File
.
open
(
@model_file_name
,
&
:readline
)).
to
eq
(
"
#{
encoding_comment
}
\n
"
)
lines
=
magic_comment
.
split
(
"
\n
"
)
File
.
open
@model_file_name
do
|
file
|
lines
.
count
.
times
do
|
index
|
expect
(
file
.
readline
).
to
eq
"
#{
lines
[
index
]
}
\n
"
end
end
end
end
end
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment