From b9bd1bcce995299065252e192c96ae302c9b0e81 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 19 Jul 2023 15:53:28 +0200 Subject: import/utils: beautify-description: Wrap class names in @code{...}. * guix/import/utils.scm (beautify-description): Add procedure to wrap words in @code{...} markup. * tests/import-utils.scm: Add two tests. --- guix/import/utils.scm | 8 +++++++- tests/import-utils.scm | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 2ffc13bae3..257570e95b 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -335,7 +335,13 @@ LENGTH characters." (cut string-trim-both <> #\') ;; Escape single @ to prevent it from being understood as ;; invalid Texinfo syntax. - (cut regexp-substitute/global #f "@" <> 'pre "@@" 'post))))) + (cut regexp-substitute/global #f "@" <> 'pre "@@" 'post) + ;; Wrap camelCase or PascalCase words in @code{...}. + (lambda (word) + (let ((pattern (make-regexp "([A-Z][a-z]+[A-Z]|[a-z]+[A-Z])"))) + (match (list-matches pattern word) + (() word) + (_ (string-append "@code{" word "}"))))))))) (words (string-tokenize (string-trim-both description) (char-set-complement diff --git a/tests/import-utils.scm b/tests/import-utils.scm index 1565dd610a..7b078eac05 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 Ricardo Wurmus +;;; Copyright © 2015, 2017, 2022, 2023 Ricardo Wurmus ;;; Copyright © 2016 Ben Woodcroft ;;; Copyright © 2020 Martin Becze ;;; Copyright © 2021 Sarah Morgensen @@ -53,6 +53,14 @@ Differences are hard to spot, e.g. in CLOS vs. GOOPS.")) "This @@ is not Texinfo syntax. Neither is this %@@>%." (beautify-description "This @ is not Texinfo syntax. Neither is this %@>%.")) +(test-equal "beautify-description: wrap PascalCase words in @code" + "The term @code{DelayedMatrix} refers to a class." + (beautify-description "The term DelayedMatrix refers to a class.")) + +(test-equal "beautify-description: do not wrap acronyms in @code" + "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 "license->symbol" 'license:lgpl2.0 (license->symbol license:lgpl2.0)) -- cgit v1.2.3