Пример #1
0
        /// <summary>
        ///     Читает и выводит в консоль файл в выбранной кодировке.
        /// </summary>
        /// <param name="encoding">Выбранная кодировка. Если null, то просит пользователя выбрать.</param>
        private void ReadFiles(Encoding encoding = null)
        {
            AskEncoding(encoding, encoding => manager.RootContainer.Loop.OnPaused = () =>
            {
                var errors = new List <(string filename, string message)>();

                foreach (var file in manager.SelectedFiles)
                {
                    var result = SafeIO
                                 .GetFullPath(file)
                                 .AndThen(fullPath => SafeIO.StreamReader(fullPath, encoding))
                                 .AndThen(reader =>
                    {
                        foreach (var maybeBlock in reader.ReadBlocks())
                        {
                            if (maybeBlock.State == ResultState.Error)
                            {
                                return(maybeBlock.Map(_ => new object()));
                            }

                            foreach (var c in maybeBlock.Value)
                            {
                                Console.Write(c);
                            }
                        }

                        return(Result <object> .Ok(new object()));
                    });
                    if (result is { State: ResultState.Error, ErrorMessage: var error })
Пример #2
0
 /// <summary>
 ///     Меняет текущую директорию.
 /// </summary>
 /// <param name="to">В какую директорию нужно перейти. null, если к списку дисков.</param>
 public void ChangeDir(string?to)
 {
     if (to == null)
     {
         CurrentDirectory = null;
     }
     else
     {
         var isExists = SafeIO
                        .GetFullPath(to)
                        .AndThen(fullPath => SafeIO
                                 .Exists(fullPath)
                                 .AndThen(isExists => isExists
                     ? Result <string> .Ok(fullPath)
                     : Result <string> .Error("Невозможно перейти в указанную директорию"))
                                 )
                        .AndThen(SafeIO.DirectoryInfo);
         var chDir = isExists
                     .AndThen(dirInfo => SafeIO.ChangeCurrentDirectory(dirInfo.FullName));
         ShowError(isExists, "Не удалось сменить директорию", "Нажмите «/», чтобы перейти к списку дисков.");
         if (isExists is { State : ResultState.Ok, Value : var directoryInfo })