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