Files
Beam/Beam.Temporary.Cli/StateChangerFactory.cs
T
qwsdcvghyu89 482a46b568 Enhance project metadata and refactor core classes
Updated project files for `Beam.Dynamic`, `Beam.Exports`, `Beam.Temporary.Cli`, and `Beam` to include additional metadata and specific package versions. Refactored `DataBindings` and `ResolvedBindings` to records, added a new `Text` property in `Binding.cs`, and introduced `ParseNumbers` in `OnlineCleaner`. New classes `PuppetContext` and `PuppetUnitDownloader` added for Playwright integration. Introduced `ImmutableState` struct and `UnitDownloaderBinary` class for improved download management. Updated tests in `UnitTest1.cs` for number localization. Added `Beam.Puppeteer` project to the solution.
2025-06-23 02:11:19 +03:00

35 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace Beam.Temporary.Cli {
public class StateChangerFactory {
[JsonIgnore]
public IStateChangeBehaviour Behavior => FactoryTable[StateChangerKey]();
[JsonInclude]
public string StateChangerKey { get; set; }
[JsonConstructor]
public StateChangerFactory(string key) {
if (!Keys.Contains(key))
throw new ArgumentException($"{key} not in keys list", nameof(key));
StateChangerKey = key;
}
public static Dictionary<string, Func<IStateChangeBehaviour>> FactoryTable = new() {
{ LastAsNumber, () => CommonStateChangers.LastAsNumber },
{ LastAsNumberPrefixed, () => CommonStateChangers.NthAsNumber(^1, true) },
{ Constant, () => CommonStateChangers.Constant },
};
public HashSet<string> Keys = [LastAsNumber, LastAsNumberPrefixed, Constant];
public const string LastAsNumber = "LastAsNumber";
public const string LastAsNumberPrefixed = "LastAsNumberPrefixed";
public const string Constant = "Constant";
}
}