namespace Lib.@string.list; [Guid("51943340-70b1-4bb5-8cb9-0e79d366a57b")] internal sealed class JoinStringList : Instance, IStatusProvider { [Output(Guid = "ef105688-3e28-47c3-8b8e-5fda3bde3090")] public readonly Slot Result = new(); public JoinStringList() { Result.UpdateAction += Update; } private void Update(EvaluationContext context) { var separatorValue = Separator.GetValue(context); if (separatorValue == null) { _lastErrorMessage = "Separator can't be null."; Result.Value = string.Empty; return; } var separator = separatorValue.Replace("\\n", "\n"); var input = Input.GetValue(context); if (input == null || input.Count == 0) { _lastErrorMessage = "Can't join empty string list."; Result.Value = string.Empty; return; } _lastErrorMessage = null; Result.Value = string.Join(separator, input); } [Input(Guid = "DB366216-B485-48BF-B267-56344B317CF7")] public readonly InputSlot> Input = new (); [Input(Guid = "89350e3c-2b83-4720-bfa1-d4adc6cc02fa")] public readonly InputSlot Separator = new(); IStatusProvider.StatusLevel IStatusProvider.GetStatusLevel() => string.IsNullOrEmpty(_lastErrorMessage) ? IStatusProvider.StatusLevel.Success : IStatusProvider.StatusLevel.Warning; string IStatusProvider.GetStatusMessage() => _lastErrorMessage; private string _lastErrorMessage; }