// Copyright 2020 Google LLC. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package vocabulary import ( metrics "github.com/googleapis/gnostic/metrics" ) // Union implements the union operation between multiple Vocabularies. // The function accepts a slice of Vocabularies and returns a single Vocabulary // struct which contains all of the data from the Vocabularies. func Union(vocabularies []*metrics.Vocabulary) *metrics.Vocabulary { var vocab Vocabulary vocab.schemas = make(map[string]int) vocab.operationID = make(map[string]int) vocab.parameters = make(map[string]int) vocab.properties = make(map[string]int) for _, v := range vocabularies { vocab.unpackageVocabulary(v) } combinedVocab := &metrics.Vocabulary{ Properties: fillProtoStructure(vocab.properties), Schemas: fillProtoStructure(vocab.schemas), Operations: fillProtoStructure(vocab.operationID), Parameters: fillProtoStructure(vocab.parameters), } return combinedVocab }