Files
RobustToolbox/Robust.Shared/Toolshed/Commands/Math/NumAsCommand.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

71 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using Robust.Shared.Toolshed.TypeParsers;
namespace Robust.Shared.Toolshed.Commands.Math;
[ToolshedCommand]
public sealed class CheckedToCommand : ToolshedCommand
{
private static Type[] _parsers = [typeof(TypeTypeParser)];
public override Type[] TypeParameterParsers => _parsers;
[CommandImplementation, TakesPipedTypeAsGeneric]
public TOut Operation<TOut, T>([PipedArgument] T x)
where TOut: INumberBase<TOut>
where T : INumberBase<T>
{
return TOut.CreateChecked(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<TOut> Operation<TOut, T>([PipedArgument] IEnumerable<T> x)
where TOut: INumberBase<TOut>
where T : INumberBase<T>
=> x.Select(Operation<TOut, T>);
}
[ToolshedCommand]
public sealed class SaturateToCommand : ToolshedCommand
{
private static Type[] _parsers = [typeof(TypeTypeParser)];
public override Type[] TypeParameterParsers => _parsers;
[CommandImplementation, TakesPipedTypeAsGeneric]
public TOut Operation<TOut, T>([PipedArgument] T x)
where TOut: INumberBase<TOut>
where T : INumberBase<T>
{
return TOut.CreateSaturating(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<TOut> Operation<TOut, T>([PipedArgument] IEnumerable<T> x)
where TOut: INumberBase<TOut>
where T : INumberBase<T>
=> x.Select(Operation<TOut, T>);
}
[ToolshedCommand]
public sealed class TruncToCommand : ToolshedCommand
{
private static Type[] _parsers = [typeof(TypeTypeParser)];
public override Type[] TypeParameterParsers => _parsers;
[CommandImplementation, TakesPipedTypeAsGeneric]
public TOut Operation<TOut, T>([PipedArgument] T x)
where TOut: INumberBase<TOut>
where T : INumberBase<T>
{
return TOut.CreateTruncating(x);
}
[CommandImplementation, TakesPipedTypeAsGeneric]
public IEnumerable<TOut> Operation<TOut, T>([PipedArgument] IEnumerable<T> x)
where TOut: INumberBase<TOut>
where T : INumberBase<T>
=> x.Select(Operation<TOut, T>);
}