Esempio n. 1
0
        public static string ToString(this ColorCodeType colorCodeType,
                                      ColorCodeIndicatorType colorCodeIndicatorType)
        {
            string colorCodeText =
                Encoding.GetEncoding(CodePage437).GetString(new byte[] {
                ((byte)colorCodeType)
            });

            switch (colorCodeIndicatorType)
            {
            case ColorCodeIndicatorType.None:
                return(colorCodeText);

            case ColorCodeIndicatorType.Ampersand:
                return("&" + colorCodeText);

            case ColorCodeIndicatorType.Percent:
                return("%" + colorCodeText);

            default:
                goto case ColorCodeIndicatorType.None;
            }
        }
Esempio n. 2
0
        public static string ColorCodeBeforeSymbolsAndAfter(string input, ColorCodeType beforeColorCodeType,
                                                            ColorCodeType afterColorCodeType)
        {
            bool escaping     = false;
            bool wasEscaping  = false;
            bool symbolStreak = false;

            for (int inputIndexer = 0; inputIndexer < input.Length; inputIndexer++)
            {
                char inputCharacter = input[inputIndexer];

                if (inputCharacter == SymbolEscapeCharacter)
                {
                    escaping = !escaping;
                }

                if (escaping)
                {
                    symbolStreak = false;
                    wasEscaping  = true;
                }
                else if (inputIndexer < input.Length - 1 && wasEscaping)
                {
                    if (Symbols.Contains(input[inputIndexer + 1].ToString()))
                    {
                        continue;
                    }

                    input =
                        input.Insert(inputIndexer + 1,
                                     afterColorCodeType.ToString(ColorCodeIndicatorType.Ampersand));

                    inputIndexer += 2;

                    wasEscaping = false;
                }
                else if (inputIndexer < input.Length - 2 &&
                         IsColorCode(input.Substring(inputIndexer, 2)))
                {
                    inputIndexer += 2;

                    symbolStreak = false;
                }
                else if (Symbols.Contains(inputCharacter.ToString()) && !symbolStreak)
                {
                    input =
                        input.Insert(inputIndexer,
                                     beforeColorCodeType.ToString(ColorCodeIndicatorType.Ampersand));

                    inputIndexer += 2;

                    symbolStreak = true;
                }
                else if ((((inputCharacter == ' ' ||
                            Char.IsLetter(inputCharacter)) ||
                           Char.IsNumber(inputCharacter)) && symbolStreak) ||
                         (inputIndexer > 0 && input[inputIndexer - 1] == '\n'))
                {
                    if (inputIndexer != input.Length - 1)
                    {
                        input =
                            input.Insert(inputIndexer,
                                         afterColorCodeType.ToString(ColorCodeIndicatorType.Ampersand));
                    }

                    inputIndexer += 2;

                    symbolStreak = false;
                }
            }

            input = input.Replace(SymbolEscapeCharacter.ToString(), "");

            if (!IsColorCode(input.TrimStart()))
            {
                input =
                    input.Insert(0,
                                 afterColorCodeType.ToString(ColorCodeIndicatorType.Ampersand));
            }

            return(input);
        }