Strip trailing white space from regex: directives.
This was particularly confusing when reading a file with Windows line endings. The CR would become part of the regex.
This commit is contained in:
@@ -71,7 +71,8 @@ impl Directive {
|
|||||||
var,
|
var,
|
||||||
rest)));
|
rest)));
|
||||||
}
|
}
|
||||||
Ok(Directive::Regex(var, rest[varlen + 1..].to_string()))
|
// Ignore trailing white space in the regex, including CR.
|
||||||
|
Ok(Directive::Regex(var, rest[varlen + 1..].trim_right().to_string()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -410,10 +411,12 @@ mod tests {
|
|||||||
Ok(true));
|
Ok(true));
|
||||||
assert_eq!(b.directive("[x86]sameln: $x $(y=[^]]*) there").map_err(e2s),
|
assert_eq!(b.directive("[x86]sameln: $x $(y=[^]]*) there").map_err(e2s),
|
||||||
Ok(true));
|
Ok(true));
|
||||||
|
// Windows line ending sneaking in.
|
||||||
|
assert_eq!(b.directive("regex: Y=foo\r").map_err(e2s), Ok(true));
|
||||||
|
|
||||||
let c = b.finish();
|
let c = b.finish();
|
||||||
assert_eq!(c.to_string(),
|
assert_eq!(c.to_string(),
|
||||||
"#0 regex: X=more text\n#1 not: patt $(x) $(y) here\n#2 sameln: $(x) \
|
"#0 regex: X=more text\n#1 not: patt $(x) $(y) here\n#2 sameln: $(x) \
|
||||||
$(y=[^]]*) there\n");
|
$(y=[^]]*) there\n#3 regex: Y=foo\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user