/// <summary> /// Implementation of slot. /// </summary> /// <param name="signaler">Signaler used to raise the signal.</param> /// <param name="input">Arguments to slot.</param> public void Signal(ISignaler signaler, Node input) { // Making sure we're able to handle returned values and nodes from slot implementation. var result = new Node(); signaler.Scope("slots.result", result, () => { // Loading file and converting its content to lambda. var filename = input.GetEx <string>(); var hyperlambda = _service .Load( PathResolver.CombinePaths( _rootResolver.RootFolder, filename)); // Creating and parametrising our lambda object from argument + file's Hyperlambda content. var lambda = GetLambda(input, hyperlambda, filename); // Evaluating lambda of slot. signaler.Signal("eval", lambda); // Applying result. ApplyResult(input, result); }); }
/// <summary> /// Implementation of signal /// </summary> /// <param name="signaler">Signaler used to signal</param> /// <param name="input">Parameters passed from signaler</param> public void Signal(ISignaler signaler, Node input) { var result = new Node(); signaler.Scope("slots.result", result, () => { var whitelist = GetWhitelist(input); signaler.Scope("whitelist", whitelist.Vocabulary, () => { signaler.Signal("eval", whitelist.Lambda.Clone()); }); input.Clear(); input.Value = result.Value; input.AddRange(result.Children.ToList()); }); }
/// <summary> /// Handles the signal for the class. /// </summary> /// <param name="signaler">Signaler used to signal the slot.</param> /// <param name="input">Root node for invocation.</param> public void Signal(ISignaler signaler, Node input) { signaler.Scope( "mssql.transaction", new Transaction(signaler, signaler.Peek <SqlConnectionWrapper>("mssql.connect").Connection), () => signaler.Signal("eval", input)); }
/// <summary> /// Implementation of signal /// </summary> /// <param name="signaler">Signaler used to signal</param> /// <param name="input">Parameters passed from signaler</param> public void Signal(ISignaler signaler, Node input) { var arguments = GetArguments(input); signaler.Scope(arguments.Name, arguments.Value, () => { signaler.Signal("eval", arguments.Lambda); }); }
/// <summary> /// Slot implementation. /// </summary> /// <param name="signaler">Signaler that raised signal.</param> /// <param name="input">Arguments to slot.</param> public void Signal(ISignaler signaler, Node input) { // Making sure we're able to handle returned values and nodes from slot implementation. var result = new Node(); signaler.Scope("slots.result", result, () => { // Evaluating lambda of slot, making sure we temporary clear any existing [whitelist] declarations. var lambda = GetLambda(signaler, input); signaler.Scope("whitelist", null, () => { signaler.Signal("eval", lambda); }); input.Clear(); input.Value = result.Value; input.AddRange(result.Children.ToList()); }); }
/// <summary> /// Implementation of your slot. /// </summary> /// <param name="signaler">Signaler used to raise the signal.</param> /// <param name="input">Arguments to your slot.</param> public void Signal(ISignaler signaler, Node input) { using (var connection = new SqlConnectionWrapper(GetConnectionString(input))) { signaler.Scope( "mssql.connect", connection, () => signaler.Signal("eval", input)); input.Value = null; } }
/// <summary> /// Implementation of your slot. /// </summary> /// <param name="signaler">Signaler used to raise the signal.</param> /// <param name="input">Arguments to your slot.</param> public void Signal(ISignaler signaler, Node input) { using (var connection = new SqlConnectionWrapper( Executor.GetConnectionString( input, "mssql", "master", _configuration))) { signaler.Scope( "mssql.connect", connection, () => signaler.Signal("eval", input)); input.Value = null; } }
/// <summary> /// Slot implementation. /// </summary> /// <param name="signaler">Signaler that raised the signal.</param> /// <param name="input">Arguments to slot.</param> public void Signal(ISignaler signaler, Node input) { var args = GetArgs(input); input.Value = _cache.GetOrCreate(args.Item1, entry => { var result = new Node(); signaler.Scope("slots.result", result, () => { signaler.Signal("eval", args.Item2.Clone()); }); ConfigureCacheObject(entry, input); return(result.Value ?? result.Clone()); }); input.Clear(); }
/// <summary> /// Implementation of slot. /// </summary> /// <param name="signaler">Signaler used to raise the signal.</param> /// <param name="input">Arguments to slot.</param> public void Signal(ISignaler signaler, Node input) { // Making sure we're able to handle returned values and nodes from slot implementation. var result = new Node(); signaler.Scope("slots.result", result, () => { // Loading file and converting its content to lambda. var filename = input.GetEx <string>(); var hyperlambda = _service .Load( PathResolver.CombinePaths( _rootResolver.RootFolder, filename)); var lambda = new Parser(hyperlambda).Lambda(); // Preparing arguments, if there are any, making sure we remove any declarative [.arguments] first. lambda.Children .FirstOrDefault(x => x.Name == ".arguments")? .UnTie(); if (input.Children.Any()) { lambda.Insert(0, new Node(".arguments", null, input.Children.ToList())); } lambda.Insert(0, new Node(".filename", filename)); // Evaluating lambda of slot. signaler.Signal("eval", lambda); // Clearing Children collection, since it might contain input parameters. input.Clear(); /* * Simply setting value and children to "slots.result" stack object, since its value * was initially set to its old value during startup of method. */ input.Value = result.Value; input.AddRange(result.Children.ToList()); }); }