(path string, structA ComponentDefinitionStruct, structB ComponentDefinitionStruct)
| 577 | } |
| 578 | |
| 579 | func diffStruct(path string, structA ComponentDefinitionStruct, structB ComponentDefinitionStruct) ([]ComponentDiffElementAdd, []ComponentDiffElementRemove, []ComponentDiffAttributeChange, error) { |
| 580 | changes := make([]ComponentDiffAttributeChange, 0) |
| 581 | adds := make([]ComponentDiffElementAdd, 0) |
| 582 | removes := make([]ComponentDiffElementRemove, 0) |
| 583 | |
| 584 | pathA := path + "/structA[@name='"+ structA.Name + "']" |
| 585 | pathB := path + "/structB[@name='"+ structB.Name + "']" |
| 586 | |
| 587 | IFirstChangedMember := len(structA.Members) |
| 588 | for iA, memberA := range(structA.Members) { |
| 589 | BHasMemberA := false |
| 590 | if (iA < IFirstChangedMember) && (iA < len(structB.Members)) { |
| 591 | memberB := structB.Members[iA] |
| 592 | if (memberA.Name == memberB.Name) { |
| 593 | Pchanges, err := diffMember(pathA, memberA, memberB) |
| 594 | if (err != nil) { |
| 595 | return adds, removes, changes, err |
| 596 | } |
| 597 | changes = append(changes, Pchanges...) |
| 598 | BHasMemberA = true |
| 599 | } |
| 600 | } |
| 601 | if (!BHasMemberA) { |
| 602 | var remove ComponentDiffElementRemove |
| 603 | remove.Path = path |
| 604 | remove.Removal = memberA |
| 605 | removes = append(removes, remove) |
| 606 | } |
| 607 | } |
| 608 | |
| 609 | for iB, memberB := range(structB.Members) { |
| 610 | AHasMemberB := false |
| 611 | if (iB < IFirstChangedMember) && (iB < len(structA.Members)) { |
| 612 | memberA := structA.Members[iB] |
| 613 | if (memberB.Name == memberA.Name) { |
| 614 | AHasMemberB = true |
| 615 | } |
| 616 | } |
| 617 | if (!AHasMemberB) { |
| 618 | var add ComponentDiffElementAdd |
| 619 | add.Path = pathB |
| 620 | add.Addition = memberB |
| 621 | adds = append(adds, add) |
| 622 | } |
| 623 | } |
| 624 | |
| 625 | return adds, removes, changes, nil |
| 626 | } |
| 627 | |
| 628 | |
| 629 | func diffStructs(path string, structsA[] ComponentDefinitionStruct, structsB[] ComponentDefinitionStruct) ([]ComponentDiffElementAdd, []ComponentDiffElementRemove, []ComponentDiffAttributeChange, error) { |
no test coverage detected