Example #1
0
        private int InterpretTagIdOrClass(TokenInfo info)
        {
            switch(RestOfLine[0])
            {
                case '#':
                    SetColor(info, HamlTokenColor.HamlTagId);
                    break;
                case '.':
                    SetColor(info, HamlTokenColor.HamlTagClass);
                    break;
            }

            var match = Regex.Match(RestOfLine.Substring(1), @"[\s|\.|=|\{]");

            if (!match.Success)
                return RestOfLine.Length;

            int matchCount = match.Index + 1;

            if (match.Value == ".")
                _state = HamlState.InTag;
            else
            {
                _state = "-={".Contains(match.Value) ?
                    HamlState.AfterCodeTag : HamlState.AfterNonCodeTag;
            }

            return matchCount;
        }
Example #2
0
        private int InterpretAfterCodeTag(TokenInfo info)
        {
            _state = HamlState.AfterCodeTag;
            SetColor(info, HamlTokenColor.HamlCode);

            var match = Regex.Match(RestOfLine, @"//|""");

            if (!match.Success)
                return RestOfLine.Length;

            if (match.Index == 0)
            {
                switch (match.Value)
                {
                    case "//":
                        SetColor(info, HamlTokenColor.CsComment);
                        return RestOfLine.Length;
                    case "\"":
                        SetColor(info, HamlTokenColor.CsString);
                        var endOfString = Regex.Match(RestOfLine.Substring(1), "\"");
                        if (endOfString.Success)
                            return endOfString.Index + 2;

                        return RestOfLine.Length;
                }
            }

            return match.Index;
        }
Example #3
0
        private int InterpretTag(TokenInfo info)
        {
            SetColor(info, HamlTokenColor.HamlTag);

            var match = Regex.Match(RestOfLine, @"\s*[\s|=|\-|\{|#]");

            if (!match.Success)
                return RestOfLine.Length;

            int matchCount = match.Index;
            switch (match.Value.Trim())
            {
                case "=":
                case "-":
                case "{":
                    _state = HamlState.AfterCodeTag;
                    break;
                case "#":
                    _state = HamlState.InTag;
                    break;
                default:
                    _state = HamlState.AfterNonCodeTag;
                    break;
            }
            return matchCount;
        }
Example #4
0
 /// <summary>
 /// This method is used to set the line to be parsed.
 /// </summary>
 /// <param name="source">The line to parse.</param>
 /// <param name="offset">The character offset in the line to start parsing from. 
 /// You have to pay attention to this value.</param>
 public void SetSource(string source, int offset)
 {
     _currentLine = source;
     _currentPos = offset;
     _state = GetCurrentLineState();
 }