in cli/src/generate/properties.rs [405:472]
fn intersect_transitions(
&self,
left: &PropertyTransitionJSON,
right: &PropertyTransitionJSON,
) -> Option<PropertyTransitionJSON> {
let mut left_contributes = false;
let mut right_contributes = false;
let mut result = left.clone();
if let Some(left_kind) = &left.kind {
if let Some(right_kind) = &right.kind {
if left_kind != right_kind || left.named != right.named {
return None;
}
} else {
left_contributes = true;
}
} else if let Some(right_kind) = &right.kind {
result.kind = Some(right_kind.clone());
result.named = right.named;
right_contributes = true;
}
if let Some(left_field) = &left.field {
if let Some(right_field) = &right.field {
if left_field != right_field {
return None;
}
} else {
left_contributes = true;
}
} else if let Some(right_field) = &right.field {
result.field = Some(right_field.clone());
right_contributes = true;
}
if let Some(left_text) = &left.text {
if let Some(right_text) = &right.text {
if left_text != right_text {
return None;
}
} else {
left_contributes = true;
}
} else if let Some(right_text) = &right.text {
result.text = Some(right_text.clone());
right_contributes = true;
}
if let Some(left_index) = &left.index {
if let Some(right_index) = &right.index {
if left_index != right_index {
return None;
}
} else {
left_contributes = true;
}
} else if let Some(right_index) = &right.index {
result.index = Some(right_index.clone());
right_contributes = true;
}
if left_contributes && right_contributes {
Some(result)
} else {
None
}
}