Class: LinkedRails::CollectionParamsParser

Inherits:
Object
  • Object
show all
Defined in:
lib/linked_rails/collection_params_parser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ CollectionParamsParser

Returns a new instance of CollectionParamsParser.



7
8
9
10
# File 'lib/linked_rails/collection_params_parser.rb', line 7

def initialize(params)
  @user_context = params[:user_context]
  @params = params.is_a?(Hash) ? ActionController::Parameters.new(params) : params
end

Instance Attribute Details

#paramsObject (readonly)

Returns the value of attribute params.



5
6
7
# File 'lib/linked_rails/collection_params_parser.rb', line 5

def params
  @params
end

#user_contextObject (readonly)

Returns the value of attribute user_context.



5
6
7
# File 'lib/linked_rails/collection_params_parser.rb', line 5

def user_context
  @user_context
end

Instance Method Details

#collection_paramsObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/linked_rails/collection_params_parser.rb', line 12

def collection_params
  return @collection_params if instance_variable_defined?(:@collection_params)

  values = permit_params(:display, :page_size, :title, :type)

  filter = filter_params
  values[:filter] = filter if filter

  sort = sorting_params
  values[:sort] = sort if sort

  values[:user_context] = user_context if user_context

  @collection_params = values
end

#collection_view_paramsObject



28
29
30
31
32
33
34
35
36
37
# File 'lib/linked_rails/collection_params_parser.rb', line 28

def collection_view_params
  return @collection_view_params if instance_variable_defined?(:@collection_view_params)

  values = permit_params(:page)

  before = before_params
  values[:before] = before if before

  @collection_view_params = values
end

#filter_paramsObject

rubocop:disable Metrics/AbcSize



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/linked_rails/collection_params_parser.rb', line 39

def filter_params # rubocop:disable Metrics/AbcSize
  return @filter_params if instance_variable_defined?(:@filter_params)

  values = permit_params(filter: [])[:filter] || permit_params(filter: {})[:filter]
  return @filter_params = values if values.is_a?(Hash)
  return @filter_params = {} if values.blank?

  @filter_params = values.each_with_object({}) do |f, hash|
    values = f.split('=')
    key = RDF::URI(CGI.unescape(values.first))
    hash[key] ||= []
    hash[key] << CGI.unescape(values.second)
  end
end