curly_bracket_parser 0.9.2 → 0.9.9
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 +4 -4
- data/lib/curly_bracket_parser.rb +26 -13
- data/lib/curly_bracket_parser/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c287b3fc82c91116b7c0ca2f982b81bac5c37e4ca286cd1ea8606de75e0c214f
|
4
|
+
data.tar.gz: 04f59765b1f59ea540d1e152bbc88c0294ca5adc681f30bf1efed3a117cb3afa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 685345c3a8551e0749742550f2dae6784501fefa07318b8e76b2b30fd743c96d1571d2550bee0731a1c1609d82055ec39ff943a6aebf3c39db435d4686d8e01c
|
7
|
+
data.tar.gz: a19c4ffb4fe23ce4945023604aeb34ee28a88bd6f89cf2df08f5eab63151fbb0f1ec6b7ec337f6cc8c0b8d2b57c8dacbfec19cbec7b70b22d68cc8b4caf965c6
|
data/lib/curly_bracket_parser.rb
CHANGED
@@ -40,7 +40,9 @@ module CurlyBracketParser
|
|
40
40
|
if CurlyBracketParser.any_variable_included? string
|
41
41
|
loop do
|
42
42
|
variables(string).each do |string_var|
|
43
|
-
|
43
|
+
dec = decode_variable(string_var)
|
44
|
+
name = dec[:name]
|
45
|
+
filter = dec[:filter]
|
44
46
|
if variables[name.to_sym]
|
45
47
|
value = if filter
|
46
48
|
process_filter(filter, variables[name.to_sym])
|
@@ -212,11 +214,16 @@ module CurlyBracketParser
|
|
212
214
|
# Unregister / remove an existing default variable
|
213
215
|
#
|
214
216
|
# @param [String] name of the variable
|
217
|
+
# @return [Boolean] true if variable existed and was unregistered, false if it didn't exist
|
215
218
|
def self.unregister_default_var(name)
|
216
219
|
@@registered_default_vars ||= {}
|
217
220
|
name = name.to_s
|
218
|
-
@@registered_default_vars
|
219
|
-
|
221
|
+
if @@registered_default_vars[name]
|
222
|
+
@@registered_default_vars.delete(name)
|
223
|
+
true
|
224
|
+
else
|
225
|
+
false
|
226
|
+
end
|
220
227
|
end
|
221
228
|
|
222
229
|
#----------------------------------------------------------------------------------------------------
|
@@ -247,26 +254,30 @@ module CurlyBracketParser
|
|
247
254
|
# '{{var_name|filter_name}}' => { name: 'var_name', filter: 'filter_name' }
|
248
255
|
#
|
249
256
|
# @param [String] variable
|
250
|
-
# @return [
|
257
|
+
# @return [Hash<String => String>] name, filter
|
251
258
|
def self.decode_variable(variable)
|
252
|
-
|
253
|
-
[var.keys.first, var.values.first]
|
259
|
+
decoded_variables(variable).first
|
254
260
|
end
|
255
261
|
|
256
262
|
#----------------------------------------------------------------------------------------------------
|
257
263
|
|
258
|
-
#
|
264
|
+
# Scans the given url for variables with pattern '{{var|optional_filter}}'
|
265
|
+
#
|
266
|
+
# @example
|
267
|
+
# 'The variable {{my_var|my_filter}} is inside this string' => [{ name: "my_var", filter: "my_filter"}]
|
268
|
+
#
|
259
269
|
# @param [String] string to scan
|
260
270
|
# @return [Array<Hash<Symbol => String>>] array of variable names and its filters
|
261
271
|
def self.decoded_variables(string)
|
262
|
-
|
263
|
-
|
264
|
-
string.scan(VARIABLE_DECODER_REGEX).map { |e| { "#{e[
|
272
|
+
var_name_index = 0
|
273
|
+
var_filter_index = 1
|
274
|
+
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
275
|
end
|
266
276
|
|
267
277
|
#----------------------------------------------------------------------------------------------------
|
268
278
|
|
269
|
-
#
|
279
|
+
# Scans the given url for variables with pattern '{{var|optional_filter}}'
|
280
|
+
#
|
270
281
|
# @param [String] string to scan
|
271
282
|
# @return [Array<String>] array of variable names and its filters
|
272
283
|
def self.variables(string)
|
@@ -276,7 +287,8 @@ module CurlyBracketParser
|
|
276
287
|
#----------------------------------------------------------------------------------------------------
|
277
288
|
|
278
289
|
# Check if any variable is included in the given string
|
279
|
-
#
|
290
|
+
#
|
291
|
+
# @param [String] string name of variable to check for
|
280
292
|
# @return [Boolean] true if any variable is included in the given string, otherwise false
|
281
293
|
def self.any_variable_included?(string)
|
282
294
|
string.match(VARIABLE_REGEX) != nil
|
@@ -285,8 +297,9 @@ module CurlyBracketParser
|
|
285
297
|
#----------------------------------------------------------------------------------------------------
|
286
298
|
|
287
299
|
# Check if one of the given variable names is included in the given string
|
300
|
+
#
|
288
301
|
# @param [Array<String>] variable_names
|
289
|
-
# @param [String] string
|
302
|
+
# @param [String] string name of variable to check for
|
290
303
|
# @return [Boolean] true if one given variable name is included in given the string, otherwise false
|
291
304
|
def self.includes_one_variable_of(variable_names, string)
|
292
305
|
decoded_variables(string).each do |dvar|
|