|
|
- #nullable enable
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace IPA.Config.Data
- {
- /// <summary>
- /// A <see cref="Value"/> representing a piece of text. The only reason this is not named
- /// String is so that it doesn't conflict with <see cref="string"/>.
- /// </summary>
- public sealed class Text : Value
- {
- /// <summary>
- /// Constructs an empty <see cref="Text"/> object.
- /// </summary>
- [Obsolete("Use the String constructor.")]
- public Text()
- {
- Value = null!;
- }
-
- /// <summary>
- /// Constructs a <see cref="Text"/> object containing the provided value.
- /// </summary>
- /// <param name="value">The value to construct with.</param>
- public Text(string value)
- {
- Value = value;
- }
-
- /// <summary>
- /// The actual value of this <see cref="Text"/> object.
- /// </summary>
- public string Value { get; init; }
-
- /// <summary>
- /// Converts this <see cref="Data.Value"/> into a human-readable format.
- /// </summary>
- /// <returns>a quoted, unescaped string form of <see cref="Value"/></returns>
- public override string ToString() => $"\"{Value}\"";
- }
-
- /// <summary>
- /// A <see cref="Value"/> representing an integer. This may hold a <see cref="long"/>'s
- /// worth of data.
- /// </summary>
- public sealed class Integer : Value
- {
- /// <summary>
- /// Constructs an empty <see cref="Integer"/> object.
- /// </summary>
- [Obsolete("Use the long constructor.")]
- public Integer()
- {
- Value = 0;
- }
-
- /// <summary>
- /// Constructs a <see cref="Integer"/> object containing the provided value.
- /// </summary>
- /// <param name="value">The value to construct with.</param>
- public Integer(long value)
- {
- Value = value;
- }
-
- /// <summary>
- /// The actual value of the <see cref="Integer"/> object.
- /// </summary>
- public long Value { get; set; }
-
- /// <summary>
- /// Coerces this <see cref="Integer"/> into a <see cref="FloatingPoint"/>.
- /// </summary>
- /// <returns>a <see cref="FloatingPoint"/> representing the closest approximation of <see cref="Value"/></returns>
- public FloatingPoint AsFloat() => Float(Value);
-
- /// <summary>
- /// Converts this <see cref="Data.Value"/> into a human-readable format.
- /// </summary>
- /// <returns>the result of <c>Value.ToString()</c></returns>
- public override string ToString() => Value.ToString();
- }
-
- /// <summary>
- /// A <see cref="Value"/> representing a floating point value. This may hold a
- /// <see cref="decimal"/>'s worth of data.
- /// </summary>
- public sealed class FloatingPoint : Value
- {
- /// <summary>
- /// Constructs an empty <see cref="FloatingPoint"/> object.
- /// </summary>
- [Obsolete("Use the long constructor.")]
- public FloatingPoint()
- {
- Value = 0;
- }
-
- /// <summary>
- /// Constructs a <see cref="FloatingPoint"/> object containing the provided value.
- /// </summary>
- /// <param name="value">The value to construct with.</param>
- public FloatingPoint(decimal value)
- {
- Value = value;
- }
-
- /// <summary>
- /// The actual value fo this <see cref="FloatingPoint"/> object.
- /// </summary>
- public decimal Value { get; set; }
-
- /// <summary>
- /// Coerces this <see cref="FloatingPoint"/> into an <see cref="Integer"/>.
- /// </summary>
- /// <returns>a <see cref="Integer"/> representing the closest approximation of <see cref="Value"/></returns>
- public Integer AsInteger() => Integer((long)Value);
-
- /// <summary>
- /// Converts this <see cref="Data.Value"/> into a human-readable format.
- /// </summary>
- /// <returns>the result of <c>Value.ToString()</c></returns>
- public override string ToString() => Value.ToString();
- }
-
- /// <summary>
- /// A <see cref="Value"/> representing a boolean value.
- /// </summary>
- public sealed class Boolean : Value
- {
- /// <summary>
- /// Constructs an empty <see cref="Boolean"/> object.
- /// </summary>
- [Obsolete("Use the long constructor.")]
- public Boolean()
- {
- Value = false;
- }
-
- /// <summary>
- /// Constructs a <see cref="Boolean"/> object containing the provided value.
- /// </summary>
- /// <param name="value">The value to construct with.</param>
- public Boolean(bool value)
- {
- Value = value;
- }
-
- /// <summary>
- /// The actual value fo this <see cref="Boolean"/> object.
- /// </summary>
- public bool Value { get; set; }
-
-
- /// <summary>
- /// Converts this <see cref="Data.Value"/> into a human-readable format.
- /// </summary>
- /// <returns>the result of <c>Value.ToString().ToLower()</c></returns>
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Globalization", "CA1308:Normalize strings to uppercase",
- Justification = "ToLower is the desired display value.")]
- public override string ToString() => Value.ToString().ToLower(System.Globalization.CultureInfo.InvariantCulture);
- }
- }
|