Code/CssPropertyBuilder.cs
using System.Text;

namespace BetterUI;

/// <summary>
/// A builder for a CSS property.
/// </summary>
internal sealed class CssPropertyBuilder
{
	private string _name = null!;
	private object _value = null!;
	private readonly StringBuilder _builder = new();

	/// <summary>
	/// Sets the name of the CSS property.
	/// </summary>
	/// <param name="name">The name of the CSS property.</param>
	/// <returns>The builder.</returns>
	public CssPropertyBuilder WithName( string name )
	{
		_name = name;
		return this;
	}

	/// <summary>
	/// Sets the value of the CSS property.
	/// </summary>
	/// <param name="value">The value of the CSS property.</param>
	/// <returns>The builder.</returns>
	public CssPropertyBuilder WithValue( object value )
	{
		_value = value;
		return this;
	}

	/// <summary>
	/// Builds the CSS property.
	/// </summary>
	/// <returns>The built CSS property.</returns>
	public string Build()
	{
		_builder.Append( _name );
		_builder.Append( ": " );
		_builder.Append( _value );
		_builder.Append( ';' );

		return ToString();
	}

	public override string ToString() => _builder.ToString();
}