phlex 2.1.1 → 2.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e0de463dbf4f663fc2ac8dd8d0b0a080dc8d7bf90ba209d56b366b36634e9cc9
4
- data.tar.gz: ccad039d4962eb42076c562cb9f9617197f878a1860b13f66aae2b34f2686333
3
+ metadata.gz: bec8e4750b58937139e2cd64d5890a406f537b925995588c23d336340e998f46
4
+ data.tar.gz: 722c0d77adc2cf4d3110bc2653a7e5dced17554f8d0b102acb8e178a873b5d1d
5
5
  SHA512:
6
- metadata.gz: 959b8c7b1bdbbf281b0da7576257719da2ba077045e9ad1d673348d60a01dfa731b6b9b2e9031cce81e896f98a195478008d667e99bf471e50348bc6b978c393
7
- data.tar.gz: 93dab7d61efa8f2009698cb8ae7d12748b4cb1bfe5c2bf48e58c41e5c930f923789c00ff3c346e878107f9cbe280951e23f35fe5482c453799f5c7e81293715e
6
+ metadata.gz: a2a6ea6722f8576a413d60f4918c7505069c24a5f1c26a0ff2514d5a1b03206b64688d8ba41b7457f51070ac710dfe0dabe7f5818e139c0cfffde1e513da1244
7
+ data.tar.gz: 52f9f64241f7d957b7e25dabb8598a4bd1c2a343a3c2a0dd2264bc23dc6d057c272d2b1bae772b80d9dbe071af3cc46f21b1480dabf414c154f17789dbda368d
data/lib/phlex/csv.rb CHANGED
@@ -168,7 +168,9 @@ class Phlex::CSV
168
168
  value = value.strip
169
169
 
170
170
  if escape_csv_injection
171
- if FORMULA_PREFIXES_MAP[value.getbyte(0)]
171
+ if value.empty?
172
+ buffer << value
173
+ elsif FORMULA_PREFIXES_MAP[value.getbyte(0)]
172
174
  value.gsub!('"', '""')
173
175
  buffer << '"\'' << value << '"'
174
176
  elsif value.match?(escape_regex)
@@ -184,7 +186,9 @@ class Phlex::CSV
184
186
  if escape_csv_injection
185
187
  first_byte = value.getbyte(0)
186
188
 
187
- if FORMULA_PREFIXES_MAP[first_byte]
189
+ if value.empty?
190
+ buffer << '""'
191
+ elsif FORMULA_PREFIXES_MAP[first_byte]
188
192
  buffer << '"\'' << value.gsub('"', '""') << '"'
189
193
  elsif value.match?(escape_regex)
190
194
  buffer << '"' << value.gsub('"', '""') << '"'
@@ -192,7 +196,9 @@ class Phlex::CSV
192
196
  buffer << value
193
197
  end
194
198
  else # not escaping CSV injection
195
- if value.match?(escape_regex)
199
+ if value.empty?
200
+ buffer << '""'
201
+ elsif value.match?(escape_regex)
196
202
  buffer << '"' << value.gsub('"', '""') << '"'
197
203
  else
198
204
  buffer << value
@@ -14,16 +14,7 @@ class Phlex::SGML::State
14
14
 
15
15
  attr_accessor :capturing, :user_context
16
16
 
17
- attr_reader :fragments, :fragment_depth, :output_buffer
18
-
19
- def buffer
20
- case @buffer
21
- when Proc
22
- @buffer.call
23
- else
24
- @buffer
25
- end
26
- end
17
+ attr_reader :fragments, :fragment_depth, :output_buffer, :buffer
27
18
 
28
19
  def around_render(component)
29
20
  stack = @stack
@@ -85,17 +76,23 @@ class Phlex::SGML::State
85
76
  end
86
77
 
87
78
  def caching(&)
88
- buffer = +""
89
- @cache_stack.push([buffer, {}].freeze)
90
- capturing_into(buffer, &)
91
- @cache_stack.pop
79
+ result = nil
80
+
81
+ capture do
82
+ @cache_stack.push([buffer, {}].freeze)
83
+ yield
84
+ result = @cache_stack.pop
85
+ end
86
+
87
+ result
92
88
  end
93
89
 
94
90
  def caching?
95
91
  @cache_stack.length > 0
96
92
  end
97
93
 
98
- def capturing_into(new_buffer)
94
+ def capture
95
+ new_buffer = +""
99
96
  original_buffer = @buffer
100
97
  original_capturing = @capturing
101
98
  original_fragments = @fragments
data/lib/phlex/sgml.rb CHANGED
@@ -217,9 +217,9 @@ class Phlex::SGML
217
217
  return "" unless block
218
218
 
219
219
  if args.length > 0
220
- @_state.capturing_into(+"") { __yield_content_with_args__(*args, &block) }
220
+ @_state.capture { __yield_content_with_args__(*args, &block) }
221
221
  else
222
- @_state.capturing_into(+"") { __yield_content__(&block) }
222
+ @_state.capture { __yield_content__(&block) }
223
223
  end
224
224
  end
225
225
 
@@ -298,6 +298,8 @@ class Phlex::SGML
298
298
  ].freeze
299
299
 
300
300
  low_level_cache(full_key, **, &content)
301
+
302
+ nil
301
303
  end
302
304
 
303
305
  # Cache a block of content where you control the entire cache key.
@@ -331,6 +333,8 @@ class Phlex::SGML
331
333
  end
332
334
  end
333
335
  end
336
+
337
+ nil
334
338
  end
335
339
 
336
340
  def json_escape(string)
@@ -353,15 +357,8 @@ class Phlex::SGML
353
357
  false
354
358
  end
355
359
 
356
- def vanish(*args)
357
- return unless block_given?
358
-
359
- if args.length > 0
360
- @_state.capturing_into(Phlex::Vanish) { yield(*args) }
361
- else
362
- @_state.capturing_into(Phlex::Vanish) { yield(self) }
363
- end
364
-
360
+ def vanish(...)
361
+ capture(...)
365
362
  nil
366
363
  end
367
364
 
data/lib/phlex/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Phlex
4
- VERSION = "2.1.1"
4
+ VERSION = "2.1.2"
5
5
  end
data/lib/phlex.rb CHANGED
@@ -8,7 +8,6 @@ module Phlex
8
8
 
9
9
  autoload :Kit, "phlex/kit"
10
10
  autoload :FIFO, "phlex/fifo"
11
- autoload :Vanish, "phlex/vanish"
12
11
  autoload :Helpers, "phlex/helpers"
13
12
  autoload :FIFOCacheStore, "phlex/fifo_cache_store"
14
13
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phlex
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Drapper
8
8
  - Will Cosgrove
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-03-07 00:00:00.000000000 Z
11
+ date: 2025-03-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Build HTML, SVG and CSV views with Ruby classes.
14
14
  email:
@@ -40,7 +40,6 @@ files:
40
40
  - lib/phlex/sgml/state.rb
41
41
  - lib/phlex/svg.rb
42
42
  - lib/phlex/svg/standard_elements.rb
43
- - lib/phlex/vanish.rb
44
43
  - lib/phlex/version.rb
45
44
  homepage: https://www.phlex.fun
46
45
  licenses:
data/lib/phlex/vanish.rb DELETED
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- module Phlex::Vanish
5
- extend self
6
-
7
- def <<(anything)
8
- self
9
- end
10
-
11
- def bytesize
12
- 0
13
- end
14
-
15
- def dup
16
- self
17
- end
18
-
19
- def clear
20
- self
21
- end
22
- end