howzit 2.1.0 → 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: d61fbc8c08077a6d9e5496fb94c91b051ef02fb258ad162ad6588a73a4ae2e30
4
- data.tar.gz: a6512e0efcd43bc57236d7bcbaa7c99baf9825630638b45cb936132fed932b03
3
+ metadata.gz: 23a304a27d457b410c8764ed0b83f0a00e2e6e9108ba3fd4a7bef722695d8607
4
+ data.tar.gz: 2041090127040e2315691750de2ee9ccaf3d770a7b8561d328f573e78e633a50
5
5
  SHA512:
6
- metadata.gz: 40aa758d7549cb6a2d6b8e6a3c6f9e38aafe377db0c3e2923948dc4981e0b601553c79e73a1e46e097c98f250792bc28b07693a5d3c99b60280cea207322956e
7
- data.tar.gz: 07d0d4dbae06e9c9019d7ee74dab8b8b0ffa99d328f416a31566dcdc2741f411507f1be42ba5906a40231c31158eb7de3cc8d156a3e9b5e7e2941a54603a8812
6
+ metadata.gz: 8dda575709255dec600f6ba6f259c856b67ab91d9418fbcbc374f85a8eaa6a2842ac8a0b9bdd22a5eec9621e17353b6f2dfa7bc7b6f9b7de9d0c64006d5a27b1
7
+ data.tar.gz: 236c40bbd997c4bd956aa9796999771b965907add10b208929ba45a09c04679126177232dce1a5d29d15cec4ebfd09315b8bc274e588b0fccc02a938395731ef
data/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ ### 2.1.2
2
+
3
+ 2023-03-07 10:24
4
+
5
+ #### IMPROVED
6
+
7
+ - Merge metadata into named variables so they're also available as ${NAME}
8
+
9
+ ### 2.1.1
10
+
11
+ 2023-03-07 09:47
12
+
13
+ #### FIXED
14
+
15
+ - Allow variables names to contain numbers and underscores
16
+
1
17
  ### 2.1.0
2
18
 
3
19
  2023-03-07 09:24
data/lib/howzit/colors.rb CHANGED
@@ -227,7 +227,7 @@ module Howzit
227
227
  def template(input)
228
228
  input = input.join(' ') if input.is_a? Array
229
229
  fmt = input.gsub(/%/, '%%')
230
- fmt = fmt.gsub(/(?<!\\u)\{(\w+)\}/i) do
230
+ fmt = fmt.gsub(/(?<!\\u|\$)\{(\w+)\}/i) do
231
231
  Regexp.last_match(1).split('').map { |c| "%<#{c}>s" }.join('')
232
232
  end
233
233
 
@@ -242,25 +242,25 @@ module Howzit
242
242
  ##
243
243
  def render_arguments
244
244
  str = dup
245
- str.gsub!(/\$\{(?<name>[A-Z]+(?::.*?)?)\}/i) do |mtch|
245
+ str.render_named_placeholders
246
+ str.render_numeric_placeholders
247
+ Howzit.arguments.nil? ? str : str.gsub(/\$[@*]/, Shellwords.join(Howzit.arguments))
248
+ end
249
+
250
+ def render_named_placeholders
251
+ gsub!(/\$\{(?<name>[A-Z0-9_]+(?::.*?)?)\}/i) do
246
252
  m = Regexp.last_match
247
253
  arg, default = m['name'].split(/:/).map(&:strip)
248
254
  Howzit.named_arguments.key?(arg) && !Howzit.named_arguments[arg].nil? ? Howzit.named_arguments[arg] : default
249
255
  end
256
+ end
250
257
 
251
- str.gsub!(/\$\{?(\d+)\}?/) do
252
- m = Regexp.last_match
253
- arg, default = m[1].split(/:/)
258
+ def render_numeric_placeholders
259
+ gsub!(/\$\{?(\d+)\}?/) do
260
+ arg, default = Regexp.last_match(1).split(/:/)
254
261
  idx = arg.to_i - 1
255
- if Howzit.arguments.length > idx
256
- Howzit.arguments[idx]
257
- elsif default
258
- default
259
- else
260
- m[0]
261
- end
262
+ Howzit.arguments.length > idx ? Howzit.arguments[idx] : default || Regexp.last_match(0)
262
263
  end
263
- Howzit.arguments.nil? ? str : str.gsub(/\$[@*]/, Shellwords.join(Howzit.arguments))
264
264
  end
265
265
 
266
266
  ##
@@ -289,7 +289,10 @@ module Howzit
289
289
  scan(/(?mi)^(\S[\s\S]+?): ([\s\S]*?)(?=\n\S[\s\S]*?:|\Z)/).each do |m|
290
290
  data[m[0].strip.downcase] = m[1]
291
291
  end
292
- normalize_metadata(data)
292
+ out = normalize_metadata(data)
293
+ Howzit.named_arguments ||= {}
294
+ Howzit.named_arguments = out.merge(Howzit.named_arguments)
295
+ out
293
296
  end
294
297
 
295
298
  ##
@@ -3,5 +3,5 @@
3
3
  # Primary module for this gem.
4
4
  module Howzit
5
5
  # Current Howzit version.
6
- VERSION = '2.1.0'
6
+ VERSION = '2.1.2'
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: howzit
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Terpstra