@@ -6,7 +6,8 @@ module Mindee
66 module Parsing
77 module V2
88 module Field
9- # Collection of inference fields that extends Hash functionality.
9+ # Represents a hash-like collection of inference fields, providing methods for
10+ # retrieval and string representation.
1011 class InferenceFields < Hash
1112 # @return [Integer] Level of indentation for rst display.
1213 attr_reader :indent_level
@@ -29,23 +30,37 @@ def get(key)
2930 self [ key ]
3031 end
3132
32- # Allow dot notation access to fields.
33- # @param method_name [Symbol] The method name (field key).
34- # @return [BaseField, nil] The field or nil if not found.
35- def method_missing ( method_name , *args , &block )
36- key = method_name . to_s
37- if key? ( key )
38- self [ key ]
39- else
40- super
41- end
33+ # Get a field by key and ensure it is a SimpleField.
34+ # @param key [String] Field key to retrieve.
35+ # @return [SimpleField] The SimpleField.
36+ # @raise [TypeError] If the field is not a SimpleField.
37+ def get_simple_field ( key )
38+ field = self [ key ]
39+ raise TypeError , "Field #{ key } is not a SimpleField" unless field . is_a? ( SimpleField )
40+
41+ field
4242 end
4343
44- # Check if method_missing should handle the method.
45- # @param method_name [Symbol] The method name.
46- # @return [Boolean] `true` if the method should be handled.
47- def respond_to_missing? ( method_name , include_private = false )
48- key? ( method_name . to_s ) || super
44+ # Get a field by key and ensure it is a ListField.
45+ # @param key [String] Field key to retrieve.
46+ # @return [ListField] The ListField.
47+ # @raise [TypeError] If the field is not a ListField.
48+ def get_list_field ( key )
49+ field = self [ key ]
50+ raise TypeError , "Field #{ key } is not a ListField" unless field . is_a? ( ListField )
51+
52+ field
53+ end
54+
55+ # Get a field by key and ensure it is an ObjectField.
56+ # @param key [String] Field key to retrieve.
57+ # @return [ObjectField] The ObjectField.
58+ # @raise [TypeError] If the field is not an ObjectField.
59+ def get_object_field ( key )
60+ field = self [ key ]
61+ raise TypeError , "Field #{ key } is not a ObjectField" unless field . is_a? ( ObjectField )
62+
63+ field
4964 end
5065
5166 # rubocop:disable Metrics/CyclomaticComplexity
@@ -64,13 +79,7 @@ def to_s(indent = 0)
6479 line = "#{ padding } :#{ field_key } :"
6580
6681 case ( field_value . class . name || '' ) . split ( '::' ) . last
67- when 'ListField'
68- # Check if ListField has items and they're not empty
69- list_f = field_value # @type var list_f: ListField
70- if defined? ( list_f . items ) && list_f . items && !list_f . items . empty?
71- line += list_f . to_s
72- end
73- when 'ObjectField'
82+ when 'ListField' , 'ObjectField'
7483 line += field_value . to_s
7584 when 'SimpleField'
7685 # Check if SimpleField has a non-empty value
0 commit comments