Skip to content

Commit 77d75e8

Browse files
Merge pull request #6 from matthewnitschke/to_json_implementations
Implemented toJson methods
2 parents 2270ff4 + 398cf10 commit 77d75e8

9 files changed

+70
-15
lines changed

.tool-versions

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
dart 2.14.4
1+
dart 2.17.5

build.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ targets:
99
options:
1010
any_map: true
1111
checked: true
12-
create_to_json: false
12+
create_to_json: true
13+
explicit_to_json: true
1314
field_rename: snake

lib/src/package.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ Map<String, Package> parsePackages(Map source) => source.map((k, v) {
1313
class Package {
1414
final String dependency;
1515

16-
@JsonKey(fromJson: parsePackageDescription)
16+
@JsonKey(fromJson: packageDescriptionFromJson)
1717
final PackageDescription description;
1818

1919
final PackageSource source;
2020

21-
@JsonKey(fromJson: _versionFromString)
21+
@JsonKey(fromJson: _versionFromString, toJson: _versionToString)
2222
final Version version;
2323

2424
Package({
@@ -29,10 +29,14 @@ class Package {
2929
});
3030

3131
factory Package.fromJson(Map json) => _$PackageFromJson(json);
32+
33+
Map<String, dynamic> toJson() => _$PackageToJson(this);
3234
}
3335

3436
enum PackageSource { hosted, git, path }
3537

3638
// ---------------------------------- Parsers ----------------------------------
3739

3840
Version _versionFromString(String input) => Version.parse(input);
41+
42+
String _versionToString(Version version) => version.toString();

lib/src/package.g.dart

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/src/package_description.dart

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'package:json_annotation/json_annotation.dart';
22

33
part 'package_description.g.dart';
44

5-
PackageDescription parsePackageDescription(Object data) {
5+
PackageDescription packageDescriptionFromJson(Object data) {
66
if (data is Map) {
77
if (data.containsKey('ref')) {
88
return GitPackageDescription.fromJson(data);
@@ -16,7 +16,10 @@ PackageDescription parsePackageDescription(Object data) {
1616
throw FormatException('Unknown package description type');
1717
}
1818

19-
abstract class PackageDescription {}
19+
20+
abstract class PackageDescription {
21+
Map<String, dynamic> toJson();
22+
}
2023

2124
@JsonSerializable()
2225
class HostedPackageDescription extends PackageDescription {
@@ -31,6 +34,8 @@ class HostedPackageDescription extends PackageDescription {
3134

3235
factory HostedPackageDescription.fromJson(Map json) =>
3336
_$HostedPackageDescriptionFromJson(json);
37+
38+
Map<String, dynamic> toJson() => _$HostedPackageDescriptionToJson(this);
3439
}
3540

3641
@JsonSerializable()
@@ -53,6 +58,8 @@ class GitPackageDescription extends PackageDescription {
5358

5459
factory GitPackageDescription.fromJson(Map json) =>
5560
_$GitPackageDescriptionFromJson(json);
61+
62+
Map<String, dynamic> toJson() => _$GitPackageDescriptionToJson(this);
5663
}
5764

5865
@JsonSerializable()
@@ -68,4 +75,6 @@ class PathPackageDescription extends PackageDescription {
6875

6976
factory PathPackageDescription.fromJson(Map json) =>
7077
_$PathPackageDescriptionFromJson(json);
78+
79+
Map<String, dynamic> toJson() => _$PathPackageDescriptionToJson(this);
7180
}

lib/src/package_description.g.dart

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/src/pubspec_lock.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class PubspecLock {
1010
@JsonKey(fromJson: parsePackages)
1111
final Map<String, Package> packages;
1212

13-
@JsonKey(fromJson: _parseSdks)
13+
@JsonKey(fromJson: _parseSdks, toJson: _serializeSdks)
1414
final Map<String, VersionConstraint> sdks;
1515

1616
PubspecLock({
@@ -20,6 +20,8 @@ class PubspecLock {
2020

2121
factory PubspecLock.fromJson(Map json) => _$PubspecLockFromJson(json);
2222

23+
Map<String, dynamic> toJson() => _$PubspecLockToJson(this);
24+
2325
factory PubspecLock.parse(String yaml, {Uri? sourceUrl}) =>
2426
checkedYamlDecode(yaml, (map) => PubspecLock.fromJson(map ?? {}),
2527
sourceUrl: sourceUrl);
@@ -30,5 +32,8 @@ class PubspecLock {
3032
Map<String, VersionConstraint> _parseSdks(Map source) => source
3133
.map((k, v) => MapEntry(k, _versionConstraintFromString(v as String)));
3234

35+
Map<String, dynamic> _serializeSdks(Map<String, VersionConstraint> sdks) => sdks
36+
.map((k, v) => MapEntry(k, v.toString()));
37+
3338
VersionConstraint _versionConstraintFromString(String input) =>
3439
VersionConstraint.parse(input);

lib/src/pubspec_lock.g.dart

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pubspec.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ environment:
77
sdk: '>=2.14.0 <3.0.0'
88

99
dependencies:
10-
args: ^2.3.0
11-
json_annotation: ^4.3.0
12-
pub_semver: ^2.1.0
10+
args: ^2.3.1
11+
json_annotation: ^4.6.0
12+
pub_semver: ^2.1.1
1313
checked_yaml: ^2.0.1
1414

1515
dev_dependencies:
16-
build_runner: ^1.10.1
17-
json_serializable: ^6.0.1
18-
test: ^1.15.7
19-
stack_trace: ^1.9.2
16+
build_runner: ^2.1.11
17+
json_serializable: ^6.3.1
18+
test: ^1.21.4
19+
stack_trace: ^1.10.0

0 commit comments

Comments
 (0)