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 }