From patchwork Wed Nov 3 10:19:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Xinglu Chen X-Patchwork-Id: 34222 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 0A2A127BBE3; Wed, 3 Nov 2021 10:20:14 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,T_DKIM_INVALID, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 8CC8627BBE1 for ; Wed, 3 Nov 2021 10:20:13 +0000 (GMT) Received: from localhost ([::1]:51290 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miDNL-0002t8-OY for patchwork@mira.cbaines.net; Wed, 03 Nov 2021 06:20:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39626) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miDND-0002sc-1G for guix-patches@gnu.org; Wed, 03 Nov 2021 06:20:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:55789) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miDNC-0005fr-Ox for guix-patches@gnu.org; Wed, 03 Nov 2021 06:20:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1miDNC-00013a-LI for guix-patches@gnu.org; Wed, 03 Nov 2021 06:20:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#51581] [PATCH 1/2] import: utils: Add =?utf-8?b?4oCYd3JhcC1s?= =?utf-8?b?aW5lc+KAmQ==?= procedure. Resent-From: Xinglu Chen Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 03 Nov 2021 10:20:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51581 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 51581@debbugs.gnu.org Received: via spool by 51581-submit@debbugs.gnu.org id=B51581.16359347663991 (code B ref 51581); Wed, 03 Nov 2021 10:20:02 +0000 Received: (at 51581) by debbugs.gnu.org; 3 Nov 2021 10:19:26 +0000 Received: from localhost ([127.0.0.1]:39099 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1miDMb-00012I-W6 for submit@debbugs.gnu.org; Wed, 03 Nov 2021 06:19:26 -0400 Received: from h87-96-130-155.cust.a3fiber.se ([87.96.130.155]:45492 helo=mail.yoctocell.xyz) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1miDMZ-000122-Sv for 51581@debbugs.gnu.org; Wed, 03 Nov 2021 06:19:24 -0400 From: Xinglu Chen DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yoctocell.xyz; s=mail; t=1635934757; bh=JPjC/7Zjf6NWv4vNGlSahLNZ6gcbOg+AWJtiq6tixjI=; h=From:To:Subject:In-Reply-To:References:Date; b=kpyT46X2EkKGufJK3wKQjQvmY/xIpUnrfhp8bL5xYP5oEW+J0u5O26Qm6ukJlYQVh Gp2Eb/9Owi57ymVFf/hlzIRcjWMUpNt4/JS25AO87Nw9k4kOfDS8hE8EhUtxowdWY0 9INw9w4q2wAhAHj6IkcHG6yY/1zNKGVMBk0BFnnA= In-Reply-To: References: Message-Id: Date: Wed, 03 Nov 2021 11:19:16 +0100 MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * guix/import/utils.scm (wrap-lines): New procedure. (beautify-description): Use it; add optional ‘length’ argument. * tests/import-utils.scm ("wrap-lines: 80 characters"): Test it. --- guix/import/utils.scm | 36 +++++++++++++++++++++++++++++++----- tests/import-utils.scm | 5 +++++ 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/guix/import/utils.scm b/guix/import/utils.scm index a180742ca3..103ec2ffe1 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2020 Martin Becze ;;; Copyright © 2021 Maxim Cournoyer ;;; Copyright © 2021 Sarah Morgensen +;;; Copyright © 2021 Xinglu Chen ;;; ;;; This file is part of GNU Guix. ;;; @@ -66,6 +67,7 @@ (define-module (guix import utils) license->symbol snake-case + wrap-lines beautify-description alist->package @@ -231,9 +233,32 @@ (define (snake-case str) with dashes." (string-join (string-split (string-downcase str) #\_) "-")) -(define (beautify-description description) - "Improve the package DESCRIPTION by turning a beginning sentence fragment -into a proper sentence and by using two spaces between sentences." +(define* (wrap-lines str #:optional (length 80)) + "Given a string STR, wrap lines at LENGTH characters" + (define (aux str acc counter) + (cond + ((string-null? str) acc) + ((and (not (= (string-length acc) 0)) + (= (modulo (string-length acc) length) 0) + (not (= counter 1))) + (let ((before (substring acc 0 (- counter 1))) + (after (substring acc counter))) + (aux str (string-append before "\n" after) 1))) + ((char=? (string-ref str 0) #\space) + (aux (substring str 1) + (string-append acc (char-set->string (char-set (string-ref str 0)))) + (+ (string-length acc) 1))) + (else + (aux (substring str 1) + (string-append acc (char-set->string (char-set (string-ref str 0)))) + counter)))) + + (aux str "" 1)) + +(define* (beautify-description description #:optional (length 80)) + "Improve the package DESCRIPTION by turning a beginning sentence fragment into +a proper sentence and by using two spaces between sentences, and wrap lines at +LENGTH characters." (let ((cleaned (cond ((string-prefix? "A " description) (string-append "This package provides a" @@ -248,8 +273,9 @@ (define (beautify-description description) (string-length "Functions")))) (else description)))) ;; Use double spacing between sentences - (regexp-substitute/global #f "\\. \\b" - cleaned 'pre ". " 'post))) + (wrap-lines (regexp-substitute/global #f "\\. \\b" + cleaned 'pre ". " 'post) + length))) (define* (package-names->package-inputs names #:optional (output #f)) "Given a list of PACKAGE-NAMES or (PACKAGE-NAME VERSION) pairs, and an diff --git a/tests/import-utils.scm b/tests/import-utils.scm index 7c6c782917..c6790f624a 100644 --- a/tests/import-utils.scm +++ b/tests/import-utils.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2016 Ben Woodcroft ;;; Copyright © 2020 Martin Becze ;;; Copyright © 2021 Sarah Morgensen +;;; Copyright © 2021 Xinglu Chen ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,6 +32,10 @@ (define-module (test-import-utils) (test-begin "import-utils") +(test-equal "wrap-lines: 80 characters" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\nincididunt ut labore et dolore magna aliqua." + (wrap-lines "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")) + (test-equal "beautify-description: use double spacing" "This is a package. It is great. Trust me Mr. Hendrix." (beautify-description From patchwork Wed Nov 3 10:19:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xinglu Chen X-Patchwork-Id: 34221 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 55A5427BBE3; Wed, 3 Nov 2021 10:20:13 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,T_DKIM_INVALID, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id EC9C027BBE1 for ; Wed, 3 Nov 2021 10:20:12 +0000 (GMT) Received: from localhost ([::1]:51296 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miDNM-0002tL-4m for patchwork@mira.cbaines.net; Wed, 03 Nov 2021 06:20:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39628) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miDND-0002sk-RI for guix-patches@gnu.org; Wed, 03 Nov 2021 06:20:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:55790) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miDND-0005g0-Fr for guix-patches@gnu.org; Wed, 03 Nov 2021 06:20:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1miDND-00013h-2U for guix-patches@gnu.org; Wed, 03 Nov 2021 06:20:03 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#51581] [PATCH 2/2] import: Beautify descriptions when appropriate. Resent-From: Xinglu Chen Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 03 Nov 2021 10:20:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51581 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 51581@debbugs.gnu.org Received: via spool by 51581-submit@debbugs.gnu.org id=B51581.16359347734012 (code B ref 51581); Wed, 03 Nov 2021 10:20:03 +0000 Received: (at 51581) by debbugs.gnu.org; 3 Nov 2021 10:19:33 +0000 Received: from localhost ([127.0.0.1]:39102 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1miDMj-00012e-Cs for submit@debbugs.gnu.org; Wed, 03 Nov 2021 06:19:33 -0400 Received: from h87-96-130-155.cust.a3fiber.se ([87.96.130.155]:45522 helo=mail.yoctocell.xyz) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1miDMh-00012J-C3 for 51581@debbugs.gnu.org; Wed, 03 Nov 2021 06:19:31 -0400 From: Xinglu Chen DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yoctocell.xyz; s=mail; t=1635934765; bh=HLMHC9Dph5H9p1lXqlDaYly1hPpXwOZSEuStQ5cricA=; h=From:To:Subject:In-Reply-To:References:Date; b=K84scvnxrLrRDh++cW3T4TNADJO667+ZP7PJzAiZlCxAj2WbqeROqbgEQOwIt0qGf ef5GxOGZJiT1LBu+RWP/USo01DRCWcPGfJZJ0IfY2Ap1lHK4ivWlcBfZzRwQud7/SP 3j3U0FcTcx1AqNhbyAT6UOQHAfh0HDMB9vN0/gGU= In-Reply-To: References: Message-Id: Date: Wed, 03 Nov 2021 11:19:25 +0100 MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * guix/import/elpa.scm (elpa-package->sexp) * guix/import/gnu.scm (gnu-package->sexp) * guix/import/hackage.scm (hackage-module->sexp) * guix/import/minetest.scm (make-minetest-sexp) * guix/import/opam.scm (opam->guix-package) * guix/import/pypi.scm (make-pypi-sexp): Beautify descriptions. --- guix/import/elpa.scm | 2 +- guix/import/gnu.scm | 3 ++- guix/import/hackage.scm | 4 ++-- guix/import/minetest.scm | 2 +- guix/import/opam.scm | 3 ++- guix/import/pypi.scm | 2 +- 6 files changed, 9 insertions(+), 7 deletions(-) diff --git a/guix/import/elpa.scm b/guix/import/elpa.scm index 96ebc17af1..8daa77bfcd 100644 --- a/guix/import/elpa.scm +++ b/guix/import/elpa.scm @@ -390,7 +390,7 @@ (define melpa-source '()) (home-page ,(elpa-package-home-page pkg)) (synopsis ,(elpa-package-synopsis pkg)) - (description ,(elpa-package-description pkg)) + (description ,(beautify-description (elpa-package-description pkg))) (license ,license)) dependencies-names)) diff --git a/guix/import/gnu.scm b/guix/import/gnu.scm index 51d5b77d34..2b9b71feb0 100644 --- a/guix/import/gnu.scm +++ b/guix/import/gnu.scm @@ -100,7 +100,8 @@ (define sig-url (file-sha256 tarball)))))) (build-system gnu-build-system) (synopsis ,(gnu-package-doc-summary package)) - (description ,(gnu-package-doc-description package)) + (description ,(beautify-description + (gnu-package-doc-description package))) (home-page ,(match (gnu-package-doc-urls package) ((head . tail) (qualified-url head)))) (license find-by-yourself!))) diff --git a/guix/import/hackage.scm b/guix/import/hackage.scm index 03881f1a3d..95955e27a0 100644 --- a/guix/import/hackage.scm +++ b/guix/import/hackage.scm @@ -32,7 +32,7 @@ (define-module (guix import hackage) #:use-module ((guix utils) #:select (package-name->name+version canonical-newline-port)) #:use-module (guix http-client) - #:use-module ((guix import utils) #:select (factorize-uri recursive-import)) + #:use-module (guix import utils) #:use-module (guix import cabal) #:use-module (guix store) #:use-module (gcrypt hash) @@ -315,7 +315,7 @@ (define (maybe-arguments) ,@(maybe-arguments) (home-page ,(cabal-package-home-page cabal)) (synopsis ,(cabal-package-synopsis cabal)) - (description ,(cabal-package-description cabal)) + (description ,(beautify-description (cabal-package-description cabal))) (license ,(string->license (cabal-package-license cabal)))) (append hackage-dependencies hackage-native-dependencies)))) diff --git a/guix/import/minetest.scm b/guix/import/minetest.scm index 0f3ab473ca..abddd885ee 100644 --- a/guix/import/minetest.scm +++ b/guix/import/minetest.scm @@ -322,7 +322,7 @@ (define (make-minetest-sexp author/name version repository commit ,@(maybe-propagated-inputs (map contentdb->package-name inputs)) (home-page ,home-page) (synopsis ,(delete-cr synopsis)) - (description ,(delete-cr description)) + (description ,(beautify-description (delete-cr description))) (license ,(if (eq? media-license license) license `(list ,media-license ,license))) diff --git a/guix/import/opam.scm b/guix/import/opam.scm index fe13d29f03..395019d758 100644 --- a/guix/import/opam.scm +++ b/guix/import/opam.scm @@ -371,7 +371,8 @@ (define* (opam->guix-package name #:key (repo '()) version) ,(list 'quasiquote `((upstream-name . ,name)))))) (home-page ,(metadata-ref opam-content "homepage")) (synopsis ,(metadata-ref opam-content "synopsis")) - (description ,(metadata-ref opam-content "description")) + (description ,(beautify-description + (metadata-ref opam-content "description"))) (license ,(spdx-string->license (metadata-ref opam-content "license")))) (filter diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm index f908136481..3d463a0775 100644 --- a/guix/import/pypi.scm +++ b/guix/import/pypi.scm @@ -474,7 +474,7 @@ (define (maybe-upstream-name name) ,@(maybe-inputs native-inputs 'native-inputs) (home-page ,home-page) (synopsis ,synopsis) - (description ,description) + (description ,(beautify-description description)) (license ,(license->symbol license))) upstream-dependencies))))))))