aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2024-11-27 14:08:34 +0100
committerRicardo Wurmus <rekado@elephly.net>2024-12-03 16:59:54 +0100
commit8bee3a59108f09d362be46e25f91e86e6b918d84 (patch)
treec48a762c9b830d0ebf6044bea0f746462e098339
parentc851b73e79b9a1927658714f191b4611b8ab1ea3 (diff)
downloadguix-8bee3a59108f09d362be46e25f91e86e6b918d84.tar
guix-8bee3a59108f09d362be46e25f91e86e6b918d84.tar.gz
import: utils: Wrap function names in @code.
* guix/import/utils.scm (beautify-description): Adjust to include "()" in @code wrapper. * tests/import-utils.scm ("beautify-description: wrap function names in @code"): New test. Change-Id: I2b58728571a18ce8302c1b6f98b0c16dbe5931c3
-rw-r--r--guix/import/utils.scm18
-rw-r--r--tests/import-utils.scm6
2 files changed, 17 insertions, 7 deletions
diff --git a/guix/import/utils.scm b/guix/import/utils.scm
index faeec60845..ccf18a7bf9 100644
--- a/guix/import/utils.scm
+++ b/guix/import/utils.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2012, 2013, 2018, 2019, 2020, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org>
;;; Copyright © 2016 David Craven <david@craven.ch>
-;;; Copyright © 2017, 2019, 2020, 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2019, 2020, 2022, 2023, 2024 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net>
;;; Copyright © 2020 Helio Machado <0x2b3bfa0+guix@googlemail.com>
@@ -338,15 +338,21 @@ LENGTH characters."
;; Escape single @ to prevent it from being understood as
;; invalid Texinfo syntax.
(cut regexp-substitute/global #f "@" <> 'pre "@@" 'post)
- ;; Wrap camelCase or PascalCase words in @code{...}.
+ ;; Wrap camelCase or PascalCase words or text followed
+ ;; immediately by "()" in @code{...}.
(lambda (word)
- (let ((pattern (make-regexp "([A-Z][a-z]+[A-Z]|[a-z]+[A-Z])")))
+ (let ((pattern
+ (make-regexp
+ "([A-Z][a-z]+[A-Z]|[a-z]+[A-Z]|.+\\(\\))")))
(match (list-matches pattern word)
(() 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)))
+ ;; Do not include leading or trailing punctuation,
+ ;; unless its "()".
+ (let* ((last-text (if (string-suffix? "()" (match:substring m 1))
+ (string-length (match:substring m 1))
+ (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))))
diff --git a/tests/import-utils.scm b/tests/import-utils.scm
index bec38b0c30..607349203c 100644
--- a/tests/import-utils.scm
+++ b/tests/import-utils.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2017, 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2017, 2022, 2023, 2024 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
@@ -65,6 +65,10 @@ Differences are hard to spot, e.g. in CLOS vs. GOOPS."))
"Code (@code{DelayedMatrix}, @code{MaMa}, or @code{MeMe}) should be wrapped."
(beautify-description "Code (DelayedMatrix, MaMa, or MeMe) should be wrapped."))
+(test-equal "beautify-description: wrap function names in @code"
+ "The main functions are: @code{haplo.em()} and @code{haplo.power()}; FYI."
+ (beautify-description "The main functions are: haplo.em() and haplo.power(); FYI."))
+
(test-equal "license->symbol"
'license:lgpl2.0
(license->symbol license:lgpl2.0))