2022-01-13 23:27:39 +01:00
|
|
|
package obitax
|
|
|
|
|
2024-02-27 20:10:26 +01:00
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"fmt"
|
|
|
|
)
|
|
|
|
|
2022-01-13 23:27:39 +01:00
|
|
|
type TaxonSlice []*TaxNode
|
|
|
|
|
|
|
|
func (set *TaxonSlice) Get(i int) *TaxNode {
|
|
|
|
return (*set)[i]
|
|
|
|
}
|
|
|
|
|
2022-11-17 11:09:58 +01:00
|
|
|
func (set *TaxonSlice) Len() int {
|
2022-01-13 23:27:39 +01:00
|
|
|
return len(*set)
|
|
|
|
}
|
2024-02-27 20:10:26 +01:00
|
|
|
|
|
|
|
func (path *TaxonSlice) String() string {
|
|
|
|
var buffer bytes.Buffer
|
|
|
|
|
|
|
|
if len(*path) > 0 {
|
|
|
|
taxon := (*path)[len(*path)-1]
|
|
|
|
fmt.Fprintf(&buffer, "%d@%s@%s",
|
|
|
|
taxon.Taxid(),
|
|
|
|
taxon.ScientificName(),
|
|
|
|
taxon.Rank())
|
|
|
|
|
|
|
|
for i := len(*path) - 2; i >= 0; i-- {
|
|
|
|
taxon := (*path)[i]
|
|
|
|
fmt.Fprintf(&buffer, "|%d@%s@%s",
|
|
|
|
taxon.Taxid(),
|
|
|
|
taxon.ScientificName(),
|
|
|
|
taxon.Rank())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return buffer.String()
|
|
|
|
}
|