Module: JsonMask

Defined in:
lib/json_mask.rb,
lib/json_mask/error.rb,
lib/json_mask/parser.rb,
lib/json_mask/version.rb,
lib/json_mask/projector.rb,
lib/json_mask/compiled_mask.rb,
lib/json_mask/selection_tree.rb

Overview

Filters JSON-compatible Ruby values using Google partial-response selectors.

Defined Under Namespace

Classes: CompiledMask, LimitError, ParseError

Constant Summary collapse

VERSION =
'0.1.0'

Class Method Summary collapse

Class Method Details

.call(value, fields, **options) ⇒ Hash, ... Also known as: mask

Filters a JSON-compatible value with a field selector.

Parameters:

  • value (Hash, Array)

    response data to filter

  • fields (String, nil)

    fields selector; blank values pass through unchanged

Returns:

  • (Hash, Array, nil)

    a structural subset of value



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

def call(value, fields, **options)
  compile(fields, **options).call(value)
end

.compile(fields, max_length: Parser::DEFAULT_MAX_LENGTH, max_depth: Parser::DEFAULT_MAX_DEPTH, max_selectors: Parser::DEFAULT_MAX_SELECTORS) ⇒ CompiledMask

Compiles a selector for reuse across multiple values.

Returns:

Raises:

  • (ParseError)

    if the selector is malformed

  • (LimitError)

    if the selector exceeds a configured limit



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/json_mask.rb', line 29

def compile(
  fields,
  max_length: Parser::DEFAULT_MAX_LENGTH,
  max_depth: Parser::DEFAULT_MAX_DEPTH,
  max_selectors: Parser::DEFAULT_MAX_SELECTORS
)
  selection_tree = Parser.new(
    fields,
    max_length:,
    max_depth:,
    max_selectors:
  ).parse

  CompiledMask.new(fields, selection_tree)
end