Added constant state changers to represent singular/repeating states. Added a DownloadContextBuilder to support fluent building patterns. Changed RetryReporter and DownloadReporter to use RetryReport and DownloadReport structs to simplify type declarations. Made MainArchitecture obsolete by supporting a fluent downloads with DownloadBuilder. Created a 'budge' OpenAI bridge for proof-of-concept translation.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
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 {
|
||||
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";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user