Subject: [PATCH 1/2] gnu: Add hunspell-bdic-en*.

From: Herman Rimm <[email-masked]>
Date: Sat, 11 May 2024 21:57:52 +0200

* gnu/packages/aspell.scm (aspell-compiled-word-list): New procedure.
(define-compiled-word-list-dictionary): New macro.
(hunspell-bdic-en, hunspell-bdic-en-au, hunspell-bdic-en-ca,
hunspell-bdic-en-gb, hunspell-bdic-en-gb-ize, hunspell-bdic-en-us): New
variables.

Change-Id: I4f02295add9803aefe7687b11d2bcbcb21cdd6b1
---
 gnu/packages/hunspell.scm | 82 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 82 insertions(+)

diff --git a/gnu/packages/hunspell.scm b/gnu/packages/hunspell.scm
index 7163358260..782292c79f 100644
--- a/gnu/packages/hunspell.scm
+++ b/gnu/packages/hunspell.scm
@@ -32,6 +32,7 @@ (define-module (gnu packages hunspell)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages m4)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages textutils))
 
 (define-public hunspell
@@ -445,3 +446,84 @@ (define-word-list-dictionary hunspell-dict-en-us
   "en_US"
   (synopsis "Hunspell dictionary for United States English"))
 
+(define* (aspell-compiled-word-list
+           language
+           synopsis
+           #:optional
+           (nick (string-map (lambda (chr)
+                               (if (char=? #\_ chr)
+                                   #\-
+                                   chr))
+                             (string-downcase language))))
+  (package
+    (inherit (aspell-word-list language synopsis nick))
+    (name (string-append "hunspell-bdic-" nick))
+    (version "2018.04.16")
+    (native-inputs
+     (list (aspell-word-list language synopsis nick) qtwebengine))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((dictionary
+                (string-append
+                  (assoc-ref %build-inputs
+                             (string-append "hunspell-dict-" ,nick))
+                  "/share/hunspell/" ,language ".dic"))
+               (convert-dict
+                (string-append
+                  (assoc-ref %build-inputs "qtwebengine")
+                  "/lib/qt6/libexec/qwebengine_convert_dict"))
+               (qtwebengine-dictionaries
+                 (string-append %output
+                                "/share/qtwebengine_dictionaries"))
+               (bdic (string-append (string-map (lambda (chr)
+                                                  (if (char=? #\_ chr)
+                                                      #\-
+                                                      chr))
+                                                ,language)
+                                    ".bdic")))
+           (invoke convert-dict dictionary bdic)
+           (install-file bdic qtwebengine-dictionaries)
+           #t))))
+    (description
+     "This package provides a compiled dictionary for the Hunspell
+spell-checking library.")))
+
+(define-syntax define-compiled-word-list-dictionary
+  (syntax-rules (synopsis)
+    ((_ name language (synopsis text))
+     (define-public name
+       (aspell-compiled-word-list language text)))
+    ((_ name language nick (synopsis text))
+     (define-public name
+       (aspell-compiled-word-list language text nick)))))
+
+(define-compiled-word-list-dictionary hunspell-bdic-en
+  "en"
+  (synopsis "Compiled Hunspell dictionary for English"))
+
+(define-compiled-word-list-dictionary hunspell-bdic-en-au
+  "en_AU"
+  (synopsis "Compiled Hunspell dictionary for Australian English"))
+
+(define-compiled-word-list-dictionary hunspell-bdic-en-ca
+  "en_CA"
+  (synopsis "Compiled Hunspell dictionary for Canadian English"))
+
+(define-compiled-word-list-dictionary hunspell-bdic-en-gb
+  "en_GB-ise" "en-gb"
+  (synopsis
+    "Compiled Hunspell dictionary for British English, with -ise endings"))
+
+(define-compiled-word-list-dictionary hunspell-bdic-en-gb-ize
+  "en_GB-ize"
+  (synopsis
+    "Compiled Hunspell dictionary for British English, with -ize endings"))
+
+(define-compiled-word-list-dictionary hunspell-bdic-en-us
+  "en_US"
+  (synopsis "Compiled Hunspell dictionary for United States English"))
+
-- 
2.41.0