private Token ReaderComment(CharIterator reader) { var isMulti = reader.NextIs('*'); var i = isMulti ? reader.IndexOf("*/") : reader.IndexOf("\n"); var start = reader.Position + 2; var end = i < 0 ? reader.Length : i - 1; var content = reader.ReadSeek(start, end - start); reader.Position = i < 0 ? reader.Length : i + 1; return(new Token() { Type = TokenType.Comment, Content = content }); }
private bool IsBlock(CharIterator reader) { var endIndex = reader.IndexOf('}'); if (endIndex < 0) { return(false); } var lineIndex = reader.IndexOf('\n'); if (lineIndex > 0 && endIndex > lineIndex) { return(false); } var startIndex = reader.IndexOf('{', 1); return(startIndex > endIndex); }
private Token ReaderValue(CharIterator reader) { var end = reader.IndexOf('}'); var content = reader.Read(end - reader.Position - 1, 1); reader.Position = end; return(new Token() { Type = content.IndexOf('~') >= 0 ? TokenType.Random : TokenType.Value, Content = content }); }
private Token ReaderIntFor(CharIterator reader) { var end = reader.IndexOf('}'); var content = reader.Read(end - reader.Position - 1, 1); reader.Position = end; return(new BlockToken() { Type = TokenType.IntFor, Content = content, Children = RenderBlockInner(reader, true) }); }
private Token ReaderFor(CharIterator reader) { var end = reader.IndexOf('}'); var start = reader.Position + (reader.NextIs('~') ? 2 : 4); var content = reader.ReadSeek(start, end - start); reader.Position = end; return(new BlockToken() { Type = TokenType.For, Content = content, Children = RenderBlockInner(reader, true) }); }