Skip to content

Commit c8f8c30

Browse files
✨ add list field convenience accessor for object field (#225)
1 parent 00476e0 commit c8f8c30

5 files changed

Lines changed: 19 additions & 3 deletions

File tree

lib/mindee/parsing/v2/field/object_field.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,17 @@ def multi_str
8585
def get_simple_field(key)
8686
@fields.get_simple_field(key)
8787
end
88+
89+
# Get a field by key and ensure it is a ListField.
90+
# @param key [String] Field key to retrieve.
91+
# @return [ListField] The ListField.
92+
# @raise [TypeError] If the field is not a ListField.
93+
def get_list_field(key)
94+
field = @fields.get_list_field(key)
95+
raise TypeError, "Field #{key} is not a ListField" unless field.is_a?(ListField)
96+
97+
field
98+
end
8899
end
89100
end
90101
end

sig/mindee/parsing/v2/field/object_field.rbs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ module Mindee
88
class ObjectField < BaseField
99
attr_reader fields: InferenceFields
1010
def initialize: (Hash[String | Symbol, untyped], ?Integer) -> void
11+
12+
def get_list_field: (String) -> ListField
13+
1114
def get_simple_field: (String) -> SimpleField
1215
def multi_str: -> String
1316
def single_str: -> String

spec/data

spec/v2/input/local_response_v2_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
def assert_local_response(local_response)
77
dummy_secret_key = 'ogNjY44MhvKPGTtVsI8zG82JqWQa68woYQH'
8-
signature = '1df388c992d87897fe61dfc56c444c58fc3c7369c31e2b5fd20d867695e93e85'
8+
signature = 'f390d9f7f57ac04f47b6309d8a40236b0182610804fc20e91b1f6028aaca07a7'
99
expect(local_response.file).to_not be(nil)
1010
expect(local_response.valid_hmac_signature?(
1111
dummy_secret_key, 'invalid signature'

spec/v2/parsing/inference_spec.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,11 @@ def load_v2_inference(resource_path)
149149
expect(fields['field_object']).to be_a(object_field)
150150

151151
field_object = fields.get_object_field('field_object')
152+
expect(field_object.get_list_field('sub_object_list')).to be_a(list_field)
152153
lvl1 = field_object.fields
153-
154154
expect(lvl1['sub_object_list']).to be_a(list_field)
155+
expect(lvl1['sub_object_list'].items).not_to be_empty
156+
expect(lvl1['sub_object_list'].items[0]).to be_a(object_field)
155157
expect(lvl1['sub_object_object']).to be_a(object_field)
156158

157159
sub_object_object = lvl1.get_object_field('sub_object_object')

0 commit comments

Comments
 (0)