Skip to content

Commit e3123c9

Browse files
committed
annotations without space (close #140)
Adds support to annotations that do not have space between words, for example `sp.nov.`, `nom.nov.` etc.
1 parent 14cac2a commit e3123c9

File tree

4 files changed

+48
-4
lines changed

4 files changed

+48
-4
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## Unreleased
44

5+
- Add [#140]: support nomenclatural annotations without space, like `sp.nov.`.
6+
57
## [v1.1.3] - 2023-07-01 Sat
68

79
- Add [#139]: `nom. nov.` as nomenclatural annotation.

pkg/ent/output/process.go

+23-3
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,20 @@ func annotNomen(after []token.TokenSN) string {
146146
if len(annot) > 1 {
147147
break
148148
}
149+
annotNoSpace, ok := noSpaceAnnot(v)
150+
if ok {
151+
return annotNoSpace
152+
}
153+
149154
c := v.Cleaned()
150155
isN := (c == "n" || c == "nv" || c == "nov")
151156
if isN {
152157
nNum++
153158
}
154-
isSp := (c == "sp" || c == "comb" || c == "subsp" || c == "ssp")
155-
isNom := (c == "nom")
156-
if isN || isSp || isNom {
159+
isSp := c == "sp" || c == "comb" || c == "subsp" ||
160+
c == "ssp" || c == "nom"
161+
162+
if isN || isSp {
157163
annot = append(annot, string(v.Raw()))
158164
} else {
159165
annot = annot[0:0]
@@ -166,6 +172,20 @@ func annotNomen(after []token.TokenSN) string {
166172
return ""
167173
}
168174

175+
func noSpaceAnnot(t token.TokenSN) (string, bool) {
176+
raw := string(t.Raw())
177+
annots := []string{
178+
"sp�nov", "comb�nov", "nom�nov",
179+
"subsp�nov", "ssp�nov",
180+
}
181+
for i := range annots {
182+
if t.Cleaned() == annots[i] {
183+
return strings.TrimSpace(raw), true
184+
}
185+
}
186+
return "", false
187+
}
188+
169189
// UniqueNameStrings takes a list of names, and returns a list of unique
170190
// name-strings
171191
func (o *Output) UniqueNameStrings() []string {

pkg/gnfinder_test.go

+22
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,28 @@ func TestNomenAnnot(t *testing.T) {
531531
}
532532
}
533533

534+
// TestNomenAnnotNoSpace covers issue #140:
535+
// Process correctly annotations without spaces.
536+
func TestNomenAnnotNoSpace(t *testing.T) {
537+
assert := assert.New(t)
538+
tests := []struct {
539+
txt, annot, annotType string
540+
}{
541+
{"Pardosa moesta sp.nov.", "sp.nov.", "SP_NOV"},
542+
{"Pardosa moesta sp.nov...\n", "sp.nov...", "SP_NOV"},
543+
{"Pardosa moesta comb.nov.\n", "comb.nov.", "COMB_NOV"},
544+
{"Pardosa moesta nom.nov.", "nom.nov.", "NOM_NOV"},
545+
{"Pardosa moesta subsp.nov.", "subsp.nov.", "SUBSP_NOV"},
546+
{"Pardosa moesta ssp.nov.", "ssp.nov.", "SUBSP_NOV"},
547+
}
548+
gnf := genFinder()
549+
for _, v := range tests {
550+
res := gnf.Find("", v.txt)
551+
assert.Equal(v.annot, res.Names[0].AnnotNomen)
552+
assert.Equal(v.annotType, res.Names[0].AnnotNomenType)
553+
}
554+
}
555+
534556
func TestFakeAnnot(t *testing.T) {
535557
assert := assert.New(t)
536558
txts := []string{

pkg/version.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package gnfinder
22

33
var (
4-
Version = "v1.1.3"
4+
Version = "v1.1.4"
55
Build string
66
)

0 commit comments

Comments
 (0)