Class: Grape::Entity::Options
- Inherits:
-
Object
- Object
- Grape::Entity::Options
- Extended by:
- Forwardable
- Defined in:
- lib/grape_entity/options.rb
Instance Attribute Summary collapse
-
#opts_hash ⇒ Object
readonly
Returns the value of attribute opts_hash.
Instance Method Summary collapse
- #==(other) ⇒ Object
- #except_fields(for_key = nil) ⇒ Object
- #for_nesting(key) ⇒ Object
-
#initialize(opts_hash = {}) ⇒ Options
constructor
A new instance of Options.
- #merge(new_opts) ⇒ Object
- #only_fields(for_key = nil) ⇒ Object
- #reverse_merge(new_opts) ⇒ Object
- #should_return_key?(key) ⇒ Boolean
- #with_attr_path(part) ⇒ Object
Constructor Details
#initialize(opts_hash = {}) ⇒ Options
Returns a new instance of Options.
14 15 16 17 18 19 20 |
# File 'lib/grape_entity/options.rb', line 14 def initialize(opts_hash = {}) @opts_hash = opts_hash @has_only = !opts_hash[:only].nil? @has_except = !opts_hash[:except].nil? @for_nesting_cache = {} @should_return_key_cache = {} end |
Instance Attribute Details
#opts_hash ⇒ Object (readonly)
Returns the value of attribute opts_hash.
10 11 12 |
# File 'lib/grape_entity/options.rb', line 10 def opts_hash @opts_hash end |
Instance Method Details
#==(other) ⇒ Object
46 47 48 49 |
# File 'lib/grape_entity/options.rb', line 46 def ==(other) other_hash = other.is_a?(Options) ? other.opts_hash : other @opts_hash == other_hash end |
#except_fields(for_key = nil) ⇒ Object
75 76 77 78 79 80 81 82 83 |
# File 'lib/grape_entity/options.rb', line 75 def except_fields(for_key = nil) return nil unless @has_except @except_fields ||= @opts_hash[:except].each_with_object({}) do |attribute, allowed_fields| build_symbolized_hash(attribute, allowed_fields) end only_for_given(for_key, @except_fields) end |
#for_nesting(key) ⇒ Object
61 62 63 |
# File 'lib/grape_entity/options.rb', line 61 def for_nesting(key) @for_nesting_cache[key] ||= build_for_nesting(key) end |
#merge(new_opts) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/grape_entity/options.rb', line 22 def merge(new_opts) return self if new_opts.empty? merged = if new_opts.instance_of? Options @opts_hash.merge(new_opts.opts_hash) else @opts_hash.merge(new_opts) end Options.new(merged) end |
#only_fields(for_key = nil) ⇒ Object
65 66 67 68 69 70 71 72 73 |
# File 'lib/grape_entity/options.rb', line 65 def only_fields(for_key = nil) return nil unless @has_only @only_fields ||= @opts_hash[:only].each_with_object({}) do |attribute, allowed_fields| build_symbolized_hash(attribute, allowed_fields) end only_for_given(for_key, @only_fields) end |
#reverse_merge(new_opts) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/grape_entity/options.rb', line 34 def reverse_merge(new_opts) return self if new_opts.empty? merged = if new_opts.instance_of? Options new_opts.opts_hash.merge(@opts_hash) else new_opts.merge(@opts_hash) end Options.new(merged) end |
#should_return_key?(key) ⇒ Boolean
51 52 53 54 55 56 57 58 59 |
# File 'lib/grape_entity/options.rb', line 51 def should_return_key?(key) return true unless @has_only || @has_except only = only_fields.nil? || only_fields.key?(key) except = except_fields&.key?(key) && except_fields[key] == true only && !except end |
#with_attr_path(part) ⇒ Object
85 86 87 88 89 90 91 92 93 |
# File 'lib/grape_entity/options.rb', line 85 def with_attr_path(part) return yield unless part stack = (opts_hash[:attr_path] ||= []) stack.push part result = yield stack.pop result end |