Browse Source

Add: string.reverse

AnnulusGames 1 year ago
parent
commit
2248f38290
2 changed files with 21 additions and 0 deletions
  1. 1 0
      src/Lua/Standard/OpenLibExtensions.cs
  2. 20 0
      src/Lua/Standard/Text/ReverseFunction.cs

+ 1 - 0
src/Lua/Standard/OpenLibExtensions.cs

@@ -79,6 +79,7 @@ public static class OpenLibExtensions
     static readonly LuaFunction[] stringFunctions = [
     static readonly LuaFunction[] stringFunctions = [
         LenFunction.Instance,
         LenFunction.Instance,
         LowerFunction.Instance,
         LowerFunction.Instance,
+        ReverseFunction.Instance,
         UpperFunction.Instance,
         UpperFunction.Instance,
     ];
     ];
 
 

+ 20 - 0
src/Lua/Standard/Text/ReverseFunction.cs

@@ -0,0 +1,20 @@
+using Lua.Internal;
+
+namespace Lua.Standard.Text;
+
+public sealed class ReverseFunction : LuaFunction
+{
+    public override string Name => "reverse";
+    public static readonly LenFunction Instance = new();
+
+    protected override ValueTask<int> InvokeAsyncCore(LuaFunctionExecutionContext context, Memory<LuaValue> buffer, CancellationToken cancellationToken)
+    {
+        var s = context.GetArgument<string>(0);
+        using var strBuffer = new PooledArray<char>(s.Length);
+        var span = strBuffer.AsSpan();
+        s.AsSpan().CopyTo(span);
+        span.Reverse();
+        buffer.Span[0] = span.ToString();
+        return new(1);
+    }
+}