syntax_tree-array_brackets 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32271cf4a40462dee6524c5ef80b617bba879a4b7701034b0384fb8071bfae50
4
- data.tar.gz: a75742fcac0040125896a54fd74f7c7cebff711038d9d5702dcaa0faa192fdac
3
+ metadata.gz: 62f746d61ad5629ffb5a95fb14710e6eac6cdbafaa4f5fffa36d46a113bd2990
4
+ data.tar.gz: b76a4d579362b2e564cd01d7928f62a088bf28637ad84180c8f17e82c1f3e8f1
5
5
  SHA512:
6
- metadata.gz: 2b1c534d7bb082f76e7ac4ed240ca9038b1a5cae42ea7a8d73e970382c65ba2ce9d57e88f383d9900878a9d60b837599f58776ba23e28b7390970a9ad5d6e59d
7
- data.tar.gz: 4f08569970a94ea6089d481086da9ef077b54a96f3b0aa9bcbec82630751308eef6fb65981154e7388487cae5637caec4458c4abd9ba4eb8b9745d29e2459ce8
6
+ metadata.gz: 24ed8ab4668e2cb70d7ed3da8eceba72f7ff8366116c805707ba58f19b486169b76ef074db4e2cfa793632614a4c89a1422a46b4056f6e25e0422f77ced620aa
7
+ data.tar.gz: 79673b494716fef2c6f3e2c60dd32c3fafa6eaa4a77a76778ad95a95bca9accf537d82727c7746bdaca37ef53cd8415bd20eea92e6a66ff85a157e61dd19d806
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- syntax_tree-array_brackets (0.1.1)
4
+ syntax_tree-array_brackets (0.1.3)
5
5
  syntax_tree (>= 2.0.1)
6
6
 
7
7
  GEM
@@ -2,6 +2,6 @@
2
2
 
3
3
  module SyntaxTree
4
4
  module ArrayBrackets
5
- VERSION = "0.1.1"
5
+ VERSION = "0.1.3"
6
6
  end
7
7
  end
@@ -41,7 +41,12 @@ module SyntaxTree
41
41
  loc = elements.first.location.to(elements.last.location)
42
42
  str_contents =
43
43
  elements.map do |element|
44
- StringContent.new(parts: [element], location: nil)
44
+ copy =
45
+ element.copy(
46
+ value: element.value.gsub(/([^\\])\\ /, "\\1 "),
47
+ location: element.location
48
+ )
49
+ StringContent.new(parts: [copy], location: nil)
45
50
  end
46
51
  contents = Args.new(parts: str_contents, location: loc)
47
52
 
@@ -67,11 +72,8 @@ module SyntaxTree
67
72
 
68
73
  unless elements.empty?
69
74
  loc = elements.first.location.to(elements.last.location)
70
- str_contents =
71
- elements.map do |element|
72
- SymbolLiteral.new(value: element, location: nil)
73
- end
74
- contents = Args.new(parts: str_contents, location: loc)
75
+ literals = convert_to_literals(q, elements)
76
+ contents = Args.new(parts: literals, location: loc)
75
77
 
76
78
  q.indent do
77
79
  q.breakable_empty
@@ -84,5 +86,34 @@ module SyntaxTree
84
86
  q.text(closing)
85
87
  end
86
88
  end
89
+
90
+ private
91
+
92
+ def convert_to_literals(q, elements)
93
+ elements.map do |element|
94
+ value =
95
+ if element.value.intern.inspect.include?("\"") # consider symbols like :"foo:bar", :"?"
96
+ get_intern_representation(q, element.value)
97
+ else
98
+ element.value
99
+ end
100
+ copy =
101
+ element.copy(
102
+ value: value.gsub(/([^\\])\\ /, "\\1 "),
103
+ location: element.location
104
+ )
105
+
106
+ SymbolLiteral.new(value: copy, location: nil)
107
+ end
108
+ end
109
+
110
+ def get_intern_representation(q, value)
111
+ if value == q.quote
112
+ return "\"\\\"\"" if q.quote == "\""
113
+ return "\'\\\'\'" if q.quote == "'" # rubocop:disable Style/RedundantStringEscape
114
+ end
115
+
116
+ "#{q.quote}#{value}#{q.quote}"
117
+ end
87
118
  end
88
119
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: syntax_tree-array_brackets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nobuo Takizawa
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-12 00:00:00.000000000 Z
11
+ date: 2023-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: syntax_tree