generated from sv-tools/go-repo-template
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathxml.go
100 lines (88 loc) · 2.95 KB
/
xml.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package openapi
// XML is a metadata object that allows for more fine-tuned XML model definitions.
// When using arrays, XML element names are not inferred (for singular/plural forms) and the name property SHOULD
// be used to add that information.
// See examples for expected behavior.
//
// https://spec.openapis.org/oas/v3.1.1#xml-object
//
// Example:
//
// Person:
// type: object
// properties:
// id:
// type: integer
// format: int32
// xml:
// attribute: true
// name:
// type: string
// xml:
// namespace: https://example.com/schema/sample
// prefix: sample
//
// <Person id="123">
// <sample:name xmlns:sample="https://example.com/schema/sample">example</sample:name>
// </Person>
type XML struct {
// Replaces the name of the element/attribute used for the described schema property.
// When defined within items, it will affect the name of the individual XML elements within the list.
// When defined alongside type being array (outside the items), it will affect the wrapping element and only if wrapped is true.
// If wrapped is false, it will be ignored.
Name string `json:"name,omitempty" yaml:"name,omitempty"`
// The URI of the namespace definition.
// This MUST be in the form of an absolute URI.
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
// The prefix to be used for the name.
Prefix string `json:"prefix,omitempty" yaml:"prefix,omitempty"`
// Declares whether the property definition translates to an attribute instead of an element. Default value is false.
Attribute bool `json:"attribute,omitempty" yaml:"attribute,omitempty"`
// MAY be used only for an array definition.
// Signifies whether the array is wrapped (for example, <books><book/><book/></books>) or unwrapped (<book/><book/>).
// Default value is false.
// The definition takes effect only when defined alongside type being array (outside the items).
Wrapped bool `json:"wrapped,omitempty" yaml:"wrapped,omitempty"`
}
func (o *XML) validateSpec(path string, validator *Validator) []*validationError {
return nil // nothing to validate
}
type XMLBuilder struct {
spec *Extendable[XML]
}
func NewXMLBuilder() *XMLBuilder {
return &XMLBuilder{
spec: NewExtendable[XML](&XML{}),
}
}
func (b *XMLBuilder) Build() *Extendable[XML] {
return b.spec
}
func (b *XMLBuilder) Extensions(v map[string]any) *XMLBuilder {
b.spec.Extensions = v
return b
}
func (b *XMLBuilder) AddExt(name string, value any) *XMLBuilder {
b.spec.AddExt(name, value)
return b
}
func (b *XMLBuilder) Name(v string) *XMLBuilder {
b.spec.Spec.Name = v
return b
}
func (b *XMLBuilder) Namespace(v string) *XMLBuilder {
b.spec.Spec.Namespace = v
return b
}
func (b *XMLBuilder) Prefix(v string) *XMLBuilder {
b.spec.Spec.Prefix = v
return b
}
func (b *XMLBuilder) Attribute(v bool) *XMLBuilder {
b.spec.Spec.Attribute = v
return b
}
func (b *XMLBuilder) Wrapped(v bool) *XMLBuilder {
b.spec.Spec.Wrapped = v
return b
}