Class: CocinaDisplay::JsonBackedRecord

Inherits:
Object
  • Object
show all
Defined in:
lib/cocina_display/json_backed_record.rb

Overview

Superclass for metadata records backed by a Cocina JSON document.

Direct Known Subclasses

CocinaRecord, RelatedResource

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cocina_doc) ⇒ JsonBackedRecord

Initialize a record with a Cocina document hash.

Examples:

Initialize a record with a Cocina document

cocina = Cocina.find(id)
record = CocinaDisplay::CocinaDisplay.new(cocina.as_json)

Parameters:

  • cocina_doc (Hash<String, Object>)

    The Cocina document hash



15
16
17
# File 'lib/cocina_display/json_backed_record.rb', line 15

def initialize(cocina_doc)
  @cocina_doc = cocina_doc
end

Instance Attribute Details

#cocina_docHash (readonly)

The parsed Cocina document.

Returns:

  • (Hash)


8
9
10
# File 'lib/cocina_display/json_backed_record.rb', line 8

def cocina_doc
  @cocina_doc
end

Instance Method Details

#path(path_expression) ⇒ Enumerator

Evaluate a JSONPath expression against the Cocina document.

Examples:

Name values for contributors

record.path("$.description.contributor.*.name.*.value").search #=> ["Smith, John", "ACME Corp."]

Filtering nodes using a condition

record.path("$.description.contributor[?(@.type == 'person')].name.*.value").search #=> ["Smith, John"]

Parameters:

  • path_expression (String)

    The JSONPath expression to evaluate.

Returns:

  • (Enumerator)

    An enumerator that yields results matching the expression.

See Also:



27
28
29
# File 'lib/cocina_display/json_backed_record.rb', line 27

def path(path_expression)
  Janeway.enum_for(path_expression, cocina_doc)
end

#textString

Note:

Used for ‘all search’ fields in indexing.

Flattened, normalized aggregation of all node texts in the Cocina document.

Returns:

  • (String)


34
35
36
# File 'lib/cocina_display/json_backed_record.rb', line 34

def text
  node_texts.compact.join(" ").gsub(/\s+/, " ").strip
end