コード例 #1
0
ファイル: WriterTests.cs プロジェクト: Roobles/OmniColour
        public void TestColourClearing()
        {
            const OmniColours colour = OmniColours.BrightCyan;
            var initialColour        = TestWriter.GetDecoration();

            TestWriter.SetDecoration(new OmniDecoration(colour));

            TestWriter.Write("Test01");
            AssertLastColour(colour);

            TestWriter.Write("Test02");
            AssertLastColour(colour);

            TestWriter.ClearDecoration();
            AssertLastColour(initialColour);

            TestWriter.Write(colour, "Test03");
            AssertLastColour(initialColour);

            TestWriter.WriteLine("Test04");
            AssertLastColour(initialColour);

            var message = new ColourMessage();

            message.SetDecoration(new OmniDecoration(colour));
            message.AppendLine("Test05");
            TestWriter.Write(message);

            AssertEqual(initialColour, TestColours.Last());
        }
コード例 #2
0
        private static string GetConsoleColourName(OmniColours colour)
        {
            string parsed;

            return(string.IsNullOrEmpty(parsed = GetDescription(colour))
        ? Win32Colours.DefaultColour
        : parsed);
        }
コード例 #3
0
        private static string GetDescription(OmniColours colour)
        {
            var enumType             = colour.GetType();
            var enumInfo             = enumType.GetField(colour.ToString());
            var descriptionAttribute = enumInfo.GetCustomAttributes(typeof(DescriptionAttribute), true)
                                       .OfType <DescriptionAttribute>()
                                       .FirstOrDefault();

            return(descriptionAttribute != null
        ? descriptionAttribute.Description
        : string.Empty);
        }
コード例 #4
0
ファイル: WriterTests.cs プロジェクト: Roobles/OmniColour
        public void TestColourWrite()
        {
            const string      colourText = "Hello, world.";
            const string      blankText  = "Goodbye, world.";
            const OmniColours colour     = OmniColours.Blue;

            var decoration = new OmniDecoration(colour);
            var writer     = TestWriter;
            var message    = OmniFactory.BuildMessage();

            Assert.IsNotNull(message.AppendLine(decoration, colourText));
            Assert.IsNotNull(message.AppendLine(blankText));
            Assert.IsNotNull(writer.Write(message));

            Assert.AreEqual(TestContents.Count, 2);
            Assert.AreEqual(TestColours.First(), colour);
        }
コード例 #5
0
 protected ConsoleColor ToConsoleColour(OmniColours colour)
 {
     // TODO: Improve this.
     return((ConsoleColor)Enum.Parse(typeof(ConsoleColor), GetConsoleColourName(colour)));
 }
コード例 #6
0
 protected override void SetColour(OmniColours colour)
 {
     Console.ForegroundColor = ToConsoleColour(colour);
 }
コード例 #7
0
ファイル: OmniColour.cs プロジェクト: Roobles/OmniColour
 /// <summary>
 /// Writes a single block of text to the command line.  Uses the colour provided.
 /// </summary>
 /// <param name="colour">Colour to decorate with.</param>
 /// <param name="value">The block of text to be written.</param>
 public static IColourWriter Write(OmniColours colour, string value)
 {
     return(Writer.Write(colour, value));
 }
コード例 #8
0
ファイル: ColourMessage.cs プロジェクト: Roobles/OmniColour
 protected IOmniDecoration ToDecoration(OmniColours colour)
 {
     return(new OmniDecoration(colour));
 }
コード例 #9
0
ファイル: OmniDecoration.cs プロジェクト: Roobles/OmniColour
 public OmniDecoration(OmniColours colour)
 {
     _colour = colour;
 }
コード例 #10
0
 protected void WriteColour(StreamWriter writer, OmniColours colour)
 {
     WriteByteSequence(writer, AnsiColours.InitControlSequence);
     WriteString(writer, GetColourEncoding(colour));
 }
コード例 #11
0
ファイル: OutputWriter.cs プロジェクト: Roobles/OmniColour
 protected abstract void SetColour(OmniColours colour);
コード例 #12
0
ファイル: ColourWriter.cs プロジェクト: Roobles/OmniColour
 private static IColourMessage ToMessage(OmniColours colour, string value)
 {
     return(new ColourMessage().Append(ToDecoration(colour), value));
 }
コード例 #13
0
ファイル: ColourWriter.cs プロジェクト: Roobles/OmniColour
 public IColourWriter WriteLine(OmniColours colour, string line)
 {
     return(Write(colour, string.Format("{0}{1}", line, SysEnv.NewLine)));
 }
コード例 #14
0
ファイル: WriterTests.cs プロジェクト: Roobles/OmniColour
 protected void AssertLastColour(OmniColours colour)
 {
     Assert.AreEqual(colour, TestColours.Last());
 }
コード例 #15
0
ファイル: ColourMessage.cs プロジェクト: Roobles/OmniColour
 public IColourMessage AppendFormat(OmniColours colour, string format, params object[] arguments)
 {
     return(AppendFormat(ToDecoration(colour), format, arguments));
 }
コード例 #16
0
ファイル: ColourMessage.cs プロジェクト: Roobles/OmniColour
 public IColourMessage AppendLine(OmniColours colour, string value)
 {
     return(AppendLine(ToDecoration(colour), value));
 }
コード例 #17
0
ファイル: ColourWriter.cs プロジェクト: Roobles/OmniColour
 public IColourWriter Write(OmniColours colour, string value)
 {
     Write(ToMessage(colour, value));
     return(this);
 }
コード例 #18
0
ファイル: OmniColour.cs プロジェクト: Roobles/OmniColour
 /// <summary>
 /// Writes a formatted block of text to the command line.  Uses the colour provided.
 /// </summary>
 /// <param name="colour">Colour to decorate with.</param>
 /// <param name="format">A format string.</param>
 /// <param name="arguments">Parameters to be provided to the format string.</param>
 public static IColourWriter WriteFormat(OmniColours colour, string format, params object[] arguments)
 {
     return(Writer.WriteFormat(colour, format, arguments));
 }
コード例 #19
0
 protected override void SetColour(OmniColours colour)
 {
     using (var stdout = Console.OpenStandardOutput())
         using (var writer = new StreamWriter(stdout))
             WriteColour(writer, colour);
 }
コード例 #20
0
ファイル: OmniColour.cs プロジェクト: Roobles/OmniColour
 /// <summary>
 /// Writes a single line to the command line.  Uses the colour provided.
 /// </summary>
 /// <param name="colour">Colour to decorate with.</param>
 /// <param name="line">Line to be written.</param>
 public static IColourWriter WriteLine(OmniColours colour, string line)
 {
     return(Writer.WriteLine(colour, line));
 }
コード例 #21
0
        protected string GetColourEncoding(OmniColours colour)
        {
            const string format = "1;{0}m";

            return(string.Format(format, (int)colour));
        }
コード例 #22
0
ファイル: OmniColour.cs プロジェクト: Roobles/OmniColour
 /// <summary>
 /// Instantiates a new instance of an IOmniDecoration.
 /// </summary>
 /// <param name="colour">The colour of the decoration.</param>
 public static IOmniDecoration Decoration(OmniColours colour)
 {
     return(new OmniDecoration(colour));
 }
コード例 #23
0
 protected override void SetColour(OmniColours colour)
 {
     ColourList.Add(colour);
 }
コード例 #24
0
 internal void AssertEqual(IOmniDecoration a, OmniColours b)
 {
     AssertEqual(a, new OmniDecoration(b));
 }