Skip to content

Commit ebf37f3

Browse files
authored
Follow-up cleanup (#77)
After 9988d5b
1 parent 9988d5b commit ebf37f3

File tree

1 file changed

+22
-42
lines changed

1 file changed

+22
-42
lines changed

json_serializable/lib/src/json_serializable_generator.dart

Lines changed: 22 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -418,10 +418,8 @@ void $toJsonMapHelperName(String key, dynamic value) {
418418
{String accessOverride}) {
419419
accessOverride ??= field.name;
420420

421-
_TypeHelperContext context = _getHelperContext(field);
422-
423421
try {
424-
return context.serialize(
422+
return _getHelperContext(field).serialize(
425423
field.type, accessOverride, _nullable(field, classIncludeNullable));
426424
} on UnsupportedTypeError catch (e) {
427425
throw _createInvalidGenerationError('toJson', field, e);
@@ -434,64 +432,46 @@ void $toJsonMapHelperName(String key, dynamic value) {
434432

435433
var targetType = ctorParam?.type ?? field.type;
436434

437-
_TypeHelperContext context = _getHelperContext(field);
438-
439435
try {
440-
return context.deserialize(
436+
return _getHelperContext(field).deserialize(
441437
targetType, 'json[$jsonKey]', _nullable(field, classSupportNullable));
442438
} on UnsupportedTypeError catch (e) {
443439
throw _createInvalidGenerationError('fromJson', field, e);
444440
}
445441
}
446442

447-
_TypeHelperContext _getHelperContext(FieldElement field) {
448-
_TypeHelperContext helperContext;
449-
450-
/// [expression] may be just the name of the field or it may an expression
451-
/// representing the serialization of a value.
452-
String serialize(DartType targetType, String expression, bool nullable) =>
453-
_allHelpers
454-
.map((h) =>
455-
h.serialize(targetType, expression, nullable, helperContext))
456-
.firstWhere((r) => r != null,
457-
orElse: () => throw new UnsupportedTypeError(
458-
targetType, expression, _notSupportedWithTypeHelpersMsg));
459-
460-
String deserialize(DartType targetType, String expression, bool nullable) =>
461-
_allHelpers
462-
.map((th) =>
463-
th.deserialize(targetType, expression, nullable, helperContext))
464-
.firstWhere((r) => r != null,
465-
orElse: () => throw new UnsupportedTypeError(
466-
targetType, expression, _notSupportedWithTypeHelpersMsg));
467-
468-
helperContext = new _TypeHelperContext(
469-
serialize, deserialize, useWrappers, field.metadata);
470-
return helperContext;
471-
}
443+
_TypeHelperContext _getHelperContext(FieldElement field) =>
444+
new _TypeHelperContext(this, field.metadata);
472445
}
473446

474-
typedef String _TypeHelperGenerator(
475-
DartType fieldType, String expression, bool nullable);
476-
477447
class _TypeHelperContext implements SerializeContext, DeserializeContext {
478-
final _TypeHelperGenerator _serialize, _deserialize;
448+
final JsonSerializableGenerator _generator;
479449

480450
@override
481-
final bool useWrappers;
451+
bool get useWrappers => _generator.useWrappers;
482452

453+
@override
483454
List<ElementAnnotation> metadata;
484455

485-
_TypeHelperContext(
486-
this._serialize, this._deserialize, this.useWrappers, this.metadata);
456+
_TypeHelperContext(this._generator, this.metadata);
487457

458+
/// [expression] may be just the name of the field or it may an expression
459+
/// representing the serialization of a value.
488460
@override
489-
String serialize(DartType fieldType, String expression, bool nullable) =>
490-
_serialize(fieldType, expression, nullable);
461+
String serialize(DartType targetType, String expression, bool nullable) =>
462+
_generator._allHelpers
463+
.map((h) => h.serialize(targetType, expression, nullable, this))
464+
.firstWhere((r) => r != null,
465+
orElse: () => throw new UnsupportedTypeError(
466+
targetType, expression, _notSupportedWithTypeHelpersMsg));
491467

492468
@override
493-
String deserialize(DartType fieldType, String expression, bool nullable) =>
494-
_deserialize(fieldType, expression, nullable);
469+
String deserialize(DartType targetType, String expression, bool nullable) =>
470+
_generator._allHelpers
471+
.map((th) => th.deserialize(targetType, expression, nullable, this))
472+
.firstWhere((r) => r != null,
473+
orElse: () => throw new UnsupportedTypeError(
474+
targetType, expression, _notSupportedWithTypeHelpersMsg));
495475
}
496476

497477
String _safeNameAccess(FieldElement field) {

0 commit comments

Comments
 (0)