mirror of
https://github.com/storytold/gridcraft.git
synced 2026-10-24 10:46:50 -06:00
Rename sheet-qualified defined names with their sheet (#134)
This commit is contained in:
@@ -218,6 +218,13 @@ pub fn rename_sheet(e: Expr, old: &str, new: &str) -> Expr {
|
||||
}
|
||||
Expr::Ref(r)
|
||||
}
|
||||
// Sheet-qualified defined name `Old!MyName` is stored as one string.
|
||||
Expr::Name(n) => match n.split_at_checked(old.len()) {
|
||||
Some((head, rest)) if head.eq_ignore_ascii_case(old) && rest.starts_with('!') => {
|
||||
Expr::Name(format!("{}{rest}", crate::printer::quote_sheet(new)))
|
||||
}
|
||||
_ => Expr::Name(n),
|
||||
},
|
||||
other => other,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -163,6 +163,14 @@ fn moves_and_renames() {
|
||||
assert_eq!(print(&rename_sheet(e, "Old", "New Name")), "'New Name'!A1+'New Name'!B2");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rename_sheet_updates_qualified_names() {
|
||||
let e = parse("Data!MyName+MyName+Other!MyName").unwrap();
|
||||
assert_eq!(print(&rename_sheet(e, "data", "Numbers")), "Numbers!MyName+MyName+Other!MyName");
|
||||
let e = parse("Data!MyName").unwrap();
|
||||
assert_eq!(print(&rename_sheet(e, "Data", "New Name")), "'New Name'!MyName");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn r1c1() {
|
||||
let e = parse("A1+$B$2+SUM(C:C)").unwrap();
|
||||
|
||||
Reference in New Issue
Block a user