aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs21
1 files changed, 19 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;
34using System.Reflection; 34using System.Reflection;
35using Microsoft.CSharp; 35using Microsoft.CSharp;
36using Microsoft.VisualBasic; 36using Microsoft.VisualBasic;
37using Microsoft.JScript;
37 38
38namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL 39namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
39{ 40{
@@ -51,7 +52,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
51 { 52 {
52 lsl = 0, 53 lsl = 0,
53 cs = 1, 54 cs = 1,
54 vb = 2 55 vb = 2,
56 js = 3
55 } 57 }
56 private enumCompileType DefaultCompileLanguage; 58 private enumCompileType DefaultCompileLanguage;
57 private bool WriteScriptSourceToDebugFile; 59 private bool WriteScriptSourceToDebugFile;
@@ -66,6 +68,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
66 private static LSL2CSConverter LSL_Converter = new LSL2CSConverter(); 68 private static LSL2CSConverter LSL_Converter = new LSL2CSConverter();
67 private static CSharpCodeProvider CScodeProvider = new CSharpCodeProvider(); 69 private static CSharpCodeProvider CScodeProvider = new CSharpCodeProvider();
68 private static VBCodeProvider VBcodeProvider = new VBCodeProvider(); 70 private static VBCodeProvider VBcodeProvider = new VBCodeProvider();
71 private static JScriptCodeProvider JScodeProvider = new JScriptCodeProvider();
69 72
70 private static int instanceID = new Random().Next(0, int.MaxValue); // Unique number to use on our compiled files 73 private static int instanceID = new Random().Next(0, int.MaxValue); // Unique number to use on our compiled files
71 private static UInt64 scriptCompileCounter = 0; // And a counter 74 private static UInt64 scriptCompileCounter = 0; // And a counter
@@ -103,9 +106,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
103 LanguageMapping.Add(enumCompileType.cs.ToString(), enumCompileType.cs); 106 LanguageMapping.Add(enumCompileType.cs.ToString(), enumCompileType.cs);
104 LanguageMapping.Add(enumCompileType.vb.ToString(), enumCompileType.vb); 107 LanguageMapping.Add(enumCompileType.vb.ToString(), enumCompileType.vb);
105 LanguageMapping.Add(enumCompileType.lsl.ToString(), enumCompileType.lsl); 108 LanguageMapping.Add(enumCompileType.lsl.ToString(), enumCompileType.lsl);
109 LanguageMapping.Add(enumCompileType.js.ToString(), enumCompileType.js);
106 110
107 // Allowed compilers 111 // Allowed compilers
108 string allowComp = m_scriptEngine.ScriptConfigSource.GetString("AllowedCompilers", "lsl,cs,vb"); 112 string allowComp = m_scriptEngine.ScriptConfigSource.GetString("AllowedCompilers", "lsl,cs,vb,js");
109 AllowedCompilers.Clear(); 113 AllowedCompilers.Clear();
110 114
111#if DEBUG 115#if DEBUG
@@ -241,6 +245,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
241 if (Script.StartsWith("//lsl", true, CultureInfo.InvariantCulture)) 245 if (Script.StartsWith("//lsl", true, CultureInfo.InvariantCulture))
242 l = enumCompileType.lsl; 246 l = enumCompileType.lsl;
243 247
248 if (Script.StartsWith("//js", true, CultureInfo.InvariantCulture))
249 l = enumCompileType.js;
244 250
245 if (!AllowedCompilers.ContainsKey(l.ToString())) 251 if (!AllowedCompilers.ContainsKey(l.ToString()))
246 { 252 {
@@ -278,6 +284,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
278 @"Public Sub New(): End Sub: " + 284 @"Public Sub New(): End Sub: " +
279 compileScript + 285 compileScript +
280 ":End Class :End Namespace\r\n"; 286 ":End Class :End Namespace\r\n";
287 case enumCompileType.js:
288 compileScript = String.Empty +
289 "import OpenSim.Region.ScriptEngine.Common; import System.Collections.Generic;" +
290 "namespace SecondLife { " +
291 "class Script : OpenSim.Region.ScriptEngine.Common.LSL_BaseClass { " +
292 @"public Script() { } " +
293 compileScript +
294 "} }\r\n";
281 break; 295 break;
282 } 296 }
283 return CompileFromCSorVBText(compileScript, l); 297 return CompileFromCSorVBText(compileScript, l);
@@ -361,6 +375,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
361 case enumCompileType.cs: 375 case enumCompileType.cs:
362 results = CScodeProvider.CompileAssemblyFromSource(parameters, Script); 376 results = CScodeProvider.CompileAssemblyFromSource(parameters, Script);
363 break; 377 break;
378 case enumCompileType.js:
379 results = JScodeProvider.CompileAssemblyFromSource(parameters, Script);
380 break;
364 default: 381 default:
365 throw new Exception("Compiler is not able to recongnize language type \"" + lang.ToString() + "\""); 382 throw new Exception("Compiler is not able to recongnize language type \"" + lang.ToString() + "\"");
366 } 383 }