Skip to content

Commit faf4ca4

Browse files
committed
closes #9: fix tier interface implementations
1 parent df753f5 commit faf4ca4

File tree

2 files changed

+66
-1
lines changed

2 files changed

+66
-1
lines changed

textgrid/textgrid.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,36 @@ func (tg TextGrid) GetTiers() []Tier {
5454
return tg.tiers
5555
}
5656

57+
// Returns true if TextGrid has IntervalTier
58+
func (tg TextGrid) HasIntervalTier() bool {
59+
for _, tier := range tg.tiers {
60+
if tier.TierType() == "IntervalTier" {
61+
return true
62+
}
63+
}
64+
return false
65+
}
66+
67+
// Returns true if TextGrid has PointTier
68+
func (tg TextGrid) HasPointTier() bool {
69+
for _, tier := range tg.tiers {
70+
if tier.TierType() == "PointTier" {
71+
return true
72+
}
73+
}
74+
return false
75+
}
76+
77+
// Returns tier with given name, if it exists
78+
func (tg TextGrid) GetTier(name string) Tier {
79+
for _, tier := range tg.tiers {
80+
if tier.TierName() == name {
81+
return tier
82+
}
83+
}
84+
return nil
85+
}
86+
5787
// Takes a path to a .TextGrid file and reads its contents into a TextGrid.
5888
func ReadTextgrid(path string) TextGrid {
5989
tg := TextGrid{}

textgrid/tiers.go

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@ type Tier interface {
1616
SetName(string)
1717
SetXmin(float64, ...bool) error
1818
SetXmax(float64, ...bool) error
19-
GetSize() int
19+
GetIntervals() []Interval
20+
GetPoints() []Point
21+
PushInterval(Interval, ...bool) error
22+
PushIntervals([]Interval, ...bool) error
23+
PushPoint(Point, ...bool) error
24+
PushPoints([]Point, ...bool) error
2025
sort()
2126
}
2227

@@ -206,11 +211,41 @@ func (iTier IntervalTier) GetIntervals() []Interval {
206211
return iTier.intervals
207212
}
208213

214+
// GetPoints implements Tier.
215+
func (iTier *IntervalTier) GetPoints() []Point {
216+
panic("not point tier")
217+
}
218+
219+
// PushPoint implements Tier.
220+
func (iTier *IntervalTier) PushPoint(Point, ...bool) error {
221+
panic("not point tier")
222+
}
223+
224+
// PushPoints implements Tier.
225+
func (iTier *IntervalTier) PushPoints([]Point, ...bool) error {
226+
panic("not point tier")
227+
}
228+
209229
// Returns slice of points from a `PointTier`
210230
func (pTier PointTier) GetPoints() []Point {
211231
return pTier.points
212232
}
213233

234+
// GetIntervals implements Tier.
235+
func (pTier *PointTier) GetIntervals() []Interval {
236+
panic("not interval tier")
237+
}
238+
239+
// PushInterval implements Tier.
240+
func (pTier *PointTier) PushInterval(Interval, ...bool) error {
241+
panic("not interval tier")
242+
}
243+
244+
// PushIntervals implements Tier.
245+
func (pTier *PointTier) PushIntervals([]Interval, ...bool) error {
246+
panic("not interval tier")
247+
}
248+
214249
// Pushes an interval to the interval tier. Sorts intervals by minimum x value after pushing the interval.
215250
func (iTier *IntervalTier) PushInterval(intervalPush Interval, warn ...bool) error {
216251

0 commit comments

Comments
 (0)