Subject: [bug#36112] [PATCH] gnu: aspell.scm: Fix dictionaries with underscore/uppercase in name.

From: Jens Mølgaard <[email-masked]>
Date: Fri, 07 Jun 2019 16:56:57 +1200

Thank you for the handholding, by the way... ;-)

Ludovic Courtès <[email-masked]> writes:
> What about avoiding regexps with something like:
>
>   (string-map (match-lambda
>                 (#\_ #\-)
>                 (chr chr))
>               (string-downcase dict-name))
>
> ?

Yeah, that looks a lot nicer / more scheme-y to me as well. Was trying
to find something to use with string-map.

>
> Please provide a ChangeLog-style commit log.   :-)
>
>   https://gnu.org/software/guix/manual/en/html_node/Submitting-Patches.html
>

How is this one?

From f2c43296e7e76d6343749f0fa04b0b9223710bb1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jens=20M=C3=B8lgaard?= <[email-masked]>
Date: Thu, 6 Jun 2019 17:06:56 +1200
Subject: [PATCH] gnu: aspell.scm: Handle dictionary names with
 underscore/uppercase.

* gnu/packages/aspell.scm(aspell-dictionary)<name>:
Generate package name from upstream name.
(aspell-dict-pt-pt, aspell-dict-pt-br): Use upstream name for URL.
---
 gnu/packages/aspell.scm | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index 1bbe57a4ef..cbc9baeeb3 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -32,7 +32,8 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages perl))
+  #:use-module (gnu packages perl)
+  #:use-module (ice-9 match))
 
 (define-public aspell
   (package
@@ -102,7 +103,14 @@ dictionaries, including personal ones.")
 (define* (aspell-dictionary dict-name full-name
                             #:key version sha256 (prefix "aspell6-"))
   (package
-    (name (string-append "aspell-dict-" dict-name))
+    (name (string-append
+           "aspell-dict-"
+           ;; Downcase and replace underscore in package names
+           ;; to follow Guix naming conventions.
+           (string-map (match-lambda
+                         (#\_ #\-)
+                         (chr chr))
+           (string-downcase dict-name))))
     (version version)
     (source (origin
               (method url-fetch)
@@ -281,7 +289,7 @@ dictionaries, including personal ones.")
                       "0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc")))
 
 (define-public aspell-dict-pt-br
-  (aspell-dictionary "pt-br" "Brazilian Portuguese"
+  (aspell-dictionary "pt_BR" "Brazilian Portuguese"
                      #:version "20090702-0"
                      #:prefix "aspell6-"
                      #:sha256
@@ -289,7 +297,7 @@ dictionaries, including personal ones.")
                       "1y09lx9zf2rnp55r16b2vgj953l3538z1vaqgflg9mdvm555bz3p")))
 
 (define-public aspell-dict-pt-pt
-  (aspell-dictionary "pt-pt" "Portuguese"
+  (aspell-dictionary "pt_PT" "Portuguese"
                      #:version "20070510-0"
                      #:prefix "aspell6-"
                      #:sha256
-- 
2.21.0