Class: ActsAsExplorable::Parser
- Inherits:
-
Object
- Object
- ActsAsExplorable::Parser
- Defined in:
- lib/acts_as_explorable/parser.rb
Overview
Transforms query strings to a Hash that can be used by ActsAsExplorable.
Instance Attribute Summary collapse
-
#params ⇒ Object
readonly
Returns the value of attribute params.
-
#props ⇒ Object
readonly
Returns the value of attribute props.
-
#values ⇒ Object
readonly
Returns the value of attribute values.
Class Method Summary collapse
-
.transform(query_string, *keys) ⇒ Hash
Returns a transformed query Hash using the given query string.
Instance Method Summary collapse
-
#initialize(query_string) ⇒ Parser
constructor
A new instance of Parser.
-
#parse(*keys) ⇒ Hash
Parses the query string.
Constructor Details
#initialize(query_string) ⇒ Parser
Returns a new instance of Parser.
22 23 24 25 |
# File 'lib/acts_as_explorable/parser.rb', line 22 def initialize(query_string) @query_string = query_string split_query_string end |
Instance Attribute Details
#params ⇒ Object (readonly)
Returns the value of attribute params.
9 10 11 |
# File 'lib/acts_as_explorable/parser.rb', line 9 def params @params end |
#props ⇒ Object (readonly)
Returns the value of attribute props.
9 10 11 |
# File 'lib/acts_as_explorable/parser.rb', line 9 def props @props end |
#values ⇒ Object (readonly)
Returns the value of attribute values.
9 10 11 |
# File 'lib/acts_as_explorable/parser.rb', line 9 def values @values end |
Class Method Details
.transform(query_string, *keys) ⇒ Hash
Returns a transformed query Hash using the given query string
17 18 19 20 |
# File 'lib/acts_as_explorable/parser.rb', line 17 def self.transform(query_string, *keys) instance = new(query_string) instance.parse(*keys) end |
Instance Method Details
#parse(*keys) ⇒ Hash
Parses the query string
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/acts_as_explorable/parser.rb', line 32 def parse(*keys) split_query_string @props.each do |p| key, params = p.split(':').first.to_sym, p.split(':').last.split(',') next if !keys.flatten.include?(key) && !keys.empty? @params[key] ||= [] @params[key] = @params[key] | params.map(&:downcase) end { values: @values, params: @params } end |