class IMS::LTI::Serializers::Base::Filter

Public Class Methods

new() click to toggle source
# File lib/ims/lti/serializers/base.rb, line 4
def initialize
  @optionals = Set.new
  @keys = {}
  @serializables = Set.new
  @serializable_lists = Set.new
end

Public Instance Methods

add_filter(name, opts={}) click to toggle source
# File lib/ims/lti/serializers/base.rb, line 11
def add_filter(name, opts={})
  @optionals.add(name) if opts[:optional]
  @keys[name] = opts[:key] if opts[:key]
  @serializables.add(name) if opts[:serializable]
  @serializable_lists.add(name) if opts[:list_of_serializables]
end
filter(hash) click to toggle source
# File lib/ims/lti/serializers/base.rb, line 27
def filter(hash)
  hash = optionals(hash)
  hash = serializables(hash)
  hash = serializable_lists(hash)
  keys(hash) # Needs to happen last
end
options_for_attribute(attribute) click to toggle source
# File lib/ims/lti/serializers/base.rb, line 18
def options_for_attribute(attribute)
  options = {}
  options[:optional] = @optionals.include?(attribute) ? true : false
  options[:key] = @keys[attribute]
  options[:has_serializable] = @serializables.include?(attribute) ? true : false
  options[:has_list_of_serializables] = @serializable_lists.include?(attribute) ? true : false
  options
end

Private Instance Methods

keys(hash) click to toggle source
# File lib/ims/lti/serializers/base.rb, line 63
def keys(hash)
  hash.reduce({}) do |memo, (k, v)|
    key = @keys.include?(k) ? @keys[k] : k
    memo[key] = v
    memo
  end
end
optionals(hash) click to toggle source
# File lib/ims/lti/serializers/base.rb, line 35
def optionals(hash)
  hash.reject { |k, v| @optionals.include?(k) && v.nil? }
end
serializable_lists(hash) click to toggle source
# File lib/ims/lti/serializers/base.rb, line 51
def serializable_lists(hash)
  hash.reduce({}) do |memo, (k, v)|
    memo[k] = @serializable_lists.include?(k) ? serialize_serializable_list(v) : v
    memo
  end
end
serializables(hash) click to toggle source
# File lib/ims/lti/serializers/base.rb, line 39
def serializables(hash)
  hash.reduce({}) do |memo, (k, v)|
    memo[k] = @serializables.include?(k) ? serialize_serializable(v) : v
    memo
  end
end
serialize_serializable(serializable) click to toggle source
# File lib/ims/lti/serializers/base.rb, line 46
def serialize_serializable(serializable)
  return if serializable.nil?
  serializable.as_json
end
serialize_serializable_list(list) click to toggle source
# File lib/ims/lti/serializers/base.rb, line 58
def serialize_serializable_list(list)
  return if list.nil?
  list.map(&:as_json)
end