///|
fn Cursor::comment(self : Cursor) -> Node raise ParseFailure {
let start = self.index
let mut level = -1
let buf = StringBuilder()
while true {
let mut i = -1
let max_level = if level == -1 { 2 } else { level }
while self.current() == Some('#') && i < max_level {
ignore(self.next())
i += 1
}
if level == -1 {
level = i
}
if self.current() != Some('\n') {
self.expect(' ')
while self.current() != None && self.current() != Some('\n') {
buf.write_char(self.current().unwrap())
ignore(self.next())
}
}
if self.is_next_line_comment(level) {
buf.write_char('\n')
ignore(self.next())
} else {
break
}
}
let content = buf.to_string()
let kind = match level {
0 => Comment(content)
1 => GroupComment(content)
_ => ResourceComment(content)
}
Node::with_span(kind, start, self.index)
}