class LinkedRails::ParamsParser

Attributes

params[R]
user_context[R]

Public Class Methods

new(params) click to toggle source
# File lib/linked_rails/params_parser.rb, line 7
def initialize(params)
  @user_context = params[:user_context]
  @params = params.is_a?(Hash) ? ActionController::Parameters.new(params) : params
end

Public Instance Methods

before_params() click to toggle source
# File lib/linked_rails/params_parser.rb, line 12
def before_params
  return @before_params if instance_variable_defined?(:@before_params)

  values = permit_params(before: [])[:before]
  return @before_params = nil if values.blank?

  @before_params = values.map do |f|
    key, value = f.split('=')
    {key: RDF::URI(CGI.unescape(key)), value: value}
  end
end
collection_params() click to toggle source
# File lib/linked_rails/params_parser.rb, line 24
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_params() click to toggle source
# File lib/linked_rails/params_parser.rb, line 40
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_params() click to toggle source
# File lib/linked_rails/params_parser.rb, line 51
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
sorting_params() click to toggle source
# File lib/linked_rails/params_parser.rb, line 66
def sorting_params
  return @sorting_params if instance_variable_defined?(:@sorting_params)

  values = permit_params(sort: [])[:sort]
  return @sorting_params = nil if values.blank?

  @sorting_params = values.map do |f|
    parse_filter_value(f)
  end
end

Private Instance Methods

parse_filter_value(value) click to toggle source
# File lib/linked_rails/params_parser.rb, line 79
def parse_filter_value(value)
  return value if value.is_a?(Hash)

  key, value = value.split('=')
  {key: RDF::URI(CGI.unescape(key)), direction: value}
end
permit_params(*keys) click to toggle source
# File lib/linked_rails/params_parser.rb, line 86
def permit_params(*keys)
  params
    .permit(*keys)
    .to_h
    .with_indifferent_access
end