Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ricardoboss/dartlang.pubspec

A library to read/write Dart pubspec.yaml files
https://github.com/ricardoboss/dartlang.pubspec

dart deserialization dotnet pubspec pubspec-yaml serialization

Last synced: about 2 months ago
JSON representation

A library to read/write Dart pubspec.yaml files

Awesome Lists containing this project

README

        

# DartLang.PubSpec

A library to serialize and deserialize Dart pubspec.yaml files.

## Usage

```csharp
var yaml = File.ReadAllText("pubspec.yaml");
var pubspec = PubSpecYamlSerializer.Deserialize(yaml);

Console.WriteLine($"Name: {pubspec.Name}");
Console.WriteLine($"Version: {pubspec.Version}");
```

You can also use the JSON serializer:

```csharp
var json = File.ReadAllText("pubspec.json");
var pubspec = PubSpecJsonSerializer.Deserialize(json);
```

### Custom Deserializer

#### YAML

You can also build your own deserializer using [`YamlDotNet`] directly:

```csharp
var deserializer = new DeserializerBuilder()
.IgnoreUnmatchedProperties() // pub.dev will ignore other properties
.WithNamingConvention(UnderscoredNamingConvention.Instance) // dart uses underscores for properties
.WithPubSpecConverters() // converters for custom types
.Build();

return deserializer.Deserialize(reader);
```

#### JSON

In case you need to use custom `JsonSerializerOptions`, you can reuse the converters from `DartLang.PubSpec.Serialization.Json`:

```csharp
var json = File.ReadAllText("pubspec.json");
var options = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
Converters =
{
new SemVersionJsonConverter(),
new SemVersionRangeJsonConverter(),
new DependencyMapJsonConverter(),
new PlatformsJsonConverter(),
},
};

return JsonSerializer.Deserialize(json, options);
```

### Serialization

Serialization is currently not supported, but should not be hard to implement yourself.

## License

MIT

[`YamlDotNet`]: https://github.com/aaubry/YamlDotNet