refract 1.0.0 → 1.1.0
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/lib/refract/converter.rb +2 -0
- data/lib/refract/formatter.rb +63 -30
- data/lib/refract/nodes/call_node.rb +3 -2
- data/lib/refract/nodes/symbol_node.rb +3 -2
- data/lib/refract/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6108db4a82b8d13ee9e82726fb9a546e9ca2307ebf798f9dc46c7088a4954b3
|
4
|
+
data.tar.gz: 8a1568765775444eef901017163818dd90e724da75f75c418ebc838f6f05cb73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 616aa31f777bee9127836f599337e4d23b7e1e28ec3b5089c979cc48d901b8e16d26e09390f6c716885464ad88125875288d4e5667ba3b0e5f1c1b164b7cfc69
|
7
|
+
data.tar.gz: bc620ad21498d5c4351c145047a5b29aa6ff73537809529594bb9c163c088f36f47de7590cf4fe1f2cdd5c04594a2d276bd439d9da19440771af108158ac1ab3
|
data/lib/refract/converter.rb
CHANGED
@@ -163,6 +163,7 @@ module Refract
|
|
163
163
|
name: node.name,
|
164
164
|
arguments: visit(node.arguments),
|
165
165
|
block: visit(node.block),
|
166
|
+
safe_navigation: node.safe_navigation?,
|
166
167
|
)
|
167
168
|
end
|
168
169
|
|
@@ -1135,6 +1136,7 @@ module Refract
|
|
1135
1136
|
SymbolNode.new(
|
1136
1137
|
prism_node: node,
|
1137
1138
|
unescaped: node.unescaped,
|
1139
|
+
quoted: node.opening_loc && node.closing_loc,
|
1138
1140
|
)
|
1139
1141
|
end
|
1140
1142
|
|
data/lib/refract/formatter.rb
CHANGED
@@ -2,11 +2,13 @@
|
|
2
2
|
|
3
3
|
module Refract
|
4
4
|
class Formatter < BasicVisitor
|
5
|
-
|
6
|
-
|
5
|
+
Result = Data.define(:source, :source_map)
|
6
|
+
|
7
|
+
def initialize(starting_line: 1)
|
8
|
+
super()
|
7
9
|
@buffer = []
|
8
10
|
@source_map = []
|
9
|
-
@current_line =
|
11
|
+
@current_line = starting_line
|
10
12
|
@indent = 0
|
11
13
|
end
|
12
14
|
|
@@ -20,7 +22,11 @@ module Refract
|
|
20
22
|
|
21
23
|
def format_node(node)
|
22
24
|
visit(node)
|
23
|
-
|
25
|
+
|
26
|
+
Result.new(
|
27
|
+
source: @buffer.join,
|
28
|
+
source_map: @source_map,
|
29
|
+
)
|
24
30
|
end
|
25
31
|
|
26
32
|
visit AliasGlobalVariableNode do |node|
|
@@ -77,7 +83,13 @@ module Refract
|
|
77
83
|
visit AssocNode do |node|
|
78
84
|
case node.key
|
79
85
|
when SymbolNode
|
80
|
-
|
86
|
+
if node.key.quoted
|
87
|
+
doubles do
|
88
|
+
push node.key.unescaped.gsub('"', '\"')
|
89
|
+
end
|
90
|
+
else
|
91
|
+
push node.key.unescaped
|
92
|
+
end
|
81
93
|
push ":"
|
82
94
|
space unless ImplicitNode === node.value
|
83
95
|
visit node.value
|
@@ -98,32 +110,30 @@ module Refract
|
|
98
110
|
end
|
99
111
|
|
100
112
|
visit BeginNode do |node|
|
101
|
-
|
102
|
-
push "begin"
|
113
|
+
push "begin"
|
103
114
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
new_line
|
115
|
+
indent do
|
116
|
+
visit node.statements
|
117
|
+
end
|
109
118
|
|
110
|
-
|
111
|
-
visit node.rescue_clause
|
112
|
-
new_line
|
113
|
-
end
|
119
|
+
new_line
|
114
120
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
121
|
+
if node.rescue_clause
|
122
|
+
visit node.rescue_clause
|
123
|
+
new_line
|
124
|
+
end
|
119
125
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
126
|
+
if node.else_clause
|
127
|
+
visit node.else_clause
|
128
|
+
new_line
|
129
|
+
end
|
124
130
|
|
125
|
-
|
131
|
+
if node.ensure_clause
|
132
|
+
visit node.ensure_clause
|
133
|
+
new_line
|
126
134
|
end
|
135
|
+
|
136
|
+
push "end"
|
127
137
|
end
|
128
138
|
|
129
139
|
visit BlockArgumentNode do |node|
|
@@ -195,6 +205,7 @@ module Refract
|
|
195
205
|
visit CallNode do |node|
|
196
206
|
if node.receiver
|
197
207
|
visit node.receiver
|
208
|
+
push "&" if node.safe_navigation
|
198
209
|
push "."
|
199
210
|
end
|
200
211
|
|
@@ -1115,7 +1126,7 @@ module Refract
|
|
1115
1126
|
end
|
1116
1127
|
|
1117
1128
|
visit StatementsNode do |node|
|
1118
|
-
visit_each(node.body) { new_line }
|
1129
|
+
visit_each(node.body.flat_map { |n| (Refract::StatementsNode === n) ? n.body : n }) { new_line }
|
1119
1130
|
end
|
1120
1131
|
|
1121
1132
|
visit StringNode do |node|
|
@@ -1126,17 +1137,39 @@ module Refract
|
|
1126
1137
|
|
1127
1138
|
visit SuperNode do |node|
|
1128
1139
|
push "super"
|
1129
|
-
|
1140
|
+
case node.block
|
1141
|
+
when BlockNode
|
1142
|
+
if node.arguments
|
1143
|
+
parens { visit node.arguments }
|
1144
|
+
end
|
1145
|
+
|
1146
|
+
space
|
1147
|
+
visit node.block
|
1148
|
+
when BlockArgumentNode
|
1130
1149
|
parens do
|
1131
|
-
|
1150
|
+
if node.arguments
|
1151
|
+
visit node.arguments
|
1152
|
+
push ", "
|
1153
|
+
end
|
1154
|
+
|
1155
|
+
visit node.block
|
1156
|
+
end
|
1157
|
+
else
|
1158
|
+
if node.arguments
|
1159
|
+
parens { visit node.arguments }
|
1132
1160
|
end
|
1133
1161
|
end
|
1134
|
-
visit node.block if node.block
|
1135
1162
|
end
|
1136
1163
|
|
1137
1164
|
visit SymbolNode do |node|
|
1138
1165
|
push ":"
|
1139
|
-
|
1166
|
+
if node.quoted
|
1167
|
+
doubles do
|
1168
|
+
push node.unescaped.gsub('"', '\"')
|
1169
|
+
end
|
1170
|
+
else
|
1171
|
+
push node.unescaped
|
1172
|
+
end
|
1140
1173
|
end
|
1141
1174
|
|
1142
1175
|
visit TrueNode do |node|
|
@@ -2,15 +2,16 @@
|
|
2
2
|
|
3
3
|
module Refract
|
4
4
|
class CallNode < Node
|
5
|
-
def initialize(prism_node: nil, receiver: nil, name:, arguments: nil, block: nil)
|
5
|
+
def initialize(prism_node: nil, receiver: nil, name:, arguments: nil, block: nil, safe_navigation: nil)
|
6
6
|
@prism_node = prism_node => Prism::Node | nil
|
7
7
|
@receiver = receiver
|
8
8
|
@name = name => Symbol
|
9
9
|
@arguments = arguments
|
10
10
|
@block = block
|
11
|
+
@safe_navigation = safe_navigation
|
11
12
|
freeze
|
12
13
|
end
|
13
14
|
|
14
|
-
attr_accessor :receiver, :name, :arguments, :block
|
15
|
+
attr_accessor :receiver, :name, :arguments, :block, :safe_navigation
|
15
16
|
end
|
16
17
|
end
|
@@ -2,12 +2,13 @@
|
|
2
2
|
|
3
3
|
module Refract
|
4
4
|
class SymbolNode < Node
|
5
|
-
def initialize(prism_node: nil, unescaped:)
|
5
|
+
def initialize(prism_node: nil, unescaped:, quoted:)
|
6
6
|
@prism_node = prism_node => Prism::Node | nil
|
7
7
|
@unescaped = unescaped
|
8
|
+
@quoted = quoted
|
8
9
|
freeze
|
9
10
|
end
|
10
11
|
|
11
|
-
attr_accessor :unescaped
|
12
|
+
attr_accessor :unescaped, :quoted
|
12
13
|
end
|
13
14
|
end
|
data/lib/refract/version.rb
CHANGED