Class: Serega::SeregaPlugins::StringModifiers::ParseStringModifiers
- Inherits:
-
Object
- Object
- Serega::SeregaPlugins::StringModifiers::ParseStringModifiers
- Defined in:
- lib/serega/plugins/string_modifiers/parse_string_modifiers.rb
Overview
Modifiers parser
Class Method Summary collapse
-
.call(fields) ⇒ Hash
Parses provided fields.
Instance Method Summary collapse
-
#parse(fields) ⇒ Hash
Parses string modifiers.
Class Method Details
.call(fields) ⇒ Hash
Parses provided fields
33 34 35 36 37 |
# File 'lib/serega/plugins/string_modifiers/parse_string_modifiers.rb', line 33 def self.call(fields) return fields unless fields.is_a?(String) new.parse(fields) end |
Instance Method Details
#parse(fields) ⇒ Hash
Parses string modifiers
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/serega/plugins/string_modifiers/parse_string_modifiers.rb', line 52 def parse(fields) res = {} attribute = +"" path_stack = nil fields.each_char do |char| case char when "," add_attribute(res, path_stack, attribute, FROZEN_EMPTY_HASH) when ")" add_attribute(res, path_stack, attribute, FROZEN_EMPTY_HASH) path_stack&.pop when "(" name = add_attribute(res, path_stack, attribute, {}) (path_stack ||= []).push(name) if name else attribute.insert(-1, char) end end add_attribute(res, path_stack, attribute, FROZEN_EMPTY_HASH) res end |