mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-10-23 05:51:39 +00:00
Add Luau-style ref paths migration plan and update related tests
- Introduced a new migration plan for converting `Rojo_Ref_*` attribute paths to Luau require-by-string style, enhancing portability with relative paths. - Updated existing test snapshots to reflect the new path formats, ensuring consistency across various scenarios. - Enhanced the `compute_relative_ref_path` and `resolve_ref_path` functions to support the new path semantics, improving path resolution logic. - Refactored related code in `change_processor`, `syncback`, and `snapshot` modules to accommodate the new reference path handling. These changes improve the robustness and maintainability of reference path management in the project.
This commit is contained in:
parent
d6169c6d84
commit
b8c3520d25
29 changed files with 2147 additions and 179 deletions
|
|
@ -104,7 +104,7 @@ fn compute_property_patches(
|
|||
let mut visited_properties = UstrSet::default();
|
||||
let mut changed_properties = UstrMap::new();
|
||||
|
||||
let attribute_ref_properties = compute_ref_properties(snapshot, tree);
|
||||
let attribute_ref_properties = compute_ref_properties(snapshot, tree, instance.id());
|
||||
|
||||
let changed_name = if snapshot.name == instance.name() {
|
||||
None
|
||||
|
|
@ -251,6 +251,7 @@ fn compute_children_patches(
|
|||
fn compute_ref_properties(
|
||||
snapshot: &InstanceSnapshot,
|
||||
tree: &RojoTree,
|
||||
source_ref: Ref,
|
||||
) -> UstrMap<Option<Variant>> {
|
||||
let mut map = UstrMap::new();
|
||||
let attributes = match snapshot.properties.get(&ustr("Attributes")) {
|
||||
|
|
@ -290,7 +291,7 @@ fn compute_ref_properties(
|
|||
let Some(path) = crate::variant_as_str(attr_value, attr_name) else {
|
||||
continue;
|
||||
};
|
||||
if let Some(target_id) = tree.get_instance_by_path(path) {
|
||||
if let Some(target_id) = tree.resolve_ref_path(path, source_ref) {
|
||||
map.insert(ustr(prop_name), Some(Variant::Ref(target_id)));
|
||||
} else {
|
||||
// Path not found yet - will be resolved during patch apply
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue