Files
2026-02-21 17:04:05 -08:00

54 lines
2.0 KiB
C#

using System.Collections.Generic;
namespace Febucci.UI.Core
{
/// <summary>
/// Helper class. Contains methods to parse attributes/values from strings.
/// </summary>
public static class FormatUtils
{
/// <summary>
/// Tries to parse a rich text tag parameter.
/// </summary>
/// <remarks>
/// Mostly used in combination with custom typewriter actions. (Manual: <see href="https://www.febucci.com/text-animator-unity/docs/writing-custom-actions-c-sharp/">Writing Custom actions C#</see>)
/// </remarks>
/// <param name="attributes">list of all the attributesi in the rich text tag</param>
/// <param name="index">the parameter's index in the list</param>
/// <param name="defValue">default value, assigned if the parsing is not successful</param>
/// <param name="result">result from the parsing</param>
/// <returns><c>true</c> if successful</returns>
public static bool TryGetFloat(List<string> attributes, int index, float defValue, out float result)
{
if (index >= attributes.Count || index < 0)
{
result = defValue;
return false;
}
return TryGetFloat(attributes[index], defValue, out result);
}
//TODO Docs
public static bool TryGetFloat(string attribute, float defValue, out float result)
{
if (ParseFloat(attribute, out result))
return true;
result = defValue;
return false;
}
/// <summary>
/// Tries parsing a float given a string, independently of the system's culture
/// </summary>
/// <param name="value"></param>
/// <param name="result"></param>
/// <returns></returns>
public static bool ParseFloat(string value, out float result)
{
return float.TryParse(value, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out result);
}
}
}