/// <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) { // Retrieving slot's lambda, no reasons to clone, GetSlot will clone. var filter = input.GetEx <string>(); input.Value = null; if (string.IsNullOrEmpty(filter)) { var list = Create.Slots() .Select(x => new Node("", x)) .ToList(); list.Sort((lhs, rhs) => string .Compare( lhs.Get <string>(), rhs.Get <string>(), System.StringComparison.InvariantCulture)); var whitelist = signaler.Peek <List <Node> >("whitelist"); input.AddRange(list .Where(x => whitelist == null || whitelist.Any(x2 => x2.Name == "signal" && x2.Get <string>() == x.Get <string>()))); } else { var list = Create.Slots() .Where(x => x.StartsWith(filter)) .Select(x => new Node("", x)) .ToList(); list.Sort((lhs, rhs) => string .Compare( lhs.Get <string>(), rhs.Get <string>(), System.StringComparison.InvariantCulture)); var whitelist = signaler.Peek <List <Node> >("whitelist"); input.AddRange(list.Where(x => whitelist == null || whitelist.Any(x2 => x2.Name == "signal" && x2.Get <string>() == x.Get <string>()))); } }
/// <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) { // Retrieving slot's lambda, no reasons to clone, GetSlot will clone. input.AddRange(Create.GetSlot(input.GetEx <string>()).Children.ToList()); }
/// <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) { Create.DeleteSlot(input.GetEx <string>()); }
/// <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) { // Retrieving slot's lambda, no reasons to clone, GetSlot will clone. input.Value = Create.SlotExists(input.GetEx <string>()); }