node_mutation 1.4.4 → 1.5.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 +9 -0
- data/Gemfile.lock +2 -2
- data/README.md +0 -2
- data/lib/node_mutation/parser_adapter.rb +5 -5
- data/lib/node_mutation/version.rb +1 -1
- data/lib/node_mutation.rb +0 -16
- data/sig/node_mutation.rbs +0 -2
- metadata +3 -4
- data/lib/node_mutation/action/insert_after_action.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44339bec6d4624f5f7cf60b9253e701c7215f2b5bae0094b0532bf86e4c6cf91
|
4
|
+
data.tar.gz: 4878c3c9f61830b728d6ea21424588d62c039e42aa5a029b1786844a1c7b74db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d0b12e168a2a8aa7a8019484125bd0edcdb159846216de1d1822e1a75f1b47e1f57f87b5de0cb94a0ebec45e950b2f32c9349c76294ac6156d0d382be85d52e
|
7
|
+
data.tar.gz: deb03d485ddf7ca91797cafbe28526ea5e91b7f862c71173e801587d727ced13680f7ff4dc3d4f2d563e8830c52622e5ce44dc4f02d84ddc6f26f572941db6d5
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# NodeMutation
|
2
2
|
|
3
|
+
## 1.5.1 (2022-10-19)
|
4
|
+
|
5
|
+
* Better error message for unknown code
|
6
|
+
|
7
|
+
## 1.5.0 (2022-10-17)
|
8
|
+
|
9
|
+
* Remove `insert_after`
|
10
|
+
* Fix regexp to match evaluated value
|
11
|
+
|
3
12
|
## 1.4.4 (2022-09-26)
|
4
13
|
|
5
14
|
* Parser adapter `child_node_by_name` support function call
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
node_mutation (1.
|
4
|
+
node_mutation (1.5.1)
|
5
5
|
activesupport (< 7.0.0)
|
6
6
|
erubis
|
7
7
|
|
@@ -75,7 +75,7 @@ GEM
|
|
75
75
|
thor (1.2.1)
|
76
76
|
tzinfo (2.0.5)
|
77
77
|
concurrent-ruby (~> 1.0)
|
78
|
-
zeitwerk (2.6.
|
78
|
+
zeitwerk (2.6.1)
|
79
79
|
|
80
80
|
PLATFORMS
|
81
81
|
x86_64-darwin-21
|
data/README.md
CHANGED
@@ -37,8 +37,6 @@ mutation.append node, 'include FactoryGirl::Syntax::Methods'
|
|
37
37
|
mutation.delete node, :dot, :message, and_comma: true
|
38
38
|
# insert code to the ast node.
|
39
39
|
mutation.insert node, 'URI.', at: 'beginning'
|
40
|
-
# insert code next to the ast node.
|
41
|
-
mutation.insert_after node, '{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
42
40
|
# prepend code to the ast node.
|
43
41
|
mutation.prepend node, '{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
44
42
|
# remove source code of the ast node
|
@@ -6,9 +6,9 @@ class NodeMutation::ParserAdapter < NodeMutation::Adapter
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def rewritten_source(node, code)
|
9
|
-
code.gsub(/{{(
|
9
|
+
code.gsub(/{{(.+?)}}/m) do
|
10
10
|
old_code = Regexp.last_match(1)
|
11
|
-
|
11
|
+
begin
|
12
12
|
evaluated = child_node_by_name(node, old_code)
|
13
13
|
case evaluated
|
14
14
|
when Parser::AST::Node
|
@@ -38,10 +38,10 @@ class NodeMutation::ParserAdapter < NodeMutation::Adapter
|
|
38
38
|
when NilClass
|
39
39
|
'nil'
|
40
40
|
else
|
41
|
-
raise
|
41
|
+
raise "rewritten_source is not handled for #{evaluated.inspect}"
|
42
42
|
end
|
43
|
-
|
44
|
-
"
|
43
|
+
rescue StandardError => e
|
44
|
+
raise "can not parse \"#{code}\""
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
data/lib/node_mutation.rb
CHANGED
@@ -18,7 +18,6 @@ class NodeMutation
|
|
18
18
|
autoload :AppendAction, 'node_mutation/action/append_action'
|
19
19
|
autoload :DeleteAction, 'node_mutation/action/delete_action'
|
20
20
|
autoload :InsertAction, 'node_mutation/action/insert_action'
|
21
|
-
autoload :InsertAfterAction, 'node_mutation/action/insert_after_action'
|
22
21
|
autoload :RemoveAction, 'node_mutation/action/remove_action'
|
23
22
|
autoload :PrependAction, 'node_mutation/action/prepend_action'
|
24
23
|
autoload :ReplaceAction, 'node_mutation/action/replace_action'
|
@@ -112,21 +111,6 @@ class NodeMutation
|
|
112
111
|
@actions << InsertAction.new(node, code, at: at, to: to).process
|
113
112
|
end
|
114
113
|
|
115
|
-
# Insert code next to the ast node.
|
116
|
-
# @param node [Node] ast node
|
117
|
-
# @param code [String] new code to insert.
|
118
|
-
# @example
|
119
|
-
# source code of the ast node is
|
120
|
-
# Synvert::Application.config.secret_token = "0447aa931d42918bfb934750bb78257088fb671186b5d1b6f9fddf126fc8a14d34f1d045cefab3900751c3da121a8dd929aec9bafe975f1cabb48232b4002e4e"
|
121
|
-
# then we call
|
122
|
-
# mutation.insert_after(node, "{{receiver}}.secret_key_base = \"#{SecureRandom.hex(64)}\"")
|
123
|
-
# the source code will be rewritten to
|
124
|
-
# Synvert::Application.config.secret_token = "0447aa931d42918bfb934750bb78257088fb671186b5d1b6f9fddf126fc8a14d34f1d045cefab3900751c3da121a8dd929aec9bafe975f1cabb48232b4002e4e"
|
125
|
-
# Synvert::Application.config.secret_key_base = "bf4f3f46924ecd9adcb6515681c78144545bba454420973a274d7021ff946b8ef043a95ca1a15a9d1b75f9fbdf85d1a3afaf22f4e3c2f3f78e24a0a188b581df"
|
126
|
-
def insert_after(node, code)
|
127
|
-
@actions << InsertAfterAction.new(node, code).process
|
128
|
-
end
|
129
|
-
|
130
114
|
# Prepend code to the ast node.
|
131
115
|
# @param node [Node] ast node
|
132
116
|
# @param code [String] new code to prepend.
|
data/sig/node_mutation.rbs
CHANGED
@@ -27,8 +27,6 @@ module NodeMutation[T]
|
|
27
27
|
|
28
28
|
def insert: (node: T, code: String, ?at: "beginning" | "end", ?to: nil | String) -> void
|
29
29
|
|
30
|
-
def insert_after: (node: T, code: String) -> void
|
31
|
-
|
32
30
|
def prepend: (node: T, code: String) -> void
|
33
31
|
|
34
32
|
def remove: (node: T, **options: { and_comma: bool }) -> void
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: node_mutation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Huang
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -58,7 +58,6 @@ files:
|
|
58
58
|
- lib/node_mutation/action/append_action.rb
|
59
59
|
- lib/node_mutation/action/delete_action.rb
|
60
60
|
- lib/node_mutation/action/insert_action.rb
|
61
|
-
- lib/node_mutation/action/insert_after_action.rb
|
62
61
|
- lib/node_mutation/action/noop_action.rb
|
63
62
|
- lib/node_mutation/action/prepend_action.rb
|
64
63
|
- lib/node_mutation/action/remove_action.rb
|
@@ -96,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
95
|
- !ruby/object:Gem::Version
|
97
96
|
version: '0'
|
98
97
|
requirements: []
|
99
|
-
rubygems_version: 3.3.
|
98
|
+
rubygems_version: 3.3.22
|
100
99
|
signing_key:
|
101
100
|
specification_version: 4
|
102
101
|
summary: ast node mutation apis
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# InsertAfterAction to insert code next to the node.
|
4
|
-
class NodeMutation::InsertAfterAction < NodeMutation::Action
|
5
|
-
private
|
6
|
-
|
7
|
-
# Calculate the begin and end positions.
|
8
|
-
def calculate_position
|
9
|
-
@start = NodeMutation.adapter.get_end(@node)
|
10
|
-
@end = @start
|
11
|
-
end
|
12
|
-
|
13
|
-
# Indent of the node.
|
14
|
-
#
|
15
|
-
# @param node [Parser::AST::Node]
|
16
|
-
# @return [Integer] indent size
|
17
|
-
def indent(node)
|
18
|
-
' ' * NodeMutation.adapter.get_start_loc(node).column
|
19
|
-
end
|
20
|
-
end
|