unparser 0.4.7 → 0.5.2

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.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -2
  3. data/bin/unparser +1 -1
  4. data/lib/unparser.rb +134 -62
  5. data/lib/unparser/ast.rb +0 -1
  6. data/lib/unparser/ast/local_variable_scope.rb +6 -76
  7. data/lib/unparser/buffer.rb +19 -16
  8. data/lib/unparser/cli.rb +84 -77
  9. data/lib/unparser/{cli/color.rb → color.rb} +0 -13
  10. data/lib/unparser/comments.rb +0 -26
  11. data/lib/unparser/constants.rb +4 -53
  12. data/lib/unparser/diff.rb +98 -0
  13. data/lib/unparser/dsl.rb +0 -32
  14. data/lib/unparser/emitter.rb +24 -425
  15. data/lib/unparser/emitter/alias.rb +2 -8
  16. data/lib/unparser/emitter/args.rb +45 -0
  17. data/lib/unparser/emitter/argument.rb +8 -166
  18. data/lib/unparser/emitter/array.rb +27 -0
  19. data/lib/unparser/emitter/array_pattern.rb +29 -0
  20. data/lib/unparser/emitter/assignment.rb +36 -127
  21. data/lib/unparser/emitter/begin.rb +9 -84
  22. data/lib/unparser/emitter/binary.rb +7 -20
  23. data/lib/unparser/emitter/block.rb +57 -41
  24. data/lib/unparser/emitter/case.rb +6 -48
  25. data/lib/unparser/emitter/case_guard.rb +27 -0
  26. data/lib/unparser/emitter/case_match.rb +40 -0
  27. data/lib/unparser/emitter/cbase.rb +1 -3
  28. data/lib/unparser/emitter/class.rb +6 -26
  29. data/lib/unparser/emitter/const_pattern.rb +24 -0
  30. data/lib/unparser/emitter/def.rb +7 -51
  31. data/lib/unparser/emitter/defined.rb +2 -12
  32. data/lib/unparser/emitter/dstr.rb +22 -0
  33. data/lib/unparser/emitter/dsym.rb +41 -0
  34. data/lib/unparser/emitter/flipflop.rb +11 -10
  35. data/lib/unparser/emitter/float.rb +29 -0
  36. data/lib/unparser/emitter/flow_modifier.rb +8 -55
  37. data/lib/unparser/emitter/for.rb +5 -19
  38. data/lib/unparser/emitter/hash.rb +74 -0
  39. data/lib/unparser/emitter/hash_pattern.rb +67 -0
  40. data/lib/unparser/emitter/hookexe.rb +5 -11
  41. data/lib/unparser/emitter/if.rb +9 -73
  42. data/lib/unparser/emitter/in_match.rb +21 -0
  43. data/lib/unparser/emitter/in_pattern.rb +34 -0
  44. data/lib/unparser/emitter/index.rb +21 -88
  45. data/lib/unparser/emitter/kwbegin.rb +31 -0
  46. data/lib/unparser/emitter/lambda.rb +0 -8
  47. data/lib/unparser/emitter/masgn.rb +20 -0
  48. data/lib/unparser/emitter/match.rb +3 -17
  49. data/lib/unparser/emitter/match_alt.rb +23 -0
  50. data/lib/unparser/emitter/match_as.rb +21 -0
  51. data/lib/unparser/emitter/match_rest.rb +26 -0
  52. data/lib/unparser/emitter/match_var.rb +19 -0
  53. data/lib/unparser/emitter/mlhs.rb +40 -0
  54. data/lib/unparser/emitter/module.rb +3 -9
  55. data/lib/unparser/emitter/op_assign.rb +12 -27
  56. data/lib/unparser/emitter/pin.rb +19 -0
  57. data/lib/unparser/emitter/primitive.rb +93 -0
  58. data/lib/unparser/emitter/range.rb +35 -0
  59. data/lib/unparser/emitter/regexp.rb +35 -0
  60. data/lib/unparser/emitter/repetition.rb +17 -57
  61. data/lib/unparser/emitter/rescue.rb +1 -97
  62. data/lib/unparser/emitter/root.rb +17 -1
  63. data/lib/unparser/emitter/send.rb +10 -219
  64. data/lib/unparser/emitter/simple.rb +33 -0
  65. data/lib/unparser/emitter/splat.rb +2 -18
  66. data/lib/unparser/emitter/super.rb +1 -29
  67. data/lib/unparser/emitter/undef.rb +1 -9
  68. data/lib/unparser/emitter/variable.rb +1 -31
  69. data/lib/unparser/emitter/xstr.rb +72 -0
  70. data/lib/unparser/emitter/yield.rb +1 -9
  71. data/lib/unparser/generation.rb +250 -0
  72. data/lib/unparser/node_details.rb +21 -0
  73. data/lib/unparser/node_details/send.rb +62 -0
  74. data/lib/unparser/node_helpers.rb +45 -6
  75. data/lib/unparser/validation.rb +172 -0
  76. data/lib/unparser/writer.rb +15 -0
  77. data/lib/unparser/writer/binary.rb +99 -0
  78. data/lib/unparser/writer/dynamic_string.rb +233 -0
  79. data/lib/unparser/writer/resbody.rb +40 -0
  80. data/lib/unparser/writer/rescue.rb +39 -0
  81. data/lib/unparser/writer/send.rb +124 -0
  82. data/lib/unparser/{emitter → writer}/send/attribute_assignment.rb +11 -26
  83. data/lib/unparser/writer/send/binary.rb +27 -0
  84. data/lib/unparser/writer/send/conditional.rb +25 -0
  85. data/lib/unparser/writer/send/regular.rb +33 -0
  86. data/lib/unparser/{emitter → writer}/send/unary.rb +10 -17
  87. metadata +127 -104
  88. data/.circleci/config.yml +0 -49
  89. data/.gitignore +0 -37
  90. data/.rspec +0 -4
  91. data/.rubocop.yml +0 -9
  92. data/Changelog.md +0 -156
  93. data/Gemfile +0 -9
  94. data/Gemfile.lock +0 -181
  95. data/LICENSE +0 -20
  96. data/Rakefile +0 -22
  97. data/config/devtools.yml +0 -2
  98. data/config/flay.yml +0 -3
  99. data/config/flog.yml +0 -2
  100. data/config/mutant.yml +0 -6
  101. data/config/reek.yml +0 -98
  102. data/config/rubocop.yml +0 -122
  103. data/config/yardstick.yml +0 -2
  104. data/lib/unparser/cli/differ.rb +0 -152
  105. data/lib/unparser/cli/source.rb +0 -267
  106. data/lib/unparser/emitter/empty.rb +0 -23
  107. data/lib/unparser/emitter/ensure.rb +0 -37
  108. data/lib/unparser/emitter/literal.rb +0 -10
  109. data/lib/unparser/emitter/literal/array.rb +0 -29
  110. data/lib/unparser/emitter/literal/dynamic.rb +0 -53
  111. data/lib/unparser/emitter/literal/dynamic_body.rb +0 -132
  112. data/lib/unparser/emitter/literal/execute_string.rb +0 -38
  113. data/lib/unparser/emitter/literal/hash.rb +0 -156
  114. data/lib/unparser/emitter/literal/primitive.rb +0 -145
  115. data/lib/unparser/emitter/literal/range.rb +0 -36
  116. data/lib/unparser/emitter/literal/regexp.rb +0 -114
  117. data/lib/unparser/emitter/literal/singleton.rb +0 -26
  118. data/lib/unparser/emitter/meta.rb +0 -16
  119. data/lib/unparser/emitter/redo.rb +0 -25
  120. data/lib/unparser/emitter/resbody.rb +0 -76
  121. data/lib/unparser/emitter/retry.rb +0 -25
  122. data/lib/unparser/emitter/send/binary.rb +0 -57
  123. data/lib/unparser/emitter/send/conditional.rb +0 -40
  124. data/lib/unparser/emitter/send/regular.rb +0 -40
  125. data/lib/unparser/preprocessor.rb +0 -159
  126. data/spec/integration/unparser/corpus_spec.rb +0 -111
  127. data/spec/integrations.yml +0 -92
  128. data/spec/spec_helper.rb +0 -20
  129. data/spec/unit/unparser/buffer/append_spec.rb +0 -24
  130. data/spec/unit/unparser/buffer/append_without_prefix_spec.rb +0 -23
  131. data/spec/unit/unparser/buffer/capture_content_spec.rb +0 -17
  132. data/spec/unit/unparser/buffer/content_spec.rb +0 -38
  133. data/spec/unit/unparser/buffer/fresh_line_spec.rb +0 -20
  134. data/spec/unit/unparser/buffer/indent_spec.rb +0 -20
  135. data/spec/unit/unparser/buffer/nl_spec.rb +0 -16
  136. data/spec/unit/unparser/buffer/unindent_spec.rb +0 -20
  137. data/spec/unit/unparser/comments/consume_spec.rb +0 -22
  138. data/spec/unit/unparser/comments/take_all_spec.rb +0 -19
  139. data/spec/unit/unparser/comments/take_before_spec.rb +0 -46
  140. data/spec/unit/unparser/comments/take_eol_comments_spec.rb +0 -32
  141. data/spec/unit/unparser/emitter/class_methods/handle_spec.rb +0 -17
  142. data/spec/unit/unparser_spec.rb +0 -1849
  143. data/unparser.gemspec +0 -32
@@ -1,49 +0,0 @@
1
- defaults: &defaults
2
- working_directory: ~/unparser
3
- docker:
4
- - image: circleci/ruby:2.6.5
5
- version: 2
6
- jobs:
7
- unit_specs:
8
- <<: *defaults
9
- steps:
10
- - checkout
11
- - run: bundle install
12
- - run: bundle exec rspec spec/unit
13
- integration_specs:
14
- <<: *defaults
15
- steps:
16
- - checkout
17
- - run: bundle install
18
- - run: bundle exec rspec spec/integration
19
- metrics:
20
- <<: *defaults
21
- steps:
22
- - checkout
23
- - run: bundle install
24
- - run: bundle exec rake metrics:rubocop
25
- - run: bundle exec rake metrics:reek
26
- - run: bundle exec rake metrics:flay
27
- - run: bundle exec rake metrics:flog
28
- mutant:
29
- <<: *defaults
30
- steps:
31
- - checkout
32
- - run: bundle install
33
- - run: |
34
- bundle \
35
- exec \
36
- mutant \
37
- --ignore-subject 'Unparser::AST::LocalVariableScope*' \
38
- --since origin/master \
39
- --zombie \
40
- -- \
41
- 'Unparser*'
42
- workflows:
43
- version: 2
44
- test:
45
- jobs:
46
- - unit_specs
47
- - integration_specs
48
- - metrics
49
- - mutant
data/.gitignore DELETED
@@ -1,37 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.sw[op]
15
-
16
- ## Rubinius
17
- *.rbc
18
- .rbx
19
-
20
- ## PROJECT::GENERAL
21
- *.gem
22
- coverage
23
- profiling
24
- turbulence
25
- rdoc
26
- pkg
27
- tmp
28
- doc
29
- log
30
- .yardoc
31
- measurements
32
-
33
- ## BUNDLER
34
- .bundle
35
-
36
- ## PROJECT::SPECIFIC
37
- /vendor
data/.rspec DELETED
@@ -1,4 +0,0 @@
1
- --color
2
- --format progress
3
- --warnings
4
- --order random
@@ -1,9 +0,0 @@
1
- AllCops:
2
- Include:
3
- - 'Gemfile'
4
- Exclude:
5
- - 'Gemfile.devtools'
6
- - 'vendor/**/*'
7
- - 'benchmarks/**/*'
8
- - 'tmp/**/*'
9
- TargetRubyVersion: 2.5
@@ -1,156 +0,0 @@
1
- # v0.4.7 2020-01-03
2
-
3
- * Add support for endless ranges
4
- * Change to allow parser 2.7, even while syntax is not yet supported.
5
- This reduces downstream complexity.
6
-
7
- # v0.4.6 2020-01-02
8
-
9
- * Upgrades to allow parser dependency to ~> 2.6.5
10
-
11
- # v0.4.5 2019-05-10
12
-
13
- * Bump parser dependency to ~> 2.6.3
14
-
15
- # v0.4.4 2019-03-27
16
-
17
- * Bump parser dependency to ~> 2.6.2
18
-
19
- # v0.4.3 2019-02-24
20
-
21
- * Bump parser dependency to ~> 2.6.0
22
-
23
- # v0.4.2 2018-12-04
24
-
25
- * Drop hard ruby version requirement. Still officially I'll only support 2.5.
26
-
27
- # v0.4.1 2018-12-03
28
-
29
- * Fix unparsing of `def foo(bar: bar())`
30
-
31
- # v0.4.0 2018-12-03
32
-
33
- * Change to modern AST format.
34
- * Add experimental `Unparser.{parser,parse,parse_with_comments}`
35
-
36
- # v0.3.0 2018-11-16
37
-
38
- * Drop support for Ruby < 2.5
39
-
40
- # v0.2.7 2018-07-18
41
-
42
- * Add emitters for `__FILE__` and `__LINE__`
43
- https://github.com/mbj/unparser/pull/70
44
-
45
- # v0.2.7 2018-02-09
46
-
47
- * Allow ruby_parser 2.5
48
-
49
- # v0.2.6 2017-05-30
50
-
51
- * Reduce memory consumption via not requirering all possible parsers
52
- * Allow ruby 2.4
53
- * Update parser dependency
54
-
55
- # v0.2.5 2016-01-24
56
-
57
- * Add support for ruby 2.3
58
- * Bump parser dependency to ~>2.3.0
59
- * Trade uglier for more correct dstring / dsyms
60
- * Drop support for ruby < 2.1
61
-
62
- # v0.2.4 2015-05-30
63
-
64
- * Relax parser dependency to ~>2.2.2
65
-
66
- # v0.2.3 2015-04-28
67
-
68
- * Compatibility with parser ~>2.2.2, >2.2.2.2
69
-
70
- # v0.2.2 2015-01-14
71
-
72
- * Really add back unofficial support for 1.9.3
73
-
74
- # v0.2.1 2015-01-14
75
-
76
- * Add back unofficial support for 1.9.3
77
-
78
- # v0.2.0 2015-01-12
79
-
80
- * Bump required ruby version to 2.0.0
81
-
82
- # v0.1.17 2015-01-10
83
-
84
- * Fix jruby complex / rational generation edge case
85
- * Support generation under MRI 2.2
86
-
87
- # v0.1.16 2014-11-07
88
-
89
- * Add emitter for complex and rational literals
90
- * Fix edge cases for MLHS
91
- * Fix differencies from 2.2.pre7 series of parser
92
-
93
- # v0.1.15 2014-09-24
94
-
95
- * Handle syntax edge case for MRI 2.1.3 parser.
96
-
97
- # v0.1.14 2014-06-15
98
-
99
- * Fix emitter to correctly unparse foo[] = 1
100
-
101
- # v0.1.13 2014-06-08
102
-
103
- * Add support for rubinius.
104
-
105
- # v0.1.12 2014-04-13
106
-
107
- * Add support for 2.1 kwsplat
108
-
109
- # v0.1.11 2014-04-11
110
-
111
- * Fix performance on local variable scope inspection
112
-
113
- # v0.1.10 2014-04-06
114
-
115
- * Fix emit of inline rescues in combination with control flow keywords.
116
- * Begin corpus testing on rake ci against rubyspec
117
-
118
- # v0.1.9 2014-01-14
119
-
120
- * Fix emit of proc { |(a)| }
121
-
122
- # v0.1.8 2014-01-11
123
-
124
- * Fix all bugs found while round tripping rubyspec.
125
-
126
- # v0.1.7 2014-01-03
127
-
128
- * Add back support for root nodes of type resbody https://github.com/mbj/unparser/issues/24
129
-
130
- # v0.1.6 2013-12-31
131
-
132
- * Emit 1.9 style hashes where possible: https://github.com/mbj/unparser/pull/23
133
- * Fix invalid quoting of hash keys: https://github.com/mbj/unparser/issues/22
134
- * Fix crash on take before introduced by code refactorings: https://github.com/mbj/unparser/issues/20
135
- * Fix crash on comment reproduction https://github.com/mbj/unparser/issues/17
136
-
137
- # v0.1.5 2013-11-01
138
-
139
- * Fix crash with comment reproduction.
140
-
141
- # v0.1.4 2013-11-01
142
-
143
- * Code cleanups.
144
- * Remove warnings.
145
-
146
- # v0.0.3 2013-06-17
147
-
148
- * Adjust to changes in parser 2.0.0.beta5 => beta6
149
-
150
- # v0.0.2 2013-06-17
151
-
152
- Crappy release
153
-
154
- # v0.0.1 2013-06-15
155
-
156
- Initial release
data/Gemfile DELETED
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- gemspec
6
-
7
- source 'https://oss:Px2ENN7S91OmWaD5G7MIQJi1dmtmYrEh@gem.mutant.dev' do
8
- gem 'mutant-license'
9
- end
@@ -1,181 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- unparser (0.4.7)
5
- abstract_type (~> 0.0.7)
6
- adamantium (~> 0.2.0)
7
- concord (~> 0.1.5)
8
- diff-lcs (~> 1.3)
9
- equalizer (~> 0.0.9)
10
- parser (>= 2.6.5)
11
- procto (~> 0.0.2)
12
-
13
- GEM
14
- remote: https://rubygems.org/
15
- remote: https://oss:Px2ENN7S91OmWaD5G7MIQJi1dmtmYrEh@gem.mutant.dev/
16
- specs:
17
- abstract_type (0.0.7)
18
- adamantium (0.2.0)
19
- ice_nine (~> 0.11.0)
20
- memoizable (~> 0.4.0)
21
- anima (0.3.1)
22
- abstract_type (~> 0.0.7)
23
- adamantium (~> 0.2)
24
- equalizer (~> 0.0.11)
25
- ast (2.4.0)
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)
34
- concord (0.1.5)
35
- adamantium (~> 0.2.0)
36
- 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
- diff-lcs (1.3)
57
- docile (1.3.2)
58
- 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
- ice_nine (0.11.2)
70
- jaro_winkler (1.5.4)
71
- json (2.3.0)
72
- kwalify (0.7.2)
73
- memoizable (0.4.2)
74
- 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
- mprelude (0.1.0)
85
- abstract_type (~> 0.0.7)
86
- adamantium (~> 0.2.0)
87
- concord (~> 0.1.5)
88
- equalizer (~> 0.0.9)
89
- ice_nine (~> 0.11.1)
90
- procto (~> 0.0.2)
91
- mutant (0.9.4)
92
- abstract_type (~> 0.0.7)
93
- adamantium (~> 0.2.0)
94
- anima (~> 0.3.1)
95
- ast (~> 2.2)
96
- concord (~> 0.1.5)
97
- diff-lcs (~> 1.3)
98
- equalizer (~> 0.0.9)
99
- ice_nine (~> 0.11.1)
100
- memoizable (~> 0.4.2)
101
- mprelude (~> 0.1.0)
102
- parser (~> 2.6.5)
103
- procto (~> 0.0.2)
104
- unparser (~> 0.4.6)
105
- mutant-license (0.1.0)
106
- mutant-rspec (0.9.4)
107
- mutant (~> 0.9.4)
108
- rspec-core (>= 3.8.0, < 4.0.0)
109
- parallel (1.19.1)
110
- parser (2.6.5.0)
111
- ast (~> 2.4.0)
112
- path_expander (1.1.0)
113
- powerpack (0.1.2)
114
- procto (0.0.3)
115
- psych (3.1.0)
116
- rainbow (3.0.0)
117
- rake (12.3.3)
118
- reek (5.3.2)
119
- codeclimate-engine-rb (~> 0.4.0)
120
- kwalify (~> 0.7.0)
121
- parser (>= 2.5.0.0, < 2.7, != 2.5.1.1)
122
- psych (~> 3.1.0)
123
- rainbow (>= 2.0, < 4.0)
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)
131
- diff-lcs (>= 1.2.0, < 2.0)
132
- rspec-support (~> 3.8.0)
133
- rspec-its (1.2.0)
134
- rspec-core (>= 3.0.0)
135
- rspec-expectations (>= 3.0.0)
136
- rspec-mocks (3.8.2)
137
- diff-lcs (>= 1.2.0, < 2.0)
138
- rspec-support (~> 3.8.0)
139
- rspec-support (3.8.3)
140
- rubocop (0.61.1)
141
- jaro_winkler (~> 1.5.1)
142
- parallel (~> 1.10)
143
- parser (>= 2.5, != 2.5.1.1)
144
- powerpack (~> 0.1)
145
- rainbow (>= 2.2.2, < 4.0)
146
- ruby-progressbar (~> 1.7)
147
- unicode-display_width (~> 1.4.0)
148
- 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
- thread_safe (0.3.6)
158
- unicode-display_width (1.4.1)
159
- virtus (1.0.5)
160
- axiom-types (~> 0.1)
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)
167
-
168
- PLATFORMS
169
- ruby
170
-
171
- DEPENDENCIES
172
- anima (~> 0.3.1)
173
- devtools (~> 0.1.23)
174
- morpher (~> 0.2.6)
175
- mutant (~> 0.9.4)
176
- mutant-license!
177
- mutant-rspec (~> 0.9.4)
178
- unparser!
179
-
180
- BUNDLED WITH
181
- 1.17.3