[bug#74459,6/8] guix: lint: Ignore initials from double space check.
Commit Message
Prevent false positives in initials as the are commonly used in names, e.g.
Margaret E. Hamilton - which obviously do not end sentences. Check whether a
period character `.' is preceded by at least two characters. This should save
us from false positives when linting.
* guix/lint.scm(check-description-style)[check-end-of-sentence-space] Add
condition.
* tests/lint.scm: Add test case.
Change-Id: I42a1365aaaed2afc7308b88ebd4b0720ad362761
---
guix/lint.scm | 15 ++++++++++-----
tests/lint.scm | 2 +-
2 files changed, 11 insertions(+), 6 deletions(-)
@@ -463,11 +463,16 @@ (define (check-description-style package)
(reverse (fold-matches
"\\. [A-Z]" description '()
(lambda (m r)
- ;; Filter out matches of common abbreviations.
- (if (find (lambda (s)
- (string-suffix-ci? s (match:prefix m)))
- '("i.e" "e.g" "a.k.a" "resp"))
- r (cons (match:start m) r)))))))
+ ;; Filter out matches of common abbreviations and
+ ;; initials.
+ (let ((pre (match:prefix m)))
+ (if (or
+ (string-match "[A-Z]$" pre) ;; Initial found
+ (find (lambda (s)
+ (string-suffix-ci? s pre))
+ '("i.e" "e.g" "a.k.a" "resp")))
+ r
+ (cons (match:start m) r))))))))
(if (null? infractions)
'()
(list
@@ -173,7 +173,7 @@ (define (warning-contains? str warnings)
'()
(let ((pkg (dummy-package "x"
(description
- "E.g. Foo, i.e. Bar resp. Baz (a.k.a. DVD)."))))
+ "E.g. Foo, i.e. Bar resp. Baz (a.k.a. DVD). Name O. Person"))))
(check-description-style pkg)))
(test-equal "description: may not contain trademark signs: ™"