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

mlange-42 / modo / 12858520582

20 Jan 2025 12:21AM CUT coverage: 56.633% (-0.8%) from 57.418%
12858520582

Pull #73

github

web-flow
Merge 76145dc26 into ef546a39d
Pull Request #73: Fix cross-refs to package and module aliases

8 of 34 new or added lines in 7 files covered. (23.53%)

2 existing lines in 2 files now uncovered.

841 of 1485 relevant lines covered (56.63%)

8.1 hits per line

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

73.33
/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
        Aliases            []*Alias         `yaml:",omitempty" json:",omitempty"` // Additional field for package re-exports
31
        Functions          []*Function      `yaml:",omitempty" json:",omitempty"` // Additional field for package re-exports
32
        Structs            []*Struct        `yaml:",omitempty" json:",omitempty"` // Additional field for package re-exports
33
        Traits             []*Trait         `yaml:",omitempty" json:",omitempty"` // Additional field for package re-exports
34
        exports            []*packageExport `yaml:"-" json:"-"`                   // Additional field for package re-exports
35
}
36

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

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

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

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

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

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

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

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

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

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

1✔
147
        var docs Docs
1✔
148

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

153
        cleanup(&docs)
1✔
154

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

158
func (d *Docs) ToJson() ([]byte, error) {
1✔
159
        b := bytes.Buffer{}
1✔
160
        enc := json.NewEncoder(&b)
1✔
161
        enc.SetIndent("", "  ")
1✔
162

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

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

5✔
174
        var docs Docs
5✔
175

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

180
        cleanup(&docs)
5✔
181

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

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

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

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

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

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

208
type MemberKind struct {
209
        Kind string
210
}
211

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

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

220
type MemberName struct {
221
        Name string
222
}
223

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

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

232
func (k *MemberName) GetFileName() string {
89✔
233
        if caseSensitiveSystem {
178✔
234
                return k.Name
89✔
235
        }
89✔
236
        if isCap(k.Name) {
×
237
                return k.Name + capitalFileMarker
×
238
        }
×
239
        return k.Name
×
240
}
241

242
type MemberSummary struct {
243
        Summary string
244
}
245

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

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

254
type MemberDescription struct {
255
        Description string
256
}
257

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

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

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