482a46b568
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.
35 lines
1.2 KiB
C#
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";
|
|
}
|
|
}
|