Add -I and -c cli options
This commit is contained in:
parent
04482f9f2f
commit
e90864a097
2 changed files with 38 additions and 0 deletions
|
|
@ -72,3 +72,26 @@ pub fn resolve_redirects(data: &mut Data) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn invert(data: &mut Data) {
|
||||
let links = mem::take(&mut data.links);
|
||||
let graph = mem::take(&mut data.graph);
|
||||
|
||||
let mut edges = graph
|
||||
.edges()
|
||||
.zip(links)
|
||||
.map(|((source, target), link)| (source, target, link))
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
edges.sort_by_key(|(_, target, _)| *target);
|
||||
|
||||
let mut edges = edges.into_iter().peekable();
|
||||
for node in graph.nodes() {
|
||||
data.graph.add_node();
|
||||
while edges.peek().is_some_and(|(_, target, _)| *target <= node) {
|
||||
let (source, _, link) = edges.next().unwrap();
|
||||
data.graph.add_edge(source);
|
||||
data.links.push(link);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,10 @@ struct Args {
|
|||
in_structure: Option<bool>,
|
||||
#[arg(long, short = 'R')]
|
||||
resolve_redirects: bool,
|
||||
#[arg(long, short = 'I')]
|
||||
invert_edges: bool,
|
||||
#[arg(long, short)]
|
||||
check_consistency: bool,
|
||||
}
|
||||
|
||||
fn main() -> io::Result<()> {
|
||||
|
|
@ -38,6 +42,7 @@ fn main() -> io::Result<()> {
|
|||
}
|
||||
|
||||
println!(">> Import");
|
||||
println!("> Reading data");
|
||||
let mut data = Data::read_from_file(&args.datafile)?;
|
||||
|
||||
if args.in_parens.is_some() || args.in_structure.is_some() {
|
||||
|
|
@ -53,6 +58,16 @@ fn main() -> io::Result<()> {
|
|||
algo::resolve_redirects(&mut data);
|
||||
}
|
||||
|
||||
if args.invert_edges {
|
||||
println!("> Inverting edges");
|
||||
algo::invert(&mut data);
|
||||
}
|
||||
|
||||
if args.check_consistency {
|
||||
println!("> Checking consistencey");
|
||||
data.check_consistency();
|
||||
}
|
||||
|
||||
match args.command {
|
||||
Command::Ingest(_) => unreachable!(),
|
||||
Command::Export(cmd) => cmd.run(data),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue