private static string GetPropertyChanges()

in src/TemplateRefGenerator/Generators/ChangelogGenerator.cs [167:244]


    private static string GetPropertyChanges(ResourceTypeChangeLog resourceTypeChange, VersionedChangeLog versionedChange, ImmutableArray<NamedTypeChangeLog> changes)
    {
        var sb = new StringBuilder();
        var hasChanges = false;
        var added = changes.Where(x => x.Before is null).ToArray();
        if (added.Any())
        {
            hasChanges = true;
            sb.Append($"""
Added:


""");

            foreach (var entry in added.OrderBy(x => x.Name, StringComparer.OrdinalIgnoreCase))
            {
                sb.Append($"""
* {GetTypeLink(resourceTypeChange.ResourceType, versionedChange.Version, entry.Name)}

""");
            }

            sb.AppendLine();
        }

        var removed = changes.Where(x => x.After is null).ToArray();
        if (removed.Any())
        {
            hasChanges = true;
            sb.Append($"""
Removed:


""");

            foreach (var entry in removed.OrderBy(x => x.Name, StringComparer.OrdinalIgnoreCase))
            {
                // Don't use an anchor link - there's nothing to link to for a "removed" property!
                sb.Append($"""
* {entry.Name}

""");
            }

            sb.AppendLine();
        }

        var updates = GetUpdates(resourceTypeChange, versionedChange, changes).ToArray();
        if (updates.Any())
        {
            hasChanges = true;
            sb.Append($"""
Updated:


""");

            foreach (var update in updates)
            {
                sb.Append($"""
{update}

""");
            }

            sb.AppendLine();
        }

        if (!hasChanges)
        {
            sb.Append($"""
No properties added, updated or removed.

""");
        }

        return sb.ToString();
    }