/// <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) { _service.Delete( PathResolver.CombinePaths( _rootResolver.RootFolder, input.GetEx <string>())); }
/// <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 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) { // Checking if we should display hidden files (files starting with "."). var displayHiddenFiles = input.Children .FirstOrDefault(x => x.Name == "display-hidden")? .GetEx <bool>() ?? false; var root = PathResolver.Normalize(_rootResolver.RootFolder); var folder = input.GetEx <string>(); var files = _service .ListFiles( PathResolver.CombinePaths( _rootResolver.RootFolder, folder)) .ToList(); // Sorting and returning files to caller as lambda children. files.Sort(); input.Clear(); foreach (var idx in files) { // Making sure we don't show hidden operating system files by default. if (displayHiddenFiles || !Path.GetFileName(idx).StartsWith(".", StringComparison.InvariantCulture)) { input.Add(new Node("", idx.Substring(root.Length))); } } }
/// <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) { var displayHiddenFolders = input.Children .FirstOrDefault(x => x.Name == "display-hidden")? .GetEx <bool>() ?? false; var root = PathResolver.Normalize(_rootResolver.RootFolder); var folder = input.GetEx <string>(); input.Clear(); input.Value = null; var folders = _service .ListFolders( PathResolver.CombinePaths( _rootResolver.RootFolder, folder)) .ToList(); folders.Sort(); foreach (var idx in folders) { // Making sure we don't show hidden operating system folders by default. if (displayHiddenFolders || !idx.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries).Last().StartsWith(".", StringComparison.InvariantCulture)) { input.Add(new Node("", idx.Substring(root.Length).TrimEnd('/') + "/")); } } }
/// <summary> /// Implementation of slot. /// </summary> /// <param name="signaler">Signaler used to raise the signal.</param> /// <param name="input">Arguments to slot.</param> /// <returns>An awaitable task.</returns> public async Task SignalAsync(ISignaler signaler, Node input) { // Making sure we evaluate any children, to make sure any signals wanting to retrieve our source is evaluated. await signaler.SignalAsync("eval", input); // Saving file. if (input.Name == "io.file.save") { // Text content. await _service.SaveAsync( PathResolver.CombinePaths( _rootResolver.RootFolder, input.GetEx <string>()), input.Children.First().GetEx <string>()); } else { // Binary content. await _service.SaveAsync( PathResolver.CombinePaths( _rootResolver.RootFolder, input.GetEx <string>()), input.Children.First().GetEx <byte[]>()); } }
/// <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) { input.Value = _service.Exists( PathResolver.CombinePaths( _rootResolver.RootFolder, input.GetEx <string>())); }
/// <summary> /// Implementation of slot. /// </summary> /// <param name="signaler">Signaler used to raise the signal.</param> /// <param name="input">Arguments to slot.</param> /// <returns>An awaitable task.</returns> public async Task SignalAsync(ISignaler signaler, Node input) { // Making sure we're able to handle returned values and nodes from slot implementation. var result = new Node(); await signaler.ScopeAsync("slots.result", result, async() => { // Loading file and converting its content to lambda. var filename = input.GetEx <string>(); var hyperlambda = await _service.LoadAsync( PathResolver.CombinePaths( _rootResolver.RootFolder, filename)); var lambda = new Parser(hyperlambda).Lambda(); // Preparing arguments, if there are any. 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. await signaler.SignalAsync("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()); }); }
/// <summary> /// Implementation of slot. /// </summary> /// <param name="signaler">Signaler used to raise the signal.</param> /// <param name="input">Arguments to slot.</param> /// <returns>An awaitable task.</returns> public async Task SignalAsync(ISignaler signaler, Node input) { input.Value = await _service.LoadAsync( PathResolver.CombinePaths( _rootResolver.RootFolder, input.GetEx <string>())); }
void MoveImplementation(Node input) { // Retrieving source path. string sourcePath = PathResolver.CombinePaths( _rootResolver.RootFolder, input.GetEx <string>()); // Retrieving destination path. var destinationPath = PathResolver .CombinePaths( _rootResolver.RootFolder, input.Children.First().GetEx <string>()); // Defaulting detination folder to be the same as source folder, unless a different folder is explicitly given. if (destinationPath.EndsWith("/", StringComparison.InvariantCultureIgnoreCase)) { destinationPath += Path.GetFileName(sourcePath); } // Sanity checking arguments. if (sourcePath == destinationPath) { throw new ArgumentException("You cannot copy a file using the same source and destination path"); } // For simplicity, we're deleting any existing files with the path of the destination file. if (_service.Exists(destinationPath)) { _service.Delete(destinationPath); } _service.Move(sourcePath, destinationPath); }
/// <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) { // Figuring out filename. var filename = PathResolver.CombinePaths( _rootResolver.RootFolder, input.GetEx <string>()); // Opening file and returning to caller. input.Value = _service.OpenFile(filename); }
/// <summary> /// Implementation of slot. /// </summary> /// <param name="signaler">Signaler used to raise the signal.</param> /// <param name="input">Arguments to slot.</param> /// <returns>An awaitable task.</returns> public async Task SignalAsync(ISignaler signaler, Node input) { // Making sure we evaluate any children, to make sure any signals wanting to retrieve our source is evaluated. await signaler.SignalAsync("eval", input); // Saving file await _service.SaveAsync( PathResolver.CombinePaths( _rootResolver.RootFolder, input.GetEx <string>()), input.Children.First().GetEx <string>()); }
/// <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) { var zipFile = PathResolver.CombinePaths( _rootResolver.RootFolder, input.GetEx <string>()); var folderNode = input.Children .FirstOrDefault(x => x.Name == "folder")? .GetEx <string>(); var targetFolder = folderNode == null? Path.GetDirectoryName(zipFile) : PathResolver.CombinePaths(_rootResolver.RootFolder, folderNode).Replace("/", "\\"); var fastZip = new FastZip(); fastZip.ExtractZip(zipFile, targetFolder, null); }