unparser 0.4.7 → 0.4.8
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/.github/workflows/ci.yml +90 -0
- data/.rubocop.yml +122 -5
- data/Changelog.md +6 -0
- data/Gemfile.lock +35 -105
- data/README.md +1 -2
- data/lib/unparser.rb +21 -3
- data/lib/unparser/cli.rb +65 -45
- data/lib/unparser/{cli/color.rb → color.rb} +0 -10
- data/lib/unparser/diff.rb +115 -0
- data/lib/unparser/emitter.rb +2 -1
- data/lib/unparser/validation.rb +149 -0
- data/spec/integration/unparser/corpus_spec.rb +33 -19
- data/spec/integrations.yml +1 -1
- data/spec/spec_helper.rb +26 -4
- data/spec/unit/unparser/color_spec.rb +40 -0
- data/spec/unit/unparser/diff_spec.rb +189 -0
- data/spec/unit/unparser/validation_spec.rb +327 -0
- data/spec/unit/unparser_spec.rb +74 -3
- data/unparser.gemspec +11 -8
- metadata +78 -31
- data/.circleci/config.yml +0 -49
- data/config/rubocop.yml +0 -122
- data/lib/unparser/cli/differ.rb +0 -152
- data/lib/unparser/cli/source.rb +0 -267
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0dee214bf2371dbf22755d995f36fd96cd1a93b2a2bf846382525c8d41e61ecf
|
4
|
+
data.tar.gz: 6ed35f024038b383369479b1ff851a7a2cc207b248a2340f218e452b2dded583
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 534bc06ed25ef60d1a111fc301b75bb97632cb988498cd48914a6cd8bef7d13710f24674ee9166c05f2f01d53cc7e2dfd13289c27d0789ade5a45b32d4a4e9a2
|
7
|
+
data.tar.gz: f84a1c3efd6f6c2d77990ac57b266ca1e50b45dbd35202b294972cb9b094c6dfa4e7026986f0ab7ca0c82726f6deac77db9d7f5b6ba940f6203795649f9ee1eb
|
@@ -0,0 +1,90 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on: push
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
base:
|
7
|
+
name: Base steps
|
8
|
+
runs-on: ubuntu-latest
|
9
|
+
steps:
|
10
|
+
- uses: actions/checkout@v2
|
11
|
+
- name: Check Whitespace
|
12
|
+
run: git diff --check -- HEAD~1
|
13
|
+
ruby-unit-spec:
|
14
|
+
name: Unit Specs
|
15
|
+
runs-on: ${{ matrix.os }}
|
16
|
+
timeout-minutes: 5
|
17
|
+
strategy:
|
18
|
+
fail-fast: false
|
19
|
+
matrix:
|
20
|
+
ruby: ['2.6']
|
21
|
+
os: [ubuntu-latest]
|
22
|
+
steps:
|
23
|
+
- uses: actions/checkout@v2
|
24
|
+
- uses: actions/setup-ruby@v1
|
25
|
+
with:
|
26
|
+
ruby-version: ${{ matrix.ruby }}
|
27
|
+
- run: |
|
28
|
+
gem install bundler
|
29
|
+
bundle install
|
30
|
+
- run: bundle exec rspec spec/unit
|
31
|
+
ruby-integration-spec:
|
32
|
+
name: Integration Specs
|
33
|
+
runs-on: ${{ matrix.os }}
|
34
|
+
timeout-minutes: 5
|
35
|
+
strategy:
|
36
|
+
fail-fast: false
|
37
|
+
matrix:
|
38
|
+
ruby: ['2.6']
|
39
|
+
os: [ubuntu-latest]
|
40
|
+
steps:
|
41
|
+
- uses: actions/checkout@v2
|
42
|
+
- uses: actions/setup-ruby@v1
|
43
|
+
with:
|
44
|
+
ruby-version: ${{ matrix.ruby }}
|
45
|
+
- run: |
|
46
|
+
gem install bundler
|
47
|
+
bundle install
|
48
|
+
- run: bundle exec rspec spec/integration
|
49
|
+
ruby-mutant:
|
50
|
+
name: Mutation coverage
|
51
|
+
runs-on: ${{ matrix.os }}
|
52
|
+
timeout-minutes: 5
|
53
|
+
strategy:
|
54
|
+
fail-fast: false
|
55
|
+
matrix:
|
56
|
+
ruby: ['2.6']
|
57
|
+
os: [ubuntu-latest]
|
58
|
+
steps:
|
59
|
+
- uses: actions/checkout@v2
|
60
|
+
with:
|
61
|
+
fetch-depth: 0
|
62
|
+
- uses: actions/setup-ruby@v1
|
63
|
+
with:
|
64
|
+
ruby-version: ${{ matrix.ruby }}
|
65
|
+
- run: |
|
66
|
+
gem install bundler
|
67
|
+
bundle install
|
68
|
+
- run: |
|
69
|
+
bundle exec mutant \
|
70
|
+
--since HEAD~1 \
|
71
|
+
--zombie \
|
72
|
+
--ignore-subject 'Unparser::CLI*' \
|
73
|
+
--ignore-subject 'Unparser::Validation.from_string' \
|
74
|
+
-- 'Unparser*'
|
75
|
+
ruby-rubocop:
|
76
|
+
name: Rubocop
|
77
|
+
runs-on: ${{ matrix.os }}
|
78
|
+
timeout-minutes: 5
|
79
|
+
strategy:
|
80
|
+
fail-fast: false
|
81
|
+
matrix:
|
82
|
+
ruby: ['2.6']
|
83
|
+
os: [ubuntu-latest]
|
84
|
+
steps:
|
85
|
+
- uses: actions/checkout@v2
|
86
|
+
- uses: actions/setup-ruby@v1
|
87
|
+
with:
|
88
|
+
ruby-version: ${{ matrix.ruby }}
|
89
|
+
- run: bundle install
|
90
|
+
- run: bundle exec rubocop
|
data/.rubocop.yml
CHANGED
@@ -1,9 +1,126 @@
|
|
1
1
|
AllCops:
|
2
2
|
Include:
|
3
|
+
- 'lib/unparser.rb'
|
4
|
+
- 'lib/unparser/**/*.rb'
|
5
|
+
- '**/*.rake'
|
3
6
|
- 'Gemfile'
|
7
|
+
- 'Gemfile.triage'
|
8
|
+
|
9
|
+
# Avoid parameter lists longer than five parameters.
|
10
|
+
ParameterLists:
|
11
|
+
Max: 3
|
12
|
+
CountKeywordArgs: true
|
13
|
+
|
14
|
+
MethodLength:
|
15
|
+
CountComments: false
|
16
|
+
Max: 17
|
17
|
+
|
18
|
+
AbcSize:
|
19
|
+
Max: 18
|
20
|
+
|
21
|
+
# Avoid more than `Max` levels of nesting.
|
22
|
+
BlockNesting:
|
23
|
+
Max: 3
|
24
|
+
|
25
|
+
# Align with the style guide.
|
26
|
+
CollectionMethods:
|
27
|
+
PreferredMethods:
|
28
|
+
collect: 'map'
|
29
|
+
inject: 'reduce'
|
30
|
+
find: 'detect'
|
31
|
+
find_all: 'select'
|
32
|
+
|
33
|
+
# Limit line length
|
34
|
+
LineLength:
|
35
|
+
Max: 113 # TODO: lower to 79 once the rubocop branch in shared/Gemfile is removed
|
36
|
+
|
37
|
+
ClassLength:
|
38
|
+
Max: 204
|
39
|
+
|
40
|
+
# Prefer modifiers and explicit if statements over returning early for small methods
|
41
|
+
GuardClause:
|
42
|
+
Enabled: false
|
43
|
+
|
44
|
+
Metrics/BlockLength:
|
4
45
|
Exclude:
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
46
|
+
# Ignore RSpec DSL
|
47
|
+
- spec/**/*
|
48
|
+
|
49
|
+
# Flags freezes for singletons that could still be mutated like Regexps
|
50
|
+
RedundantFreeze:
|
51
|
+
Enabled: false
|
52
|
+
|
53
|
+
# Allow Fixnum and Bignum. This Gem supports versions before 2.4
|
54
|
+
UnifiedInteger:
|
55
|
+
Enabled: false
|
56
|
+
|
57
|
+
# Disabled because of indenting with private keyword in class bodies.
|
58
|
+
IndentationWidth:
|
59
|
+
Enabled: false
|
60
|
+
|
61
|
+
# I like raise more
|
62
|
+
SignalException:
|
63
|
+
Enabled: false
|
64
|
+
|
65
|
+
# False positive in unparser source
|
66
|
+
OneLineConditional:
|
67
|
+
Enabled: false
|
68
|
+
|
69
|
+
Documentation:
|
70
|
+
Enabled: false
|
71
|
+
|
72
|
+
# Disable documentation checking until a class needs to be documented once
|
73
|
+
Documentation:
|
74
|
+
Enabled: false
|
75
|
+
|
76
|
+
# Do not favor modifier if/unless usage when you have a single-line body
|
77
|
+
IfUnlessModifier:
|
78
|
+
Enabled: false
|
79
|
+
|
80
|
+
# Allow case equality operator (in limited use within the specs)
|
81
|
+
CaseEquality:
|
82
|
+
Enabled: false
|
83
|
+
|
84
|
+
# Constants do not always have to use SCREAMING_SNAKE_CASE
|
85
|
+
ConstantName:
|
86
|
+
Enabled: false
|
87
|
+
|
88
|
+
# Not all trivial readers/writers can be defined with attr_* methods
|
89
|
+
TrivialAccessors:
|
90
|
+
Enabled: false
|
91
|
+
|
92
|
+
# I like to have an empty line before closing the currently opened body
|
93
|
+
EmptyLinesAroundBlockBody:
|
94
|
+
Enabled: false
|
95
|
+
|
96
|
+
EmptyLinesAroundClassBody:
|
97
|
+
Enabled: false
|
98
|
+
|
99
|
+
EmptyLinesAroundModuleBody:
|
100
|
+
Enabled: false
|
101
|
+
|
102
|
+
# I like my style more
|
103
|
+
AccessModifierIndentation:
|
104
|
+
Enabled: false
|
105
|
+
|
106
|
+
Style/CommentedKeyword:
|
107
|
+
Enabled: false
|
108
|
+
|
109
|
+
Style/MixinGrouping:
|
110
|
+
Enabled: false
|
111
|
+
|
112
|
+
Lint/BooleanSymbol:
|
113
|
+
Enabled: false
|
114
|
+
|
115
|
+
Style/AccessModifierDeclarations:
|
116
|
+
Enabled: false
|
117
|
+
|
118
|
+
Layout/HashAlignment:
|
119
|
+
EnforcedColonStyle: table
|
120
|
+
EnforcedHashRocketStyle: table
|
121
|
+
|
122
|
+
Naming/RescuedExceptionsVariableName:
|
123
|
+
Enabled: false
|
124
|
+
|
125
|
+
Layout/MultilineMethodCallIndentation:
|
126
|
+
Enabled: false
|
data/Changelog.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
# v0.4.8 2020-05-25
|
2
|
+
|
3
|
+
* Change to specific node type when unparser fails on an unknown node type: [#150](https://github.com/mbj/unparser/pull/150)
|
4
|
+
* Significantly improve verifier (only useful for debugging)
|
5
|
+
* Add `Unparser::Color` module for colorized source diffs
|
6
|
+
|
1
7
|
# v0.4.7 2020-01-03
|
2
8
|
|
3
9
|
* Add support for endless ranges
|
data/Gemfile.lock
CHANGED
@@ -4,9 +4,11 @@ PATH
|
|
4
4
|
unparser (0.4.7)
|
5
5
|
abstract_type (~> 0.0.7)
|
6
6
|
adamantium (~> 0.2.0)
|
7
|
+
anima (~> 0.3.1)
|
7
8
|
concord (~> 0.1.5)
|
8
9
|
diff-lcs (~> 1.3)
|
9
10
|
equalizer (~> 0.0.9)
|
11
|
+
mprelude (~> 0.1.0)
|
10
12
|
parser (>= 2.6.5)
|
11
13
|
procto (~> 0.0.2)
|
12
14
|
|
@@ -22,65 +24,16 @@ GEM
|
|
22
24
|
abstract_type (~> 0.0.7)
|
23
25
|
adamantium (~> 0.2)
|
24
26
|
equalizer (~> 0.0.11)
|
25
|
-
ast (2.4.
|
26
|
-
axiom-types (0.1.1)
|
27
|
-
descendants_tracker (~> 0.0.4)
|
28
|
-
ice_nine (~> 0.11.0)
|
29
|
-
thread_safe (~> 0.3, >= 0.3.1)
|
30
|
-
codeclimate-engine-rb (0.4.1)
|
31
|
-
virtus (~> 1.0)
|
32
|
-
coercible (1.0.0)
|
33
|
-
descendants_tracker (~> 0.0.1)
|
27
|
+
ast (2.4.1)
|
34
28
|
concord (0.1.5)
|
35
29
|
adamantium (~> 0.2.0)
|
36
30
|
equalizer (~> 0.0.9)
|
37
|
-
descendants_tracker (0.0.4)
|
38
|
-
thread_safe (~> 0.3, >= 0.3.1)
|
39
|
-
devtools (0.1.24)
|
40
|
-
abstract_type (~> 0.0.7)
|
41
|
-
adamantium (~> 0.2.0)
|
42
|
-
anima (~> 0.3.0)
|
43
|
-
concord (~> 0.1.5)
|
44
|
-
flay (~> 2.12.0)
|
45
|
-
flog (~> 4.6.2)
|
46
|
-
procto (~> 0.0.3)
|
47
|
-
rake (~> 12.3.0)
|
48
|
-
reek (~> 5.3.0)
|
49
|
-
rspec (~> 3.8.0)
|
50
|
-
rspec-core (~> 3.8.0)
|
51
|
-
rspec-its (~> 1.2.0)
|
52
|
-
rubocop (~> 0.61.1)
|
53
|
-
simplecov (~> 0.16.1)
|
54
|
-
yard (~> 0.9.16)
|
55
|
-
yardstick (~> 0.9.9)
|
56
31
|
diff-lcs (1.3)
|
57
|
-
docile (1.3.2)
|
58
32
|
equalizer (0.0.11)
|
59
|
-
erubis (2.7.0)
|
60
|
-
flay (2.12.1)
|
61
|
-
erubis (~> 2.7.0)
|
62
|
-
path_expander (~> 1.0)
|
63
|
-
ruby_parser (~> 3.0)
|
64
|
-
sexp_processor (~> 4.0)
|
65
|
-
flog (4.6.4)
|
66
|
-
path_expander (~> 1.0)
|
67
|
-
ruby_parser (~> 3.1, > 3.1.0)
|
68
|
-
sexp_processor (~> 4.8)
|
69
33
|
ice_nine (0.11.2)
|
70
34
|
jaro_winkler (1.5.4)
|
71
|
-
json (2.3.0)
|
72
|
-
kwalify (0.7.2)
|
73
35
|
memoizable (0.4.2)
|
74
36
|
thread_safe (~> 0.3, >= 0.3.1)
|
75
|
-
morpher (0.2.6)
|
76
|
-
abstract_type (~> 0.0.7)
|
77
|
-
adamantium (~> 0.2.0)
|
78
|
-
anima (~> 0.3.0)
|
79
|
-
ast (~> 2.2)
|
80
|
-
concord (~> 0.1.5)
|
81
|
-
equalizer (~> 0.0.9)
|
82
|
-
ice_nine (~> 0.11.0)
|
83
|
-
procto (~> 0.0.2)
|
84
37
|
mprelude (0.1.0)
|
85
38
|
abstract_type (~> 0.0.7)
|
86
39
|
adamantium (~> 0.2.0)
|
@@ -88,93 +41,70 @@ GEM
|
|
88
41
|
equalizer (~> 0.0.9)
|
89
42
|
ice_nine (~> 0.11.1)
|
90
43
|
procto (~> 0.0.2)
|
91
|
-
mutant (0.9.
|
44
|
+
mutant (0.9.9)
|
92
45
|
abstract_type (~> 0.0.7)
|
93
46
|
adamantium (~> 0.2.0)
|
94
47
|
anima (~> 0.3.1)
|
95
48
|
ast (~> 2.2)
|
96
49
|
concord (~> 0.1.5)
|
97
|
-
diff-lcs (
|
50
|
+
diff-lcs (= 1.3)
|
98
51
|
equalizer (~> 0.0.9)
|
99
52
|
ice_nine (~> 0.11.1)
|
100
53
|
memoizable (~> 0.4.2)
|
101
54
|
mprelude (~> 0.1.0)
|
102
|
-
parser (~> 2.
|
55
|
+
parser (~> 2.7.1)
|
103
56
|
procto (~> 0.0.2)
|
104
57
|
unparser (~> 0.4.6)
|
58
|
+
variable (~> 0.0.1)
|
105
59
|
mutant-license (0.1.0)
|
106
|
-
mutant-rspec (0.9.
|
107
|
-
mutant (~> 0.9.
|
60
|
+
mutant-rspec (0.9.9)
|
61
|
+
mutant (~> 0.9.9)
|
108
62
|
rspec-core (>= 3.8.0, < 4.0.0)
|
109
|
-
parallel (1.19.
|
110
|
-
parser (2.
|
111
|
-
ast (~> 2.4.
|
112
|
-
path_expander (1.1.0)
|
113
|
-
powerpack (0.1.2)
|
63
|
+
parallel (1.19.2)
|
64
|
+
parser (2.7.1.4)
|
65
|
+
ast (~> 2.4.1)
|
114
66
|
procto (0.0.3)
|
115
|
-
psych (3.1.0)
|
116
67
|
rainbow (3.0.0)
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
rspec (3.8.0)
|
125
|
-
rspec-core (~> 3.8.0)
|
126
|
-
rspec-expectations (~> 3.8.0)
|
127
|
-
rspec-mocks (~> 3.8.0)
|
128
|
-
rspec-core (3.8.2)
|
129
|
-
rspec-support (~> 3.8.0)
|
130
|
-
rspec-expectations (3.8.6)
|
68
|
+
rspec (3.9.0)
|
69
|
+
rspec-core (~> 3.9.0)
|
70
|
+
rspec-expectations (~> 3.9.0)
|
71
|
+
rspec-mocks (~> 3.9.0)
|
72
|
+
rspec-core (3.9.2)
|
73
|
+
rspec-support (~> 3.9.3)
|
74
|
+
rspec-expectations (3.9.2)
|
131
75
|
diff-lcs (>= 1.2.0, < 2.0)
|
132
|
-
rspec-support (~> 3.
|
76
|
+
rspec-support (~> 3.9.0)
|
133
77
|
rspec-its (1.2.0)
|
134
78
|
rspec-core (>= 3.0.0)
|
135
79
|
rspec-expectations (>= 3.0.0)
|
136
|
-
rspec-mocks (3.
|
80
|
+
rspec-mocks (3.9.1)
|
137
81
|
diff-lcs (>= 1.2.0, < 2.0)
|
138
|
-
rspec-support (~> 3.
|
139
|
-
rspec-support (3.
|
140
|
-
rubocop (0.
|
82
|
+
rspec-support (~> 3.9.0)
|
83
|
+
rspec-support (3.9.3)
|
84
|
+
rubocop (0.79.0)
|
141
85
|
jaro_winkler (~> 1.5.1)
|
142
86
|
parallel (~> 1.10)
|
143
|
-
parser (>= 2.
|
144
|
-
powerpack (~> 0.1)
|
87
|
+
parser (>= 2.7.0.1)
|
145
88
|
rainbow (>= 2.2.2, < 4.0)
|
146
89
|
ruby-progressbar (~> 1.7)
|
147
|
-
unicode-display_width (
|
90
|
+
unicode-display_width (>= 1.4.0, < 1.7)
|
148
91
|
ruby-progressbar (1.10.1)
|
149
|
-
ruby_parser (3.14.1)
|
150
|
-
sexp_processor (~> 4.9)
|
151
|
-
sexp_processor (4.13.0)
|
152
|
-
simplecov (0.16.1)
|
153
|
-
docile (~> 1.1)
|
154
|
-
json (>= 1.8, < 3)
|
155
|
-
simplecov-html (~> 0.10.0)
|
156
|
-
simplecov-html (0.10.2)
|
157
92
|
thread_safe (0.3.6)
|
158
|
-
unicode-display_width (1.
|
159
|
-
|
160
|
-
|
161
|
-
coercible (~> 1.0)
|
162
|
-
descendants_tracker (~> 0.0, >= 0.0.3)
|
163
|
-
equalizer (~> 0.0, >= 0.0.9)
|
164
|
-
yard (0.9.22)
|
165
|
-
yardstick (0.9.9)
|
166
|
-
yard (~> 0.8, >= 0.8.7.2)
|
93
|
+
unicode-display_width (1.6.1)
|
94
|
+
variable (0.0.1)
|
95
|
+
equalizer (~> 0.0.11)
|
167
96
|
|
168
97
|
PLATFORMS
|
169
98
|
ruby
|
170
99
|
|
171
100
|
DEPENDENCIES
|
172
|
-
|
173
|
-
devtools (~> 0.1.23)
|
174
|
-
morpher (~> 0.2.6)
|
175
|
-
mutant (~> 0.9.4)
|
101
|
+
mutant (~> 0.9.9)
|
176
102
|
mutant-license!
|
177
|
-
mutant-rspec (~> 0.9.
|
103
|
+
mutant-rspec (~> 0.9.9)
|
104
|
+
rspec (~> 3.9)
|
105
|
+
rspec-core (~> 3.9)
|
106
|
+
rspec-its (~> 1.2.0)
|
107
|
+
rubocop (~> 0.79.0)
|
178
108
|
unparser!
|
179
109
|
|
180
110
|
BUNDLED WITH
|