in focus/internals/src/lib/index/content_hash.rs [510:552]
fn extract_load_statement_package_dependencies(content: &str) -> BTreeSet<Label> {
lazy_static! {
static ref RE: Regex = Regex::new(
r#"(?x)
# Literal "load".
load
\s*?
# Open parenthesis.
\(
\s*?
# String literal enclosed in quotes.
(?:
"( [[:print:]--"]*? )"
| '( [[:print:]--']*? )'
)
# Either a closing parenthesis or a comma to start the argument list.
\s*?
(?:
,
| \)
)
"#
)
.unwrap();
}
let mut result = BTreeSet::new();
for cap in RE.captures_iter(content) {
let value = cap.get(1).or_else(|| cap.get(2)).unwrap().as_str();
let label: Label = match value.parse() {
Ok(label) => label,
Err(e) => {
warn!(?e, "Failed to parse label in load statement");
continue;
}
};
result.insert(label);
}
result
}