using System.Collections.Generic;
using System.Linq;
namespace Discord.Net.SourceGenerators.Serialization
{
public partial class SerializationSourceGenerator
{
private static string GenerateSerializerOptionsTemplateSourceCode()
{
return @"
using System;
using System.Text.Json;
namespace Discord.Net.Serialization
{
///
/// Defines extension methods for adding Discord.Net JSON converters to a
/// instance.
///
public static partial class JsonSerializerOptionsExtensions
{
///
/// Adds Discord.Net JSON converters to the passed
/// .
///
///
/// The serializer options to add Discord.Net converters to.
///
///
/// The modified , so this method
/// can be chained.
///
public static partial JsonSerializerOptions WithDiscordNetConverters(
this JsonSerializerOptions options);
}
}";
}
private static string GenerateSerializerOptionsSourceCode(
List converters)
{
var snippets = string.Join("\n",
converters.Select(
x => $"options.Converters.Add(new {x}());"));
return $@"
using System;
using System.Text.Json;
using Discord.Net.Serialization.Converters;
namespace Discord.Net.Serialization
{{
public static partial class JsonSerializerOptionsExtensions
{{
public static partial JsonSerializerOptions WithDiscordNetConverters(
this JsonSerializerOptions options)
{{
options.Converters.Add(new OptionalConverterFactory());
{snippets}
return options;
}}
}}
}}";
}
}
}