diff --git a/guix/import/utils.scm b/guix/import/utils.scm index fcd7707482..0cf52cdbde 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -342,7 +342,14 @@ LENGTH characters." (let ((pattern (make-regexp "([A-Z][a-z]+[A-Z]|[a-z]+[A-Z])"))) (match (list-matches pattern word) (() word) - (_ (string-append "@code{" word "}"))))))))) + ((m . rest) + ;; Do not include leading or trailing punctuation. + (let* ((last-text (or (and=> (string-skip-right word char-set:punctuation) 1+) + (string-length word))) + (inner (substring word (match:start m) last-text)) + (pre (string-take word (match:start m))) + (post (substring word last-text (string-length word)))) + (string-append pre "@code{" inner "}" post)))))))))) (words (string-tokenize (string-trim-both description) (char-set-complement diff --git a/tests/import-utils.scm b/tests/import-utils.scm index 7b078eac05..229e6eafaa 100644 --- a/tests/import-utils.scm +++ b/tests/import-utils.scm @@ -61,6 +61,10 @@ Differences are hard to spot, e.g. in CLOS vs. GOOPS.")) "The term API is not code, but @code{myAPI} might be." (beautify-description "The term API is not code, but myAPI might be.")) +(test-equal "beautify-description: do not include punctuation when wrapping in @code" + "Code (@code{DelayedMatrix}, @code{MaMa}, or @code{MeMe}) should be wrapped." + (beautify-description "Code (DelayedMatrix, MaMa, or MeMe) should be wrapped.")) + (test-equal "license->symbol" 'license:lgpl2.0 (license->symbol license:lgpl2.0))