MCPcopy Create free account
hub / github.com/faern/rustscript / extract_extern_crates

Function extract_extern_crates

src/scriptbuilder.rs:118–138  ·  view source on GitHub ↗
(code: &str)

Source from the content-addressed store, hash-verified

116}
117
118fn extract_extern_crates(code: &str) -> Result<(Vec<CrateImport>, String)> {
119 let regex = create_extern_crate_regex();
120 let mut crates = Vec::new();
121 let mut new_code = String::new();
122 let mut last_start = 0;
123 for capture in regex.captures_iter(&code) {
124 let macro_use = capture.name("macro_use").is_some();
125 let name = capture.name("name").unwrap();
126 let package_name = capture.name("package_name").unwrap_or(name);
127 let version = capture.name("version").unwrap_or("*");
128 let crate_ = CrateImport::new(name, package_name, version, macro_use)
129 .chain_err(|| "Unable to parse extern crate statement")?;
130 crates.push(crate_);
131
132 let (start, end) = capture.pos(0).unwrap();
133 new_code.push_str(&code[last_start..start]);
134 last_start = end;
135 }
136 new_code.push_str(&code[last_start..]);
137 Ok((crates, new_code))
138}
139
140fn create_extern_crate_regex() -> Regex {
141 let macro_regex = r"(?P<macro_use>#\[macro_use\])?";

Callers 1

build_script_crateFunction · 0.85

Calls 1

Tested by

no test coverage detected