pattern_r(p, PAT_RECOVERY_SET);
}
-/// Parses a pattern list separated by pipes `|`
+/// Parses a pattern list separated by pipes `|`.
pub(super) fn pattern_top(p: &mut Parser) {
pattern_top_r(p, PAT_RECOVERY_SET)
}
}
/// Parses a pattern list separated by pipes `|`
-/// using the given `recovery_set`
+/// using the given `recovery_set`.
pub(super) fn pattern_top_r(p: &mut Parser, recovery_set: TokenSet) {
p.eat(T![|]);
pattern_r(p, recovery_set);
}
/// Parses a pattern list separated by pipes `|`, with no leading `|`,using the
-/// given `recovery_set`
+/// given `recovery_set`.
+
// test or_pattern
// fn main() {
// match () {
pub fn extract_untagged(text: &str) -> Vec<CommentBlock> {
let mut res = Vec::new();
- let prefix = "// ";
let lines = text.lines().map(str::trim_start);
let dummy_block = CommentBlock { id: String::new(), line: 0, contents: Vec::new() };
let mut block = dummy_block.clone();
for (line_num, line) in lines.enumerate() {
- if line == "//" {
- block.contents.push(String::new());
- continue;
- }
-
- let is_comment = line.starts_with(prefix);
- if is_comment {
- block.contents.push(line[prefix.len()..].to_string());
- } else {
- if !block.contents.is_empty() {
- res.push(mem::replace(&mut block, dummy_block.clone()));
+ match line.strip_prefix("//") {
+ Some(mut contents) => {
+ if let Some(' ') = contents.chars().next() {
+ contents = &contents[1..];
+ }
+ block.contents.push(contents.to_string());
+ }
+ None => {
+ if !block.contents.is_empty() {
+ let block = mem::replace(&mut block, dummy_block.clone());
+ res.push(block);
+ }
+ block.line = line_num + 2;
}
- block.line = line_num + 2;
}
}
if !block.contents.is_empty() {