syntax_tree-array_brackets 0.1.1 → 0.1.3

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 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