mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00

--HG-- branch : dev rename : src/Orchard.Tests.Modules/Scripting/ScriptingTests.cs => src/Orchard.Tests.Modules/Scripting.Dlr/ScriptingTests.cs rename : src/Orchard.Tests.Modules/SimpleScripting/EvaluatorTests.cs => src/Orchard.Tests.Modules/Scripting/EvaluatorTests.cs rename : src/Orchard.Tests.Modules/SimpleScripting/ParserTests.cs => src/Orchard.Tests.Modules/Scripting/ParserTests.cs rename : src/Orchard.Tests.Modules/SimpleScripting/SimpleScriptingTests.cs => src/Orchard.Tests.Modules/Scripting/SimpleScriptingTests.cs rename : src/Orchard.Tests.Modules/SimpleScripting/TokenizerTests.cs => src/Orchard.Tests.Modules/Scripting/TokenizerTests.cs rename : src/Orchard.Web/Modules/Orchard.Scripting.Dlr/Orchard.Scripting.csproj => src/Orchard.Web/Modules/Orchard.Scripting.Dlr/Orchard.Scripting.Dlr.csproj
36 lines
1.3 KiB
C#
36 lines
1.3 KiB
C#
using IronRuby;
|
|
using Microsoft.Scripting.Hosting;
|
|
|
|
namespace Orchard.Scripting.Dlr.Services {
|
|
public class RubyScriptingRuntime : IScriptingRuntime {
|
|
private readonly LanguageSetup _defaultLanguageSetup;
|
|
private readonly ScriptRuntime _scriptingRuntime;
|
|
|
|
public RubyScriptingRuntime() {
|
|
_defaultLanguageSetup = Ruby.CreateRubySetup();
|
|
|
|
var setup = new ScriptRuntimeSetup();
|
|
setup.LanguageSetups.Add(_defaultLanguageSetup);
|
|
_scriptingRuntime = new ScriptRuntime(setup);
|
|
}
|
|
|
|
public ScriptEngine GetDefaultEngine() {
|
|
return _scriptingRuntime.GetEngineByTypeName(_defaultLanguageSetup.TypeName);
|
|
}
|
|
|
|
public ScriptScope CreateScope() {
|
|
return _scriptingRuntime.CreateScope();
|
|
}
|
|
|
|
public dynamic ExecuteExpression(string expression, ScriptScope scope) {
|
|
var engine = GetDefaultEngine();
|
|
var source = engine.CreateScriptSourceFromString(expression);
|
|
return source.Execute(scope);
|
|
}
|
|
|
|
public void ExecuteFile(string fileName, ScriptScope scope) {
|
|
var engine = GetDefaultEngine();
|
|
engine.ExecuteFile(fileName, scope);
|
|
}
|
|
}
|
|
} |