fmt 0.3.3 → 0.3.4

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: ed2f5a4d3984f777c398dfe2efeba95883d1474165b0831cea8b045c9d1bc3d3
4
- data.tar.gz: 3ae71397daf558b9d32b5377d29f40a2b307a650fc53d08f4faa3cc69759eedb
3
+ metadata.gz: 674b8314e97d214271069e488dfdb736551f431953d260d1766001fdc797fd55
4
+ data.tar.gz: 8b9c601567e80419c9b2bb7414bcb42b22431832c9c1db7039a53b6d1f1cdd34
5
5
  SHA512:
6
- metadata.gz: e87abb12eb2ff4373ec7f13ecd1ac236b01914296a9d2b854f8bb60dd1aef5ee1e834ba45601a9997fe53168260c5ac33f70c78c694c45c1bc49f5c958cb8e61
7
- data.tar.gz: d26316457a56992b65d8b9c2d2478b36fc9cdd378a454748a2016dfb2c388de91098f73a5cdce23d3d9dc6d8f0d4d47ac8774c66038c39fdcca10adfedec83bb
6
+ metadata.gz: 01317ca04d3745516ec6fc842650bf0cce4fc47702f12b025b5d3d203f328f2c92053b3805a72eb9ac134686d3b1d0dfe52aee15f82ab13d8fab4f4b1f7240c9
7
+ data.tar.gz: e08ed93970be78e2fe713d22a2861111d931f63bc6d8f6e402ba1ee25405febd82b343758f201a255f3ae5f9b0d0f8faae2ea2a0d40a2d6a7b33473f6f545e32
@@ -10,7 +10,7 @@ module Fmt
10
10
  # @rbs key: Symbol -- key for embed
11
11
  # @rbs placeholder: String -- placeholder for embed
12
12
  def initialize(urtext = "", key:, placeholder:)
13
- @urtext = urtext.to_s
13
+ @urtext = urtext.to_s.encode(Encoding::UTF_8, invalid: :replace, undef: :replace, replace: "?")
14
14
  @key = key
15
15
  @placeholder = placeholder
16
16
  end
@@ -8,7 +8,7 @@ module Fmt
8
8
  # Constructor
9
9
  # @rbs urtext: String -- original source code
10
10
  def initialize(urtext = "")
11
- @urtext = urtext.to_s
11
+ @urtext = urtext.to_s.encode(Encoding::UTF_8, invalid: :replace, undef: :replace, replace: "?")
12
12
  end
13
13
 
14
14
  attr_reader :urtext # : String -- original source code
@@ -8,7 +8,7 @@ module Fmt
8
8
  # Constructor
9
9
  # @rbs urtext: String -- original source code
10
10
  def initialize(urtext = "")
11
- @urtext = urtext.to_s
11
+ @urtext = urtext.to_s.encode(Encoding::UTF_8, invalid: :replace, undef: :replace, replace: "?")
12
12
  end
13
13
 
14
14
  attr_reader :urtext # : String -- original source code
@@ -5,15 +5,15 @@
5
5
  module Fmt
6
6
  # Parses a template from a string and builds an AST (Abstract Syntax Tree)
7
7
  class TemplateParser < Parser
8
- EMBED_PEEK = %r{(?=#{esc Sigils::EMBED_PREFIX})}o # : Regexp -- detects start of an embed prefix (look ahead)
9
- PIPELINE_PEEK = %r{(?=[#{Sigils::FORMAT_PREFIX}][^#{Sigils::FORMAT_PREFIX}])}o # : Regexp -- detects start of a pipeline (look ahead)
10
- PERCENT_LITERAL = %r{[#{Sigils::FORMAT_PREFIX}]{2}}o # : Regexp -- detects a percent literal
11
- WHITESPACE = %r{\s}o # : Regexp -- detects whitespace
8
+ EMBED_PEEK = %r{(?=#{esc Sigils::EMBED_PREFIX})}ou # : Regexp -- detects start of an embed prefix (look ahead)
9
+ PIPELINE_PEEK = %r{(?=[#{Sigils::FORMAT_PREFIX}][^#{Sigils::FORMAT_PREFIX}])}ou # : Regexp -- detects start of a pipeline (look ahead)
10
+ PERCENT_LITERAL = %r{[#{Sigils::FORMAT_PREFIX}]{2}}ou # : Regexp -- detects a percent literal
11
+ WHITESPACE = %r{\s}ou # : Regexp -- detects whitespace
12
12
 
13
13
  # Constructor
14
14
  # @rbs urtext: String -- original source code
15
15
  def initialize(urtext = "")
16
- @urtext = urtext.to_s
16
+ @urtext = urtext.to_s.encode(Encoding::UTF_8, invalid: :replace, undef: :replace, replace: "?")
17
17
  end
18
18
 
19
19
  attr_reader :urtext # : String -- original source code
@@ -121,16 +121,22 @@ module Fmt
121
121
  index = scanner.pos
122
122
 
123
123
  until scanner.eos?
124
- if scanner.peek(2).match?(PERCENT_LITERAL)
125
- scanner.pos += 2
124
+ len = 1
125
+ val = nil
126
+ val = scanner.peek(len += 1) until val&.valid_encoding?
127
+ if val&.match? PERCENT_LITERAL
128
+ scanner.pos += len
126
129
  next
127
130
  end
128
131
 
129
- case [index, scanner.pos, scanner.peek(1)]
130
- in [i, pos, Sigils::FORMAT_PREFIX] if i == pos then scanner.pos += 1
132
+ len = 0
133
+ val = nil
134
+ val = scanner.peek(len += 1) until val&.valid_encoding?
135
+ case [index, scanner.pos, val]
136
+ in [i, pos, Sigils::FORMAT_PREFIX] if i == pos then scanner.pos += len
131
137
  in [i, pos, Sigils::FORMAT_PREFIX] if i != pos then break
132
138
  in [i, pos, WHITESPACE] if arguments_balanced?(scanner.string[i...pos]) then break
133
- else scanner.pos += 1
139
+ else scanner.pos += len
134
140
  end
135
141
  end
136
142
 
data/lib/fmt/version.rb CHANGED
@@ -3,5 +3,5 @@
3
3
  # rbs_inline: enabled
4
4
 
5
5
  module Fmt
6
- VERSION = "0.3.3"
6
+ VERSION = "0.3.4"
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fmt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nate Hopkins (hopsoft)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-11 00:00:00.000000000 Z
11
+ date: 2024-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ast