private void ColorizeSegment(ColorizedSegment currentSegment)
 {
     if (Keywords.Contains(currentSegment.Value.Trim()))
     {
         currentSegment.Color = EditorColors.Keyword;
     }
     else if (ValueWords.Contains(currentSegment.Value.Trim()))
     {
         currentSegment.Color = EditorColors.ValueWord;
     }
     else if (int.TryParse(currentSegment.Value, out int _))
     {
         currentSegment.Color = EditorColors.Number;
     }
     else if (IsHexWithPrefix(currentSegment.Value))
     {
         currentSegment.Color = EditorColors.Number;
     }
 }
        public List <ColorizedSegment> Colorize(string line)
        {
            //todo: clean this code up

            var ret = new List <ColorizedSegment>();

            var currentSegment = new ColorizedSegment();

            for (var i = 0; i < line.Length; i++)
            {
                if (line[i] == '"')
                {
                    ret.Add(currentSegment);
                    currentSegment = new ColorizedSegment
                    {
                        Color = EditorColors.String
                    };

                    currentSegment.Value += line[i++];

                    i += GetEnclosedString(line, out string token, i);

                    currentSegment.Value += token;

                    ret.Add(currentSegment);
                    currentSegment = new ColorizedSegment();
                }
                else if (line[i] == '/' && i + 1 < line.Length && line[i + 1] == '/')
                {
                    ColorizeSegment(currentSegment);
                    ret.Add(currentSegment);
                    currentSegment = new ColorizedSegment
                    {
                        Color = EditorColors.Comment,
                    };

                    currentSegment.Value += line[i++];
                    currentSegment.Value += line[i++];

                    while (i < line.Length)
                    {
                        currentSegment.Value += line[i++];
                    }

                    break;
                }
                else if (line[i] == ' ')
                {
                    ColorizeSegment(currentSegment);
                    currentSegment.Value += " ";

                    ret.Add(currentSegment);
                    currentSegment = new ColorizedSegment();
                }
                else if (Operators.Contains(line[i]))
                {
                    ColorizeSegment(currentSegment);
                    ret.Add(currentSegment);

                    currentSegment = new ColorizedSegment {
                        Color = EditorColors.Operator
                    };
                    currentSegment.Value += line[i];
                    ret.Add(currentSegment);

                    currentSegment = new ColorizedSegment();
                }
                else
                {
                    currentSegment.Value += line[i];
                }
            }

            if (!string.IsNullOrEmpty(currentSegment.Value))
            {
                ColorizeSegment(currentSegment);
                ret.Add(currentSegment);
            }

            return(ret);
        }