浏览代码

Add: os.getenv

AnnulusGames 1 年之前
父节点
当前提交
da55932010
共有 2 个文件被更改,包括 16 次插入0 次删除
  1. 1 0
      src/Lua/Standard/OpenLibExtensions.cs
  2. 15 0
      src/Lua/Standard/OperatingSystem/GetEnvFuntion.cs

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

@@ -87,6 +87,7 @@ public static class OpenLibExtensions
 
 
     static readonly LuaFunction[] osFunctions = [
     static readonly LuaFunction[] osFunctions = [
         ClockFunction.Instance,
         ClockFunction.Instance,
+        GetEnvFunction.Instance,
         SetLocaleFunction.Instance,
         SetLocaleFunction.Instance,
         TimeFunction.Instance,
         TimeFunction.Instance,
     ];
     ];

+ 15 - 0
src/Lua/Standard/OperatingSystem/GetEnvFuntion.cs

@@ -0,0 +1,15 @@
+
+namespace Lua.Standard.OperatingSystem;
+
+public sealed class GetEnvFunction : LuaFunction
+{
+    public override string Name => "getenv";
+    public static readonly GetEnvFunction Instance = new();
+
+    protected override ValueTask<int> InvokeAsyncCore(LuaFunctionExecutionContext context, Memory<LuaValue> buffer, CancellationToken cancellationToken)
+    {
+        var variable = context.GetArgument<string>(0);
+        buffer.Span[0] = Environment.GetEnvironmentVariable(variable) ?? LuaValue.Nil;
+        return new(1);
+    }
+}