class Apiphobic::Parameters::Include
Attributes
raw_parameters[RW]
Public Class Methods
new(raw_parameters)
click to toggle source
# File lib/apiphobic/parameters/include.rb, line 8 def initialize(raw_parameters) self.raw_parameters = raw_parameters ? raw_parameters.split(',') : [] end
Public Instance Methods
present?()
click to toggle source
# File lib/apiphobic/parameters/include.rb, line 12 def present? raw_parameters.any? end
to_a()
click to toggle source
# File lib/apiphobic/parameters/include.rb, line 16 def to_a @to_a ||= map_inclusions( raw_parameters .reject(&:empty?) .compact, ) end
Private Instance Methods
map_inclusions(array)
click to toggle source
rubocop:disable Metrics/PerceivedComplexity, rubocop:disable Metrics/BlockNesting
# File lib/apiphobic/parameters/include.rb, line 28 def map_inclusions(array) mapped = array.each_with_object([{}]) do |inclusion, memo| if inclusion.is_a?(::Hash) memo[0] = inclusion else first, _match, rest = inclusion.partition('.') if rest == '' memo << first else memo.delete(first) memo[0][first] = if memo[0][first].nil? rest else map_inclusions(Array(memo[0][first]) << rest) end end end end mapped.shift if mapped[0] == {} mapped end