Files
RobustToolbox/Robust.Shared/Toolshed/Commands/Math/RootCommands.cs
T
Leon FriedrichandGitHub 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

79 lines
2.1 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using Robust.Shared.Toolshed.Syntax;
namespace Robust.Shared.Toolshed.Commands.Math;
[ToolshedCommand]
public sealed class SqrtCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : IRootFunctions<T>
{
return T.Sqrt(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : IRootFunctions<T>
=> x.Select(Operation);
}
[ToolshedCommand]
public sealed class CbrtCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x)
where T : IRootFunctions<T>
{
return T.Cbrt(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x)
where T : IRootFunctions<T>
=> x.Select(Operation);
}
[ToolshedCommand]
public sealed class RootCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>(
[PipedArgument] T x,
int y
)
where T : IRootFunctions<T>
{
return T.RootN(x, y);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x, IEnumerable<int> y) where T : IRootFunctions<T>
=> x.Zip(y).Select(inp =>
{
var (left, right) = inp;
return Operation(left, right);
});
}
[ToolshedCommand]
public sealed class HypotCommand : ToolshedCommand
{
[CommandImplementation, TakesPipedTypeAsGeneric]
public T Operation<T>([PipedArgument] T x, T y) where T : IRootFunctions<T>
{
return T.Hypot(x, y);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<T> Operation<T>([PipedArgument] IEnumerable<T> x, IEnumerable<T> y) where T : IRootFunctions<T>
=> x.Zip(y).Select(inp =>
{
var (left, right) = inp;
return Operation(left, right);
});
}