Skip to content

Commit 995dd2d

Browse files
authored
feat: define unknown template for iterating messages without raising errors (#50)
1 parent 45d3d0c commit 995dd2d

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

pkg/grib2/drt/grid_point/unknown.go

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package gridpoint
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/scorix/grib-go/internal/pkg/bitio"
7+
)
8+
9+
type Unknown struct {
10+
numVals int
11+
}
12+
13+
func NewUnknown(numVals int) *Unknown {
14+
return &Unknown{numVals: numVals}
15+
}
16+
17+
func (u *Unknown) GetNumVals() int {
18+
return u.numVals
19+
}
20+
21+
func (u *Unknown) Definition() any {
22+
return nil
23+
}
24+
25+
func (u *Unknown) ReadAllData(r *bitio.Reader) ([]float32, error) {
26+
return nil, fmt.Errorf("unknown data template")
27+
}

pkg/grib2/drt/template.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package drt
33
import (
44
"encoding/binary"
55
"encoding/json"
6-
"fmt"
76

87
"github.com/scorix/grib-go/internal/pkg/bitio"
98
"github.com/scorix/grib-go/pkg/grib2/drt/datapacking"
@@ -82,7 +81,7 @@ func ReadTemplate(r datapacking.BitReader, n TemplateNumber, numVals int) (Templ
8281
return gridpoint.NewPortableNetworkGraphics(tplDef, numVals), nil
8382
}
8483

85-
return nil, fmt.Errorf("data template not implemented: %d", n)
84+
return gridpoint.NewUnknown(numVals), nil
8685
}
8786

8887
// TemplateMarshaler
@@ -168,7 +167,9 @@ func (tm *TemplateMarshaler) UnmarshalJSON(data []byte) error {
168167

169168
tm.Template = gridpoint.NewPortableNetworkGraphics(tplDef, t.Vals)
170169
return nil
171-
}
172170

173-
return fmt.Errorf("data template not implemented: %d", t.Number)
171+
default:
172+
tm.Template = gridpoint.NewUnknown(t.Vals)
173+
return nil
174+
}
174175
}

0 commit comments

Comments
 (0)