Stream reader to look for exit.
상속: System.IO.TextReader
예제 #1
0
 /// <summary>
 /// For finding and replacing, this gets data from the requested input stream
 /// </summary>
 /// <returns>Input stream</returns>
 private static System.IO.TextReader GetInputStream()
 {
     System.IO.TextReader retVal;
     if (Cmdline.Has("guid")) // user given guid on commandline
     {
     #if NET2_0 || NET3_5
         retVal = new System.IO.StringReader(string.Join("\r\n", Cmdline.Get("guid").Values.ToArray()));
     #else
         retVal = new System.IO.StringReader(string.Join("\r\n", Cmdline.Get("guid").Values));
     #endif
     }
     else if (Cmdline.Has("clipboard")) // gets guids from clipboard
     {
         retVal = new System.IO.StringReader(Tools.GetClipboard()??"");
     }
     else if (Cmdline.Has("file"))
     {
         retVal = new System.IO.StreamReader(Cmdline.Get("file").Value);
     }
     else if (ConsoleEx.InputRedirected && Console.In.Peek() != -1) // gets data via pipe syntax
     {
         retVal = Console.In;
     }
     else // reformatter - waits for input from user typing/pasting
     {
         Console.WriteLine("Type \"quit\" to quit");
         retVal = new ConsoleExitStream();
     }
     return retVal;
 }
예제 #2
0
        static void Main(string[] args)
        {
            try
            {
            if (Cmdline.Has("sleep"))
            {
                int timeout = Tools.Convert(Cmdline.Get("sleep").Value, 1000);
                if (timeout>0) System.Threading.Thread.Sleep(timeout);
            }
            if (Cmdline.Has("?") || Cmdline.Has("help"))
            {
                WriteHelp();
                return;
            }

            string type = null;
            if (!Cmdline.Get(0).IsSwitch)
            {
                type = Cmdline.Get(0).Value;
                if (!GuidFormats.IsValid(type))
                {
                    WriteHelp("Format Not Found: " + type);
                }
            }

            bool upcase = false;
            if (Cmdline.Has("u")) upcase=true;

            int count = -1;
            if (Cmdline.Has("n")) count = Tools.Convert(Cmdline.Get("n").Value, 1);
            else if (Cmdline.Has("count")) count = Tools.Convert(Cmdline.Get("count").Value, 1);

            Guider guider = null;
            if (Cmdline.Has("z")) guider = Guider.NewZeroGuid;
            else if (Cmdline.Has("s")) guider = Guider.NewSequentialGuid;
            else if (Cmdline.Has("g")) guider = Guider.NewGuid;

            bool isFindOrReplace = Cmdline.Has("find") || Cmdline.Has("replace") || Cmdline.Has("replacebyline");

            if (!isFindOrReplace)
            {
                if (type==null) type="D";
                if (guider == null) guider = Guider.NewGuid;
                if (count < 0) count = 1;
                guider.Count = count;
                string output = GuidFormats.Format(type, guider, upcase, count>1);
                if (!Cmdline.Has("nocopy")) System.Windows.Forms.Clipboard.SetData(System.Windows.Forms.DataFormats.Text, output);
                Console.WriteLine(output);
            }
            else if (isFindOrReplace)
            {
                if (guider == null) guider = Guider.AsCurrent();
                guider.Count = count;
                System.IO.TextReader from;
                if (Cmdline.Has("guid"))
                {
                    from = new System.IO.StringReader(string.Join("\r\n", Cmdline.Get("guid").Values));
                }
                else if (Cmdline.Has("clipboard"))
                {
                    from = new System.IO.StringReader(System.Windows.Forms.Clipboard.GetText());
                }
                else if (ConsoleEx.InputRedirected && Console.In.Peek() != -1)
                {
                    from = Console.In;
                }
                else
                {
                    Console.Write("Type \"quit\" to quit");
                    from = new ConsoleExitStream();
                }
                if (Cmdline.Has("find"))
                {
                    List<Found> items = new List<Found>();
                    GuidSearcher.Search(Cmdline.Get("find").Value, from, items);
                    List<Guid> guids = new List<Guid>();
                    foreach(Found item in items)
                    {
                        guids.AddRange(item.Guids);
                        Console.WriteLine(((Cmdline.Has("l"))?((item.Line+1).ToString()+". "):"") + item.Match);
                        if (type != null)
                        {
                            foreach (Guid g in item.Guids)
                            {
                                string formatted = GuidFormats.Format(type, g, upcase, true);
                                if (formatted != item.Match) Console.WriteLine("\t" + formatted);
                            }
                        }
                    }
                    if (Cmdline.Has("copy")) System.Windows.Forms.Clipboard.SetData(System.Windows.Forms.DataFormats.Text, GuidFormats.Format(type, guids, upcase, true));
                }
                else // Cmdline.Has("replace")
                {
                    Dictionary<Guid, Guid> replacements = new Dictionary<Guid,Guid>();
                    if (Cmdline.Has("replacebyline"))
                    {
                        Console.WriteLine(".");
                        DefaultSearch.Replace(from, Console.Out, guider, replacements, type, upcase, Cmdline.Has("copy"));
                    }
                    else
                    {
                        System.Text.StringBuilder output = new System.Text.StringBuilder();
                        using (System.IO.TextWriter tw = new System.IO.StringWriter(output))
                        {
                            DefaultSearch.Replace(from, tw, guider, replacements, type, upcase);
                        }

                        Console.WriteLine(output.ToString());
                        if (Cmdline.Has("copy")) System.Windows.Forms.Clipboard.SetData(System.Windows.Forms.DataFormats.Text,output.ToString());
                    }
                }
            }

            }
            catch (Exception ex)
            {
                WriteHelp("OOPS! - an error occured: " + ex.Message);
            }
        }