Files
RobustToolbox/Robust.Shared/Toolshed/Commands/Generic/IterateCommand.cs
Leon Friedrich 9af119f57a Toolshed Rejig (#5455)
* Toolshed Rejig

* shorten hint string

* Try fix conflicts. Ill make with work later

* bodge

* Fix ProtoIdTypeParser assert

* comment

* AllEntities

* Remove more linq from WhereCommand

* better help strings

* Add ContainsCommand

* loc strings

* Add contains command description

* Add $self variable

* Errors for writing to readonly variables

* A
2024-12-21 17:49:11 +11:00

30 lines
691 B
C#

using System.Collections.Generic;
using Robust.Shared.Toolshed.Syntax;
namespace Robust.Shared.Toolshed.Commands.Generic;
[ToolshedCommand]
public sealed class IterateCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T>? Iterate<T>(
IInvocationContext ctx,
[PipedArgument] T value,
Block<T, T> block,
int times
)
{
for (var i = 0; i < times; i++)
{
if (block.Invoke(value, ctx) is not { } v)
break;
if (ctx.HasErrors)
break;
value = v;
yield return value;
}
}
}