64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
package swagger
|
|
|
|
// Copyright 2015 Ernest Micklei. All rights reserved.
|
|
// Use of this source code is governed by a license
|
|
// that can be found in the LICENSE file.
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
)
|
|
|
|
// ApiDeclarationList maintains an ordered list of ApiDeclaration.
|
|
type ApiDeclarationList struct {
|
|
List []ApiDeclaration
|
|
}
|
|
|
|
// At returns the ApiDeclaration by its path unless absent, then ok is false
|
|
func (l *ApiDeclarationList) At(path string) (a ApiDeclaration, ok bool) {
|
|
for _, each := range l.List {
|
|
if each.ResourcePath == path {
|
|
return each, true
|
|
}
|
|
}
|
|
return a, false
|
|
}
|
|
|
|
// Put adds or replaces a ApiDeclaration with this name
|
|
func (l *ApiDeclarationList) Put(path string, a ApiDeclaration) {
|
|
// maybe replace existing
|
|
for i, each := range l.List {
|
|
if each.ResourcePath == path {
|
|
// replace
|
|
l.List[i] = a
|
|
return
|
|
}
|
|
}
|
|
// add
|
|
l.List = append(l.List, a)
|
|
}
|
|
|
|
// Do enumerates all the properties, each with its assigned name
|
|
func (l *ApiDeclarationList) Do(block func(path string, decl ApiDeclaration)) {
|
|
for _, each := range l.List {
|
|
block(each.ResourcePath, each)
|
|
}
|
|
}
|
|
|
|
// MarshalJSON writes the ModelPropertyList as if it was a map[string]ModelProperty
|
|
func (l ApiDeclarationList) MarshalJSON() ([]byte, error) {
|
|
var buf bytes.Buffer
|
|
encoder := json.NewEncoder(&buf)
|
|
buf.WriteString("{\n")
|
|
for i, each := range l.List {
|
|
buf.WriteString("\"")
|
|
buf.WriteString(each.ResourcePath)
|
|
buf.WriteString("\": ")
|
|
encoder.Encode(each)
|
|
if i < len(l.List)-1 {
|
|
buf.WriteString(",\n")
|
|
}
|
|
}
|
|
buf.WriteString("}")
|
|
return buf.Bytes(), nil
|
|
}
|