Class: JsonMask::CompiledMask

Inherits:
Object
  • Object
show all
Defined in:
lib/json_mask/compiled_mask.rb

Overview

An immutable, reusable field selector.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(fields, selection_tree) ⇒ CompiledMask

Returns a new instance of CompiledMask.



8
9
10
11
12
# File 'lib/json_mask/compiled_mask.rb', line 8

def initialize(fields, selection_tree)
  @fields = fields&.dup&.freeze
  @selection_tree = selection_tree
  freeze
end

Instance Attribute Details

#fieldsObject (readonly)

Returns the value of attribute fields.



6
7
8
# File 'lib/json_mask/compiled_mask.rb', line 6

def fields
  @fields
end

Instance Method Details

#call(value) ⇒ Hash, ... Also known as: filter

Filters a JSON-compatible value using this selector.

Parameters:

  • value (Hash, Array)

    response data to filter

Returns:

  • (Hash, Array, nil)

    a structural subset of value



18
19
20
21
22
# File 'lib/json_mask/compiled_mask.rb', line 18

def call(value)
  return value unless @selection_tree

  Projector.call(value, @selection_tree)
end