• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mlange-42 / modo / 12831974413

17 Jan 2025 03:26PM CUT coverage: 57.927%. Remained the same
12831974413

push

github

web-flow
Update CHANGELOG for v0.6.0 release (#57)

749 of 1293 relevant lines covered (57.93%)

6.98 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

83.56
/document/document.go
1
package document
2

3
import (
4
        "bytes"
5
        "encoding/json"
6
        "unicode"
7

8
        "gopkg.in/yaml.v3"
9
)
10

11
const capitalFileMarker = "-"
12

13
// Global variable for file case sensitivity.
14
//
15
// TODO: find another way to handle this, without using a global variable.
16
var caseSensitiveSystem = true
17

18
type Docs struct {
19
        Decl    *Package
20
        Version string
21
}
22

23
type Package struct {
24
        MemberKind         `yaml:",inline"`
25
        MemberName         `yaml:",inline"`
26
        *MemberSummary     `yaml:",inline"`
27
        *MemberDescription `yaml:",inline"`
28
        Modules            []*Module
29
        Packages           []*Package
30
        Functions          []*Function      // Additional field for package re-exports
31
        Structs            []*Struct        // Additional field for package re-exports
32
        Traits             []*Trait         // Additional field for package re-exports
33
        exports            []*packageExport // Additional field for package re-exports
34
}
35

36
func (p *Package) linkedCopy() *Package {
5✔
37
        return &Package{
5✔
38
                MemberName:        newName(p.Name),
5✔
39
                MemberKind:        newKind(p.Kind),
5✔
40
                MemberSummary:     p.MemberSummary,
5✔
41
                MemberDescription: p.MemberDescription,
5✔
42
                exports:           p.exports,
5✔
43
        }
5✔
44
}
5✔
45

46
type Module struct {
47
        MemberKind    `yaml:",inline"`
48
        MemberName    `yaml:",inline"`
49
        MemberSummary `yaml:",inline"`
50
        Description   string
51
        Aliases       []*Alias
52
        Functions     []*Function
53
        Structs       []*Struct
54
        Traits        []*Trait
55
}
56

57
type Alias struct {
58
        MemberKind    `yaml:",inline"`
59
        MemberName    `yaml:",inline"`
60
        MemberSummary `yaml:",inline"`
61
        Description   string
62
        Value         string
63
        Deprecated    string
64
}
65

66
type Struct struct {
67
        MemberKind    `yaml:",inline"`
68
        MemberName    `yaml:",inline"`
69
        MemberSummary `yaml:",inline"`
70
        Description   string
71
        Aliases       []*Alias
72
        Constraints   string
73
        Convention    string
74
        Deprecated    string
75
        Fields        []*Field
76
        Functions     []*Function
77
        Parameters    []*Parameter
78
        ParentTraits  []string
79
        Signature     string
80
}
81

82
type Function struct {
83
        MemberKind           `yaml:",inline"`
84
        MemberName           `yaml:",inline"`
85
        MemberSummary        `yaml:",inline"`
86
        Description          string
87
        Args                 []*Arg
88
        Overloads            []*Function
89
        Async                bool
90
        Constraints          string
91
        Deprecated           string
92
        IsDef                bool
93
        IsStatic             bool
94
        IsImplicitConversion bool
95
        Raises               bool
96
        RaisesDoc            string
97
        ReturnType           string
98
        ReturnsDoc           string
99
        Signature            string
100
        Parameters           []*Parameter
101
}
102

103
type Field struct {
104
        MemberKind    `yaml:",inline"`
105
        MemberName    `yaml:",inline"`
106
        MemberSummary `yaml:",inline"`
107
        Description   string
108
        Type          string
109
}
110

111
type Trait struct {
112
        MemberKind    `yaml:",inline"`
113
        MemberName    `yaml:",inline"`
114
        MemberSummary `yaml:",inline"`
115
        Description   string
116
        Fields        []*Field
117
        Functions     []*Function
118
        ParentTraits  []string
119
        Deprecated    string
120
}
121

122
type Arg struct {
123
        MemberKind  `yaml:",inline"`
124
        MemberName  `yaml:",inline"`
125
        Description string
126
        Convention  string
127
        Type        string
128
        PassingKind string
129
        Default     string
130
}
131

132
type Parameter struct {
133
        MemberKind  `yaml:",inline"`
134
        MemberName  `yaml:",inline"`
135
        Description string
136
        Type        string
137
        PassingKind string
138
        Default     string
139
}
140

141
func FromJson(data []byte) (*Docs, error) {
1✔
142
        reader := bytes.NewReader(data)
1✔
143
        dec := json.NewDecoder(reader)
1✔
144
        dec.DisallowUnknownFields()
1✔
145

1✔
146
        var docs Docs
1✔
147

1✔
148
        if err := dec.Decode(&docs); err != nil {
1✔
149
                return nil, err
×
150
        }
×
151

152
        cleanup(&docs)
1✔
153

1✔
154
        return &docs, nil
1✔
155
}
156

157
func FromYaml(data []byte) (*Docs, error) {
5✔
158
        reader := bytes.NewReader(data)
5✔
159
        dec := yaml.NewDecoder(reader)
5✔
160
        dec.KnownFields(true)
5✔
161

5✔
162
        var docs Docs
5✔
163

5✔
164
        if err := dec.Decode(&docs); err != nil {
5✔
165
                return nil, err
×
166
        }
×
167

168
        cleanup(&docs)
5✔
169

5✔
170
        return &docs, nil
5✔
171
}
172

173
type Kinded interface {
174
        GetKind() string
175
}
176

177
type Named interface {
178
        GetName() string
179
        GetFileName() string
180
}
181

182
type Summarized interface {
183
        GetSummary() string
184
}
185

186
type MemberKind struct {
187
        Kind string
188
}
189

190
func newKind(kind string) MemberKind {
41✔
191
        return MemberKind{Kind: kind}
41✔
192
}
41✔
193

194
func (k *MemberKind) GetKind() string {
24✔
195
        return k.Kind
24✔
196
}
24✔
197

198
type MemberName struct {
199
        Name string
200
}
201

202
func newName(name string) MemberName {
58✔
203
        return MemberName{Name: name}
58✔
204
}
58✔
205

206
func (k *MemberName) GetName() string {
81✔
207
        return k.Name
81✔
208
}
81✔
209

210
func (k *MemberName) GetFileName() string {
51✔
211
        if caseSensitiveSystem {
61✔
212
                return k.Name
10✔
213
        }
10✔
214
        if isCap(k.Name) {
56✔
215
                return k.Name + capitalFileMarker
15✔
216
        }
15✔
217
        return k.Name
26✔
218
}
219

220
type MemberSummary struct {
221
        Summary string
222
}
223

224
func newSummary(summary string) *MemberSummary {
11✔
225
        return &MemberSummary{Summary: summary}
11✔
226
}
11✔
227

228
func (k *MemberSummary) GetSummary() string {
×
229
        return k.Summary
×
230
}
×
231

232
type MemberDescription struct {
233
        Description string
234
}
235

236
func newDescription(description string) *MemberDescription {
10✔
237
        return &MemberDescription{Description: description}
10✔
238
}
10✔
239

240
func (k *MemberDescription) GetDescription() string {
×
241
        return k.Description
×
242
}
×
243

244
func isCap(s string) bool {
41✔
245
        if len(s) == 0 {
41✔
246
                return false
×
247
        }
×
248
        firstRune := []rune(s)[0]
41✔
249
        return unicode.IsUpper(firstRune)
41✔
250
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc