From ba16daff7c52edfb4e84300ce2ccaab6af49e712 Mon Sep 17 00:00:00 2001
From: Adam Frisby
Date: Mon, 4 Feb 2008 12:43:07 +0000
Subject: * Added JavaScript support to OpenSim scripting. Totally Untested.
Enjoy. :)
---
.../DotNetEngine/Compiler/LSL/Compiler.cs | 21 +++++++++++++++++++--
prebuild.xml | 1 +
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs
index c994fea..a8cdbd5 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs
@@ -34,6 +34,7 @@ using System.IO;
using System.Reflection;
using Microsoft.CSharp;
using Microsoft.VisualBasic;
+using Microsoft.JScript;
namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
{
@@ -51,7 +52,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
{
lsl = 0,
cs = 1,
- vb = 2
+ vb = 2,
+ js = 3
}
private enumCompileType DefaultCompileLanguage;
private bool WriteScriptSourceToDebugFile;
@@ -66,6 +68,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
private static LSL2CSConverter LSL_Converter = new LSL2CSConverter();
private static CSharpCodeProvider CScodeProvider = new CSharpCodeProvider();
private static VBCodeProvider VBcodeProvider = new VBCodeProvider();
+ private static JScriptCodeProvider JScodeProvider = new JScriptCodeProvider();
private static int instanceID = new Random().Next(0, int.MaxValue); // Unique number to use on our compiled files
private static UInt64 scriptCompileCounter = 0; // And a counter
@@ -103,9 +106,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
LanguageMapping.Add(enumCompileType.cs.ToString(), enumCompileType.cs);
LanguageMapping.Add(enumCompileType.vb.ToString(), enumCompileType.vb);
LanguageMapping.Add(enumCompileType.lsl.ToString(), enumCompileType.lsl);
+ LanguageMapping.Add(enumCompileType.js.ToString(), enumCompileType.js);
// Allowed compilers
- string allowComp = m_scriptEngine.ScriptConfigSource.GetString("AllowedCompilers", "lsl,cs,vb");
+ string allowComp = m_scriptEngine.ScriptConfigSource.GetString("AllowedCompilers", "lsl,cs,vb,js");
AllowedCompilers.Clear();
#if DEBUG
@@ -241,6 +245,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
if (Script.StartsWith("//lsl", true, CultureInfo.InvariantCulture))
l = enumCompileType.lsl;
+ if (Script.StartsWith("//js", true, CultureInfo.InvariantCulture))
+ l = enumCompileType.js;
if (!AllowedCompilers.ContainsKey(l.ToString()))
{
@@ -278,6 +284,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
@"Public Sub New(): End Sub: " +
compileScript +
":End Class :End Namespace\r\n";
+ case enumCompileType.js:
+ compileScript = String.Empty +
+ "import OpenSim.Region.ScriptEngine.Common; import System.Collections.Generic;" +
+ "namespace SecondLife { " +
+ "class Script : OpenSim.Region.ScriptEngine.Common.LSL_BaseClass { " +
+ @"public Script() { } " +
+ compileScript +
+ "} }\r\n";
break;
}
return CompileFromCSorVBText(compileScript, l);
@@ -361,6 +375,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
case enumCompileType.cs:
results = CScodeProvider.CompileAssemblyFromSource(parameters, Script);
break;
+ case enumCompileType.js:
+ results = JScodeProvider.CompileAssemblyFromSource(parameters, Script);
+ break;
default:
throw new Exception("Compiler is not able to recongnize language type \"" + lang.ToString() + "\"");
}
diff --git a/prebuild.xml b/prebuild.xml
index 567715b..0517d8a 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -1212,6 +1212,7 @@
+
--
cgit v1.1