mirror of
https://github.com/LukeHagar/libopenapi.git
synced 2025-12-10 04:20:24 +00:00
Refactored total change counts
Design is more uniformed and standardized, patterns are bubbling up. I think we're ready to tackle the schema soon. Signed-off-by: Dave Shanley <dave@quobix.com>
This commit is contained in:
@@ -66,6 +66,11 @@ func (ex *Example) Build(root *yaml.Node, idx *index.SpecIndex) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetExtensions will return Example extensions to satisfy the HasExtensions interface.
|
||||
func (ex *Example) GetExtensions() map[low.KeyReference[string]]low.ValueReference[any] {
|
||||
return ex.Extensions
|
||||
}
|
||||
|
||||
// ExtractExampleValue will extract a primitive example value (if possible), or just the raw Value property if not.
|
||||
func ExtractExampleValue(exp *yaml.Node) any {
|
||||
if utils.IsNodeBoolValue(exp) {
|
||||
|
||||
@@ -52,4 +52,7 @@ const (
|
||||
AttributeLabel = "attribute"
|
||||
WrappedLabel = "wrapped"
|
||||
PropertyNameLabel = "propertyName"
|
||||
SummaryLabel = "summary"
|
||||
ValueLabel = "value"
|
||||
ExternalValue = "externalValue"
|
||||
)
|
||||
|
||||
@@ -15,7 +15,7 @@ type ContactChanges struct {
|
||||
|
||||
// TotalChanges represents the total number of changes that have occurred to a Contact object
|
||||
func (c *ContactChanges) TotalChanges() int {
|
||||
return len(c.Changes)
|
||||
return c.PropertyChanges.TotalChanges()
|
||||
}
|
||||
|
||||
// TotalBreakingChanges always returns 0 for Contact objects, they are non-binding.
|
||||
@@ -69,7 +69,7 @@ func CompareContact(l, r *base.Contact) *ContactChanges {
|
||||
|
||||
dc := new(ContactChanges)
|
||||
dc.Changes = changes
|
||||
if len(changes) <= 0 {
|
||||
if dc.TotalChanges() <= 0 {
|
||||
return nil
|
||||
}
|
||||
return dc
|
||||
|
||||
@@ -76,11 +76,11 @@ func CompareDiscriminator(l, r *base.Discriminator) *DiscriminatorChanges {
|
||||
}
|
||||
}
|
||||
|
||||
if len(changes) <= 0 && len(mapping) <= 0 {
|
||||
return nil
|
||||
}
|
||||
dc.Changes = changes
|
||||
dc.MappingChanges = mapping
|
||||
if dc.TotalChanges() <= 0 {
|
||||
return nil
|
||||
}
|
||||
return dc
|
||||
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ type ExtensionChanges struct {
|
||||
}
|
||||
|
||||
func (e *ExtensionChanges) TotalChanges() int {
|
||||
return len(e.Changes)
|
||||
return e.PropertyChanges.TotalChanges()
|
||||
}
|
||||
|
||||
// TotalBreakingChanges always returns 0 for Extension objects, they are non-binding.
|
||||
@@ -69,10 +69,10 @@ func CompareExtensions(l, r map[low.KeyReference[string]]low.ValueReference[any]
|
||||
CheckForObjectAdditionOrRemoval[any](seenLeft, seenRight, i, &changes, false, true)
|
||||
}
|
||||
}
|
||||
if len(changes) <= 0 {
|
||||
return nil
|
||||
}
|
||||
ex := new(ExtensionChanges)
|
||||
ex.Changes = changes
|
||||
if ex.TotalChanges() <= 0 {
|
||||
return nil
|
||||
}
|
||||
return ex
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ func TestCompareExtensions(t *testing.T) {
|
||||
|
||||
extChanges := CompareExtensions(lExt, rExt)
|
||||
|
||||
assert.Len(t, extChanges.TotalChanges(), 1)
|
||||
assert.Equal(t, extChanges.TotalChanges(), 1)
|
||||
assert.Equal(t, Modified, extChanges.Changes[0].ChangeType)
|
||||
assert.Equal(t, "1", extChanges.Changes[0].Original)
|
||||
assert.Equal(t, "2", extChanges.Changes[0].New)
|
||||
|
||||
@@ -16,9 +16,9 @@ type ExternalDocChanges struct {
|
||||
|
||||
// TotalChanges returns a count of everything that changed
|
||||
func (e *ExternalDocChanges) TotalChanges() int {
|
||||
c := len(e.Changes)
|
||||
c := e.PropertyChanges.TotalChanges()
|
||||
if e.ExtensionChanges != nil {
|
||||
c += len(e.ExtensionChanges.Changes)
|
||||
c += e.ExtensionChanges.TotalChanges()
|
||||
}
|
||||
return c
|
||||
}
|
||||
@@ -65,7 +65,7 @@ func CompareExternalDocs(l, r *base.ExternalDoc) *ExternalDocChanges {
|
||||
|
||||
// check extensions
|
||||
dc.ExtensionChanges = CheckExtensions(l, r)
|
||||
if len(dc.Changes) <= 0 && dc.ExtensionChanges == nil {
|
||||
if dc.TotalChanges() <= 0 {
|
||||
return nil
|
||||
}
|
||||
return dc
|
||||
|
||||
@@ -17,7 +17,7 @@ type InfoChanges struct {
|
||||
|
||||
// TotalChanges represents the total number of changes made to an Info object.
|
||||
func (i *InfoChanges) TotalChanges() int {
|
||||
t := len(i.Changes)
|
||||
t := i.PropertyChanges.TotalChanges()
|
||||
if i.ContactChanges != nil {
|
||||
t += i.ContactChanges.TotalChanges()
|
||||
}
|
||||
@@ -32,6 +32,9 @@ func (i *InfoChanges) TotalBreakingChanges() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
// CompareInfo will compare a left (original) and a right (new) Info object. Any changes
|
||||
// will be returned in a pointer to InfoChanges, otherwise if nothing is found, then nil is
|
||||
// returned instead.
|
||||
func CompareInfo(l, r *base.Info) *InfoChanges {
|
||||
|
||||
var changes []*Change[*base.Info]
|
||||
@@ -113,9 +116,9 @@ func CompareInfo(l, r *base.Info) *InfoChanges {
|
||||
l.License.ValueNode, nil, false, r.License.Value, nil)
|
||||
}
|
||||
}
|
||||
if len(changes) <= 0 && i.ContactChanges == nil && i.LicenseChanges == nil {
|
||||
i.Changes = changes
|
||||
if i.TotalChanges() <= 0 {
|
||||
return nil
|
||||
}
|
||||
i.Changes = changes
|
||||
return i
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ type LicenseChanges struct {
|
||||
|
||||
// TotalChanges represents the total number of changes made to a License instance.
|
||||
func (l *LicenseChanges) TotalChanges() int {
|
||||
return len(l.Changes)
|
||||
return l.PropertyChanges.TotalChanges()
|
||||
}
|
||||
|
||||
// TotalBreakingChanges always returns 0 for License objects, they are non-binding.
|
||||
@@ -58,7 +58,7 @@ func CompareLicense(l, r *base.License) *LicenseChanges {
|
||||
|
||||
lc := new(LicenseChanges)
|
||||
lc.Changes = changes
|
||||
if len(changes) <= 0 {
|
||||
if lc.TotalChanges() <= 0 {
|
||||
return nil
|
||||
}
|
||||
return lc
|
||||
|
||||
@@ -19,12 +19,12 @@ type TagChanges struct {
|
||||
|
||||
// TotalChanges returns a count of everything that changed within tags.
|
||||
func (t *TagChanges) TotalChanges() int {
|
||||
c := len(t.Changes)
|
||||
c := t.PropertyChanges.TotalChanges()
|
||||
if t.ExternalDocs != nil {
|
||||
c += t.ExternalDocs.TotalChanges()
|
||||
}
|
||||
if t.ExtensionChanges != nil {
|
||||
c += len(t.ExtensionChanges.Changes)
|
||||
c += t.ExtensionChanges.TotalChanges()
|
||||
}
|
||||
return c
|
||||
}
|
||||
@@ -105,10 +105,9 @@ func CompareTags(l, r []low.ValueReference[*base.Tag]) *TagChanges {
|
||||
false, nil, seenRight[i].GetValue())
|
||||
}
|
||||
}
|
||||
|
||||
if len(changes) <= 0 {
|
||||
tc.Changes = changes
|
||||
if tc.TotalChanges() <= 0 {
|
||||
return nil
|
||||
}
|
||||
tc.Changes = changes
|
||||
return tc
|
||||
}
|
||||
|
||||
@@ -16,9 +16,9 @@ type XMLChanges struct {
|
||||
|
||||
// TotalChanges returns a count of everything that was changed within an XML object.
|
||||
func (x *XMLChanges) TotalChanges() int {
|
||||
c := len(x.Changes)
|
||||
c := x.PropertyChanges.TotalChanges()
|
||||
if x.ExtensionChanges != nil {
|
||||
c += len(x.ExtensionChanges.Changes)
|
||||
c += x.ExtensionChanges.TotalChanges()
|
||||
}
|
||||
return c
|
||||
}
|
||||
@@ -97,7 +97,7 @@ func CompareXML(l, r *base.XML) *XMLChanges {
|
||||
// check extensions
|
||||
xc.ExtensionChanges = CheckExtensions(l, r)
|
||||
xc.Changes = changes
|
||||
if len(xc.Changes) <= 0 && xc.ExtensionChanges == nil {
|
||||
if xc.TotalChanges() <= 0 {
|
||||
return nil
|
||||
}
|
||||
return xc
|
||||
|
||||
Reference in New Issue
Block a user