Use new route diffing from main driver

pull/25/head
Wilfred Hughes 2021-07-02 18:00:28 +07:00
parent 83a02e4eb0
commit b4034d558c
2 changed files with 20 additions and 5 deletions

@ -15,7 +15,8 @@ use crate::lines::{
};
use crate::parse::{find_lang, parse, parse_lines, read_or_die, ConfigDir};
use crate::style::apply_colors;
use crate::tree_diff::{change_positions, mark_nodes};
use crate::tree_diff::{change_positions, mark_nodes, set_next};
use crate::ucs::{toplevel_list, mark_node};
fn term_width() -> Option<usize> {
term_size::dimensions().map(|(w, _)| w)
@ -83,10 +84,13 @@ fn main() {
None => (parse_lines(&arena, &lhs_src), parse_lines(&arena, &rhs_src)),
};
mark_nodes(&lhs, &rhs);
let (lhs, rhs) = toplevel_list(&arena, lhs, rhs);
set_next(lhs);
set_next(rhs);
mark_node(lhs, rhs);
let lhs_positions = change_positions(&lhs_src, &rhs_src, &lhs);
let rhs_positions = change_positions(&rhs_src, &lhs_src, &rhs);
let lhs_positions = change_positions(&lhs_src, &rhs_src, &[lhs]);
let rhs_positions = change_positions(&rhs_src, &lhs_src, &[rhs]);
let mut groups = visible_groups(&lhs_positions, &rhs_positions);
for group in &mut groups {

@ -6,6 +6,7 @@ use std::collections::{BinaryHeap, HashMap};
use std::hash::{Hash, Hasher};
use crate::tree_diff::{ChangeKind, Node};
use typed_arena::Arena;
use Edge::*;
#[derive(Debug, Clone)]
@ -299,7 +300,17 @@ fn neighbours<'a>(v: &Vertex<'a>) -> Vec<(Edge, Vertex<'a>)> {
res
}
pub fn mark_nodes<'a>(lhs: &'a Node<'a>, rhs: &'a Node<'a>) {
pub fn toplevel_list<'a>(
arena: &'a Arena<Node<'a>>,
lhs_children: Vec<&'a Node<'a>>,
rhs_children: Vec<&'a Node<'a>>,
) -> (&'a Node<'a>, &'a Node<'a>) {
let lhs = Node::new_list(arena, "".into(), vec![], lhs_children, "".into(), vec![]);
let rhs = Node::new_list(arena, "".into(), vec![], rhs_children, "".into(), vec![]);
(lhs, rhs)
}
pub fn mark_node<'a>(lhs: &'a Node<'a>, rhs: &'a Node<'a>) {
let start = Vertex::new(lhs, rhs);
let route = find_route(start);
mark_route(&route);