示例#1
0
        public async Task ListAsync()
        {
            var items = await this.DataBaseContext.Dispatcher.InvokeAsync(() =>
            {
                var query = from item in this.DataBaseContext
                            where StringUtility.GlobMany(item.Name, FilterProperties.FilterExpression)
                            select new { item.IsLoaded, item.Name };
                return(query.ToArray());
            });

            var tb = new TerminalStringBuilder();

            foreach (var item in items)
            {
                if (item.IsLoaded == false)
                {
                    tb.Foreground = TerminalColor.BrightBlack;
                    tb.AppendLine(item.Name);
                    tb.Foreground = null;
                }
                else
                {
                    tb.AppendLine(item.Name);
                }
            }
            tb.AppendEnd();
            this.Out.WriteLine(tb.ToString());
        }
示例#2
0
        public static void Print(TextWriter writer, LogInfo[] logs)
        {
            var count = 0;

            var tb = new TerminalStringBuilder();

            tb.AppendLine();
            tb.AppendLine(string.Empty.PadRight(Console.BufferWidth - 1, '='));

            foreach (var item in logs)
            {
                if (LogProperties.Limit >= 0 && LogProperties.Limit <= count)
                {
                    break;
                }

                tb.Foreground = TerminalColor.Red;
                tb.AppendLine($"Revision: {item.Revision}");
                tb.Foreground = null;
                tb.AppendLine($"Author  : {item.UserID}");
                tb.AppendLine($"Date    : {item.DateTime}");
                if (IsQuiet == false)
                {
                    tb.AppendLine();
                    tb.AppendLine(item.Comment);
                }
                tb.AppendLine(string.Empty.PadRight(Console.BufferWidth - 1, '='));
                count++;
            }
            tb.AppendLine();

            writer.Write(tb.ToString());
        }
        protected override string FormatPrompt(string prompt)
        {
            if (this.IsCommandMode == false)
            {
                return(base.FormatPrompt(prompt));
            }
            else
            {
                var postfixPattern = string.Join(string.Empty, postfix.Select(item => $"[{item}]"));
                var tb             = new TerminalStringBuilder();
                if (this.commandContext.IsOnline == false)
                {
                    var match = Regex.Match(prompt, $"(.*)(?<postfix>{postfixPattern})$");
                    tb.Foreground = TerminalColor.BrightGreen;
                    tb.Append(match.Groups[1].Value);
                    tb.Foreground = null;
                    tb.Append(match.Groups[2].Value);
                }
                else
                {
                    var p1      = prompt.TrimStart();
                    var p2      = prompt.TrimEnd();
                    var prefix  = prompt.Substring(p1.Length);
                    var postfix = prompt.Substring(p2.Length);
                    var uri     = new Uri(prompt.Trim());

                    tb.Append(prefix);
                    tb.Foreground = TerminalColor.BrightGreen;
                    tb.Append(uri.Scheme);
                    tb.Foreground = null;
                    tb.Append(Uri.SchemeDelimiter);
                    tb.Foreground = TerminalColor.BrightCyan;
                    tb.Append(uri.UserInfo);
                    tb.Foreground = null;
                    tb.Append("@");
                    tb.Foreground = TerminalColor.BrightCyan;
                    tb.Append(uri.Authority);
                    tb.Foreground = null;
                    tb.Append(uri.LocalPath);
                    tb.Append(postfix);
                }
                tb.AppendEnd();
                return(tb.ToString());
            }
        }