@@ -6,7 +6,8 @@ defmodule JS2E.Printer.ArrayPrinter do
6
6
7
7
require Elixir . { EEx , Logger }
8
8
alias JS2E.Printer
9
- alias JsonSchema.Types
9
+ alias JsonSchema . { Parser , Resolver , Types }
10
+ alias Parser.ParserError
10
11
alias Printer . { PrinterError , PrinterResult , Utils }
11
12
12
13
alias Types . { ArrayType , PrimitiveType , SchemaDefinition }
@@ -16,8 +17,7 @@ defmodule JS2E.Printer.ArrayPrinter do
16
17
ElmEncoders ,
17
18
ElmFuzzers ,
18
19
ElmTypes ,
19
- Naming ,
20
- ResolveType
20
+ Naming
21
21
}
22
22
23
23
@ templates_location Application . get_env ( :js2e , :templates_location )
@@ -63,15 +63,18 @@ defmodule JS2E.Printer.ArrayPrinter do
63
63
_module_name
64
64
) do
65
65
with { :ok , { items_type , _resolved_schema_def } } <-
66
- ResolveType . resolve_type ( items_path , path , schema_def , schema_dict ) ,
66
+ Resolver . resolve_type ( items_path , path , schema_def , schema_dict ) ,
67
67
{ :ok , items_type_name } <- determine_type_name ( items_type ) ,
68
68
{ :ok , items_decoder_name } <- determine_decoder_name ( items_type ) do
69
69
"#{ Naming . normalize_identifier ( name , :downcase ) } Decoder"
70
70
|> decoder_template ( items_type_name , items_decoder_name )
71
71
|> PrinterResult . new ( )
72
72
else
73
- { :error , error } ->
74
- PrinterResult . new ( "" , [ error ] )
73
+ { :error , % ParserError { identifier: id , error_type: atom , message: str } } ->
74
+ PrinterResult . new ( "" , [ PrinterError . new ( id , atom , str ) ] )
75
+
76
+ { :error , printer_error } ->
77
+ PrinterResult . new ( "" , [ printer_error ] )
75
78
end
76
79
end
77
80
@@ -135,15 +138,18 @@ defmodule JS2E.Printer.ArrayPrinter do
135
138
_module_name
136
139
) do
137
140
with { :ok , { items_type , _resolved_schema_def } } <-
138
- ResolveType . resolve_type ( items_path , path , schema_def , schema_dict ) ,
141
+ Resolver . resolve_type ( items_path , path , schema_def , schema_dict ) ,
139
142
{ :ok , items_type_name } <- determine_type_name ( items_type ) ,
140
143
{ :ok , items_encoder_name } <- determine_encoder_name ( items_type ) do
141
144
"encode#{ Naming . normalize_identifier ( items_type_name , :upcase ) } s"
142
145
|> encoder_template ( name , items_type_name , items_encoder_name )
143
146
|> PrinterResult . new ( )
144
147
else
145
- { :error , error } ->
146
- PrinterResult . new ( "" , [ error ] )
148
+ { :error , % ParserError { identifier: id , error_type: atom , message: str } } ->
149
+ PrinterResult . new ( "" , [ PrinterError . new ( id , atom , str ) ] )
150
+
151
+ { :error , printer_error } ->
152
+ PrinterResult . new ( "" , [ printer_error ] )
147
153
end
148
154
end
149
155
@@ -192,7 +198,7 @@ defmodule JS2E.Printer.ArrayPrinter do
192
198
_module_name
193
199
) do
194
200
with { :ok , { items_type , _resolved_schema_def } } <-
195
- ResolveType . resolve_type ( items_path , path , schema_def , schema_dict ) ,
201
+ Resolver . resolve_type ( items_path , path , schema_def , schema_dict ) ,
196
202
{ :ok , items_type_name } <- determine_type_name ( items_type ) ,
197
203
{ :ok , items_fuzzer_name } <- determine_fuzzer_name ( items_type ) do
198
204
array_name = Naming . normalize_identifier ( name , :upcase )
@@ -213,8 +219,11 @@ defmodule JS2E.Printer.ArrayPrinter do
213
219
)
214
220
|> PrinterResult . new ( )
215
221
else
216
- { :error , error } ->
217
- PrinterResult . new ( "" , [ error ] )
222
+ { :error , % ParserError { identifier: id , error_type: atom , message: str } } ->
223
+ PrinterResult . new ( "" , [ PrinterError . new ( id , atom , str ) ] )
224
+
225
+ { :error , printer_error } ->
226
+ PrinterResult . new ( "" , [ printer_error ] )
218
227
end
219
228
end
220
229
0 commit comments