@@ -9,6 +9,15 @@ def initialize row
99 @row = row
1010 end
1111
12+ def convert_type node_type , value
13+ case node_type
14+ when 'Boolean' then
15+ value ==1
16+ else
17+ value
18+ end
19+ end
20+
1221 end
1322
1423
@@ -55,7 +64,7 @@ def match_elements response_class, definition, elements
5564
5665 index = Hash [ elements . collect { |element |
5766 value = if element . children . empty?
58- @key_map [ element . key ]
67+ [ @key_map [ element . key ] , element . context_node . definition . type . name ]
5968 else
6069 build_response_class element
6170 end
@@ -67,8 +76,8 @@ def match_elements response_class, definition, elements
6776 key = ast_node . alias || ast_node . name
6877 if ( value = index [ key ] ) . kind_of? Class
6978 value . new @row
70- elsif value . kind_of? Integer
71- @row [ value ]
79+ elsif value . kind_of? Array
80+ convert_type value . second , @row [ value . first ]
7281 else
7382 raise ArgumentError , "Unexpected request to #{ definition } by key #{ key } "
7483 end
@@ -88,14 +97,14 @@ def sub_element response_class, definition, element
8897
8998 def simple_value response_class , definition , element
9099 index = @key_map [ element . key ]
100+ node_type = element . context_node . definition . type . name
91101 response_class . class_eval do
92102 define_method definition . underscore do |**rest_of_options |
93- @row [ index ]
103+ convert_type node_type , @row [ index ]
94104 end
95105 end
96106 end
97107
98108
99-
100109 end
101110end
0 commit comments