コード例 #1
0
        public static void InputRewriter(string rewriter, int io_counter)
        {
            string space_name = "";
            bool   load       = false;
            bool   text       = false;


            //
            // IS IT COMMENT?
            //

            if (rewriter.StartsWith("// "))
            {
                text = true;
            }


            //
            // REMOVING SYSTEM COMMANDS FROM THE
            // START OF REWRITER
            //

            if (rewriter.Split('?').Length == 2)
            {
                var parts = rewriter.Split('?');
                space_name = parts[0];
                rewriter   = parts[1];
            }
            else if (rewriter.StartsWith("load "))
            {
                load     = true;
                rewriter = Utilities.RemoveFromStart(rewriter, "load ");
            }



            //
            // GENERATING THE REWRITER IN
            // THE DESIERED FORMAT
            //

            if (rewriter.Replace(" vs ", "") != rewriter)
            {
                //
                // IN CASE OF VERSUS
                //

                var    rewriter_parts = rewriter.Replace("vs", "&").Split('&');
                string new_rewriter   = "";

                for (int i = 0; i < rewriter_parts.Length - 1; i++)
                {
                    new_rewriter = Utilities.Concatenate(new_rewriter, Notation.Generate(rewriter_parts[i]));
                    new_rewriter = Utilities.Concatenate(new_rewriter, " vs ");
                }

                rewriter = Utilities.Concatenate(
                    new_rewriter, Notation.Generate(rewriter_parts[rewriter_parts.Length - 1])
                    );
            }
            else
            {
                //
                // IN CASE OF THE SIMPLE REWRITER
                //

                if (!text)
                {
                    rewriter = Notation.Generate(rewriter);
                }
            }


            //
            // SYSTEM COMMANDS WRAPPER
            //

            if (space_name != "")
            {
                rewriter = Utilities.Concatenate(space_name + " → ", rewriter);
            }
            else if (load)
            {
                rewriter = Utilities.Concatenate("Load ← ", rewriter);
            }

            if (text)
            {
                int x_place = 0;
                rewriter = Utilities.RemoveFromStart(rewriter, "//");

                if (rewriter.Length > Terminal.Width)
                {
                    x_place = 1;
                }

                Terminal.Label(
                    rewriter,
                    x_place, Terminal.Y,
                    Terminal.Width - 4,
                    TextJustification.Left
                    );

                LineWriter();
            }
            else
            {
                var    rewriter_lines = rewriter.Split('\n');
                string prompt         = "\n In[" + Numerics.Roman(io_counter) + "]= ";

                int  max_possible_size = Terminal.Width - prompt.Length - 3;
                bool summarize         = Utilities.LongestLine(rewriter) > max_possible_size;

                for (int i = 0; i < rewriter_lines.Length; i++)
                {
                    if ((double)i == Math.Floor((double)rewriter_lines.Length / 2))
                    {
                        Terminal.Y--;

                        Blue();
                        Terminal.Print(prompt);
                        Terminal.Reset();

                        if (summarize)
                        {
                            Terminal.Print(rewriter_lines[i].Substring(0, max_possible_size - 1));
                            Blue();
                            Terminal.PrintLn(" •••");
                            Terminal.Reset();
                        }
                        else
                        {
                            Terminal.PrintLn(rewriter_lines[i]);
                        }
                    }
                    else
                    {
                        if (summarize)
                        {
                            Terminal.PrintLn(
                                Utilities.Repeat(
                                    " ",
                                    prompt.Length - 1
                                    ) +
                                rewriter_lines[i].Substring(
                                    0, max_possible_size - 4
                                    )
                                );
                        }
                        else
                        {
                            Terminal.PrintLn(
                                Utilities.Repeat(" ", prompt.Length - 1)
                                + rewriter_lines[i]
                                );
                        }
                    }
                }
            }
        }