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

mlange-42 / modo / 12845222622

18 Jan 2025 03:24PM CUT coverage: 59.033%. Remained the same
12845222622

Pull #65

github

web-flow
Merge 02405a931 into de17a4062
Pull Request #65: Fix README, update CHANGELOG

794 of 1345 relevant lines covered (59.03%)

7.46 hits per line

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

82.22
/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      `yaml:",omitempty" json:",omitempty"` // Additional field for package re-exports
31
        Structs            []*Struct        `yaml:",omitempty" json:",omitempty"` // Additional field for package re-exports
32
        Traits             []*Trait         `yaml:",omitempty" json:",omitempty"` // Additional field for package re-exports
33
        exports            []*packageExport `yaml:"-" json:"-"`                   // 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 (d *Docs) ToJson() ([]byte, error) {
1✔
158
        b := bytes.Buffer{}
1✔
159
        enc := json.NewEncoder(&b)
1✔
160
        enc.SetIndent("", "  ")
1✔
161

1✔
162
        if err := enc.Encode(d); err != nil {
1✔
163
                return nil, err
×
164
        }
×
165
        return b.Bytes(), nil
1✔
166
}
167

168
func FromYaml(data []byte) (*Docs, error) {
5✔
169
        reader := bytes.NewReader(data)
5✔
170
        dec := yaml.NewDecoder(reader)
5✔
171
        dec.KnownFields(true)
5✔
172

5✔
173
        var docs Docs
5✔
174

5✔
175
        if err := dec.Decode(&docs); err != nil {
5✔
176
                return nil, err
×
177
        }
×
178

179
        cleanup(&docs)
5✔
180

5✔
181
        return &docs, nil
5✔
182
}
183

184
func (d *Docs) ToYaml() ([]byte, error) {
1✔
185
        b := bytes.Buffer{}
1✔
186
        enc := yaml.NewEncoder(&b)
1✔
187

1✔
188
        if err := enc.Encode(d); err != nil {
1✔
189
                return nil, err
×
190
        }
×
191
        return b.Bytes(), nil
1✔
192
}
193

194
type Kinded interface {
195
        GetKind() string
196
}
197

198
type Named interface {
199
        GetName() string
200
        GetFileName() string
201
}
202

203
type Summarized interface {
204
        GetSummary() string
205
}
206

207
type MemberKind struct {
208
        Kind string
209
}
210

211
func newKind(kind string) MemberKind {
41✔
212
        return MemberKind{Kind: kind}
41✔
213
}
41✔
214

215
func (k *MemberKind) GetKind() string {
24✔
216
        return k.Kind
24✔
217
}
24✔
218

219
type MemberName struct {
220
        Name string
221
}
222

223
func newName(name string) MemberName {
58✔
224
        return MemberName{Name: name}
58✔
225
}
58✔
226

227
func (k *MemberName) GetName() string {
81✔
228
        return k.Name
81✔
229
}
81✔
230

231
func (k *MemberName) GetFileName() string {
51✔
232
        if caseSensitiveSystem {
61✔
233
                return k.Name
10✔
234
        }
10✔
235
        if isCap(k.Name) {
56✔
236
                return k.Name + capitalFileMarker
15✔
237
        }
15✔
238
        return k.Name
26✔
239
}
240

241
type MemberSummary struct {
242
        Summary string
243
}
244

245
func newSummary(summary string) *MemberSummary {
11✔
246
        return &MemberSummary{Summary: summary}
11✔
247
}
11✔
248

249
func (k *MemberSummary) GetSummary() string {
×
250
        return k.Summary
×
251
}
×
252

253
type MemberDescription struct {
254
        Description string
255
}
256

257
func newDescription(description string) *MemberDescription {
10✔
258
        return &MemberDescription{Description: description}
10✔
259
}
10✔
260

261
func (k *MemberDescription) GetDescription() string {
×
262
        return k.Description
×
263
}
×
264

265
func isCap(s string) bool {
41✔
266
        if len(s) == 0 {
41✔
267
                return false
×
268
        }
×
269
        firstRune := []rune(s)[0]
41✔
270
        return unicode.IsUpper(firstRune)
41✔
271
}
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