Class: Mindee::V2::Parsing::Field::ListField

Inherits:
BaseField show all
Includes:
Enumerable[BaseField]
Defined in:
lib/mindee/v2/parsing/field/list_field.rb,
sig/mindee/v2/parsing/field/list_field.rbs

Overview

Represents a field that contains a list of items.

Instance Attribute Summary collapse

Attributes inherited from BaseField

#confidence, #indent_level, #locations

Instance Method Summary collapse

Methods inherited from BaseField

create_field

Constructor Details

#initialize(server_response, indent_level = 0) ⇒ ListField

Returns a new instance of ListField.

Parameters:

  • Raw server response hash.

  • (defaults to: 0)

    Level of indentation for rst display.

Raises:

  • If the 'items' key is missing or not an array.



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/mindee/v2/parsing/field/list_field.rb', line 17

def initialize(server_response, indent_level = 0)
  super

  unless server_response.key?('items') && server_response['items'].is_a?(Array)
    raise Error::MindeeError,
          "Expected \"items\" to be an array in #{server_response.to_json}."
  end

  @items = []
  server_response['items'].each do |item|
    @items << BaseField.create_field(item, indent_level + 1)
  end
end

Instance Attribute Details

#itemsArray<ListField | ObjectField | SimpleField> (readonly)

Returns Items contained in the list.

Returns:

  • Items contained in the list.



12
13
14
# File 'lib/mindee/v2/parsing/field/list_field.rb', line 12

def items
  @items
end

Instance Method Details

#[]BaseField

Parameters:

Returns:



18
# File 'sig/mindee/v2/parsing/field/list_field.rbs', line 18

def []: (Integer) -> (BaseField)

#each {|arg0| ... } ⇒ Object

Yields:

Yield Parameters:

Yield Returns:

Returns:



17
# File 'sig/mindee/v2/parsing/field/list_field.rbs', line 17

def each: () { (untyped) -> untyped } -> untyped

#empty?Boolean

Returns:



14
# File 'sig/mindee/v2/parsing/field/list_field.rbs', line 14

def empty?: -> bool

#lengthInteger

Returns:



16
# File 'sig/mindee/v2/parsing/field/list_field.rbs', line 16

def length: -> Integer

#object_itemsArray<ObjectField>

Return only object fields.

Returns:

  • Object fields contained in the list.

Raises:

  • If the fields are not ObjectField.



47
48
49
50
51
52
53
54
55
# File 'lib/mindee/v2/parsing/field/list_field.rb', line 47

def object_items
  fields = [] # @type var fields: Array[ObjectField]
  @items.each do |item|
    raise TypeError, "Invalid field type detected: #{item.class}" unless item.is_a?(ObjectField)

    fields << item
  end
  fields
end

#simple_itemsArray<SimpleField>

Return only simple fields.

Returns:

  • Simple fields contained in the list.

Raises:

  • If the fields are not SimpleField.



34
35
36
37
38
39
40
41
42
# File 'lib/mindee/v2/parsing/field/list_field.rb', line 34

def simple_items
  fields = [] # @type var fields: Array[SimpleField]
  @items.each do |item|
    raise TypeError, "Invalid field type detected: #{item.class}" unless item.is_a?(SimpleField)

    fields << item
  end
  fields
end

#sizeInteger

Returns:



15
# File 'sig/mindee/v2/parsing/field/list_field.rbs', line 15

def size: -> Integer

#to_sString

String representation of the list field.

Returns:

  • Formatted string with bullet points for each item.



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/mindee/v2/parsing/field/list_field.rb', line 59

def to_s
  return '' unless @items && !@items.empty?

  parts = ['']
  @items.each do |item|
    next unless item

    parts << if item.is_a?(ObjectField)
               item.to_s_from_list
             else
               item.to_s
             end
  end

  parts.join("\n  * ")
end