Reformat file

--HG--
branch : 1.x
This commit is contained in:
Renaud Paquay
2011-01-07 12:11:10 -08:00
parent aa8d357998
commit c3b2b87ed1

View File

@@ -5,16 +5,16 @@ using Orchard.Caching;
namespace Orchard.Scripting.Dlr.Services { namespace Orchard.Scripting.Dlr.Services {
public class RubyScriptExpressionEvaluator : IScriptExpressionEvaluator { public class RubyScriptExpressionEvaluator : IScriptExpressionEvaluator {
private readonly IScriptingManager _scriptingManager; private readonly IScriptingManager _scriptingManager;
private readonly ICacheManager _cacheManager; private readonly ICacheManager _cacheManager;
public RubyScriptExpressionEvaluator(IScriptingManager scriptingManager, ICacheManager cacheManager) { public RubyScriptExpressionEvaluator(IScriptingManager scriptingManager, ICacheManager cacheManager) {
_scriptingManager = scriptingManager; _scriptingManager = scriptingManager;
_cacheManager = cacheManager; _cacheManager = cacheManager;
} }
public object Evaluate(string expression, IEnumerable<IGlobalMethodProvider> providers) { public object Evaluate(string expression, IEnumerable<IGlobalMethodProvider> providers) {
object execContextType = _cacheManager.Get("---", ctx => (object)_scriptingManager.ExecuteExpression(@" object execContextType = _cacheManager.Get("---", ctx => (object)_scriptingManager.ExecuteExpression(@"
class ExecBlock class ExecBlock
def initialize(callbacks) def initialize(callbacks)
@callbacks = callbacks @callbacks = callbacks
@@ -38,34 +38,34 @@ class ExecContext
end end
ExecContext ExecContext
")); "));
var ops = _cacheManager.Get("----", ctx => (ObjectOperations)_scriptingManager.ExecuteOperation(x => x)); var ops = _cacheManager.Get("----", ctx => (ObjectOperations)_scriptingManager.ExecuteOperation(x => x));
object execContext = _cacheManager.Get(expression, ctx => (object)ops.InvokeMember(execContextType, "alloc", expression)); object execContext = _cacheManager.Get(expression, ctx => (object)ops.InvokeMember(execContextType, "alloc", expression));
dynamic result = ops.InvokeMember(execContext, "evaluate", new CallbackApi(this, providers)); dynamic result = ops.InvokeMember(execContext, "evaluate", new CallbackApi(this, providers));
return result; return result;
}
public class CallbackApi {
private readonly RubyScriptExpressionEvaluator _ruleManager;
private readonly IEnumerable<IGlobalMethodProvider> _providers;
public CallbackApi(RubyScriptExpressionEvaluator ruleManager, IEnumerable<IGlobalMethodProvider> providers) {
_ruleManager = ruleManager;
_providers = providers;
} }
public class CallbackApi { public object send(string name, IList<object> args) {
private readonly RubyScriptExpressionEvaluator _ruleManager; return _ruleManager.Evaluate(_providers, name, args);
private readonly IEnumerable<IGlobalMethodProvider> _providers;
public CallbackApi(RubyScriptExpressionEvaluator ruleManager, IEnumerable<IGlobalMethodProvider> providers) {
_ruleManager = ruleManager;
_providers = providers;
}
public object send(string name, IList<object> args) {
return _ruleManager.Evaluate(_providers, name, args);
}
}
private object Evaluate(IEnumerable<IGlobalMethodProvider> providers, string name, IList<object> args) {
GlobalMethodContext ruleContext = new GlobalMethodContext { FunctionName = name, Arguments = args.ToArray() };
foreach (var ruleProvider in providers) {
ruleProvider.Process(ruleContext);
}
return ruleContext.Result;
} }
} }
private object Evaluate(IEnumerable<IGlobalMethodProvider> providers, string name, IList<object> args) {
GlobalMethodContext ruleContext = new GlobalMethodContext { FunctionName = name, Arguments = args.ToArray() };
foreach (var ruleProvider in providers) {
ruleProvider.Process(ruleContext);
}
return ruleContext.Result;
}
}
} }