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

Inherits:
BaseField
  • Object
show all
Defined in:
lib/mindee/parsing/v2/field/list_field.rb

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:

  • server_response (Hash)

    Raw server response hash.

  • indent_level (Integer) (defaults to: 0)

    Level of indentation for rst display.

Raises:

  • (MindeeError)

    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/parsing/v2/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 Errors::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:



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

def items
  @items
end

Instance Method Details

#object_itemsArray<ObjectField>

Return only object fields.

Returns:

  • (Array<ObjectField>)

    Object fields contained in the list.

Raises:

  • (TypeError)

    If the fields are not ObjectField.



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

def object_items
  fields = []
  @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:

  • (Array<SimpleField>)

    Simple fields contained in the list.

Raises:

  • (TypeError)

    If the fields are not SimpleField.



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

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

    fields << item
  end
  fields
end

#to_sString

String representation of the list field.

Returns:

  • (String)

    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/parsing/v2/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