curly_bracket_parser 0.9.2 → 1.0.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: 378a04d38936fc44f74b1f4f970d098865a2a48c32cc61632c2fcf399fcec705
4
- data.tar.gz: 68afedba437f8b335793bb45f1bb64c6c7b5a6846e33224b52eed05db042fe49
3
+ metadata.gz: dbc6e9152c4a5928dd20a24cc8cb59ace5b9c5b5b66204b118061b28cff3f33b
4
+ data.tar.gz: 851fa1b633944e37968d31755b786939bea79afa624b4e2135167bb3e832555c
5
5
  SHA512:
6
- metadata.gz: 955864e2612341beb012f20e79aa439ec44c90e59e39bb0b54bcd813b0d680f22d8c24f23337697e1d4caabbed4dfdc5f2791ac8358afabd985d66914941b47c
7
- data.tar.gz: 750d7cbd409660d96ad623c9b86d8fed53f9efae81cb268a2bf0b77454ad80abfd515f16bb6d15e1b9d4f7aca6c055bf6dee6e0a75fbdd6368d59292f3f0198d
6
+ metadata.gz: 162491b1ca8833964b29e38482806b479f6f1ab5d9f0505368ce83b219e9fe3953d2a03aac4d592ade1ad5182365ca344c471f5847cb9abd36a849dd0c8925f5
7
+ data.tar.gz: 697839790e56524019c7e35a2ebb58f441f27f74458cfbf2d6f4bf1e91d038e777368b9a637f20c2d48d7fe022baa3d8188ac439d400bf524989cb28731812a3
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2020 Matthäus J. N. Beyrle
3
+ Copyright (c) 2020-2021 Matthäus J. N. Beyrle
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,6 +1,9 @@
1
1
  # curly_bracket_parser
2
+ ![Gem](https://img.shields.io/gem/v/curly_bracket_parser?color=default&style=plastic&logo=ruby&logoColor=red)
3
+ ![Gem](https://img.shields.io/gem/dt/curly_bracket_parser?color=blue&style=plastic)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-gold.svg?style=plastic&logo=mit)](LICENSE)
2
5
 
3
- Ruby gem providing a simple parser to replace curly brackets `{{like_this}}` inside strings like URLs, texts or even files easily.
6
+ > Ruby gem providing a simple parser to replace curly brackets `{{like_this}}` inside strings like URLs, texts or even files easily.
4
7
 
5
8
  Additional support for build-in filters and custom filters make them more powerful. `{{example|my_filter}}`
6
9
 
@@ -1,3 +1,3 @@
1
1
  module CurlyBracketParser
2
- VERSION = '0.9.2'.freeze
2
+ VERSION = '1.0.4'.freeze
3
3
  end
@@ -37,10 +37,14 @@ module CurlyBracketParser
37
37
  def self.parse(string, variables, unresolved_vars: :raise, replace_pattern: "##\\1##")
38
38
  variables ||= {}
39
39
  result_string = string.clone
40
+ # symbolize keys
41
+ variables = variables.map { |key, value| [key.to_sym, value] }.to_h
40
42
  if CurlyBracketParser.any_variable_included? string
41
43
  loop do
42
- variables(string).each do |string_var|
43
- name, filter = decode_variable(string_var)
44
+ variables(result_string).each do |string_var|
45
+ dec = decode_variable(string_var)
46
+ name = dec[:name]
47
+ filter = dec[:filter]
44
48
  if variables[name.to_sym]
45
49
  value = if filter
46
50
  process_filter(filter, variables[name.to_sym])
@@ -54,7 +58,9 @@ module CurlyBracketParser
54
58
  end
55
59
  end
56
60
  # break if no more given variable is available
57
- break unless any_variable_included?(string) && includes_one_variable_of(variables, string)
61
+ unless any_variable_included?(result_string) && includes_one_variable_of(variables.keys, result_string)
62
+ break
63
+ end
58
64
  end
59
65
  case unresolved_vars
60
66
  when :raise
@@ -212,11 +218,16 @@ module CurlyBracketParser
212
218
  # Unregister / remove an existing default variable
213
219
  #
214
220
  # @param [String] name of the variable
221
+ # @return [Boolean] true if variable existed and was unregistered, false if it didn't exist
215
222
  def self.unregister_default_var(name)
216
223
  @@registered_default_vars ||= {}
217
224
  name = name.to_s
218
- @@registered_default_vars.delete(name)
219
- nil
225
+ if @@registered_default_vars[name]
226
+ @@registered_default_vars.delete(name)
227
+ true
228
+ else
229
+ false
230
+ end
220
231
  end
221
232
 
222
233
  #----------------------------------------------------------------------------------------------------
@@ -247,26 +258,30 @@ module CurlyBracketParser
247
258
  # '{{var_name|filter_name}}' => { name: 'var_name', filter: 'filter_name' }
248
259
  #
249
260
  # @param [String] variable
250
- # @return [Array(String, String)] name, filter
261
+ # @return [Hash<String => String>] name, filter
251
262
  def self.decode_variable(variable)
252
- var = decoded_variables(variable).first
253
- [var.keys.first, var.values.first]
263
+ decoded_variables(variable).first
254
264
  end
255
265
 
256
266
  #----------------------------------------------------------------------------------------------------
257
267
 
258
- # scans the given url for variables with pattern '{{var}}'
268
+ # Scans the given url for variables with pattern '{{var|optional_filter}}'
269
+ #
270
+ # @example
271
+ # 'The variable {{my_var|my_filter}} is inside this string' => [{ name: "my_var", filter: "my_filter"}]
272
+ #
259
273
  # @param [String] string to scan
260
274
  # @return [Array<Hash<Symbol => String>>] array of variable names and its filters
261
275
  def self.decoded_variables(string)
262
- var_name = 0
263
- var_filter = 1
264
- string.scan(VARIABLE_DECODER_REGEX).map { |e| { "#{e[var_name].strip}": e[var_filter].strip != '' ? e[var_filter].strip : nil } }.flatten
276
+ var_name_index = 0
277
+ var_filter_index = 1
278
+ string.scan(VARIABLE_DECODER_REGEX).map { |e| { name: "#{e[var_name_index].strip}", filter: e[var_filter_index].strip != '' ? e[var_filter_index].strip : nil } }.flatten
265
279
  end
266
280
 
267
281
  #----------------------------------------------------------------------------------------------------
268
282
 
269
- # scans the given url for variables with pattern '{{var}}'
283
+ # Scans the given url for variables with pattern '{{var|optional_filter}}'
284
+ #
270
285
  # @param [String] string to scan
271
286
  # @return [Array<String>] array of variable names and its filters
272
287
  def self.variables(string)
@@ -276,7 +291,8 @@ module CurlyBracketParser
276
291
  #----------------------------------------------------------------------------------------------------
277
292
 
278
293
  # Check if any variable is included in the given string
279
- # @param [Object] string
294
+ #
295
+ # @param [String] string name of variable to check for
280
296
  # @return [Boolean] true if any variable is included in the given string, otherwise false
281
297
  def self.any_variable_included?(string)
282
298
  string.match(VARIABLE_REGEX) != nil
@@ -285,12 +301,13 @@ module CurlyBracketParser
285
301
  #----------------------------------------------------------------------------------------------------
286
302
 
287
303
  # Check if one of the given variable names is included in the given string
304
+ #
288
305
  # @param [Array<String>] variable_names
289
- # @param [String] string
306
+ # @param [String] string name of variable to check for
290
307
  # @return [Boolean] true if one given variable name is included in given the string, otherwise false
291
308
  def self.includes_one_variable_of(variable_names, string)
292
309
  decoded_variables(string).each do |dvar|
293
- return true if variable_names.include?(dvar[:name])
310
+ return true if variable_names.map(&:to_sym).include?(dvar[:name].to_sym)
294
311
  end
295
312
  false
296
313
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curly_bracket_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthäus Beyrle
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-10 00:00:00.000000000 Z
11
+ date: 2022-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lucky_case
@@ -110,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  requirements: []
113
- rubygems_version: 3.0.8
113
+ rubygems_version: 3.1.4
114
114
  signing_key:
115
115
  specification_version: 4
116
116
  summary: Simple parser to replace variables inside templates/strings and files