mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
ui: Add package-description-string.
Provide support for Texinfo's markup in package description. * guix/ui.scm (%text-width): New parameter. (texi->plain-text): New variable. (package->recutils): Use them. (package-description-string): New variable. * emacs/guix-main.scm (%package-param-alist): Use it. * gnu/packages/perl.scm (perl-devel-globaldestruction) (perl-devel-lexalias, perl-exporter-lite): Adapt to Texinfo's markup. * gnu/packages/python.scm (python2-empy): Likewise.
This commit is contained in:
parent
8531b326f1
commit
1cd4027cfd
4 changed files with 42 additions and 18 deletions
|
@ -293,7 +293,7 @@ (define %package-param-alist
|
|||
(license . ,package-license-names)
|
||||
(source . ,package-source-names)
|
||||
(synopsis . ,package-synopsis)
|
||||
(description . ,package-description)
|
||||
(description . ,package-description-string)
|
||||
(home-url . ,package-home-page)
|
||||
(outputs . ,package-outputs)
|
||||
(non-unique . ,(negate package-unique?))
|
||||
|
|
|
@ -1705,7 +1705,7 @@ (define-public perl-devel-globaldestruction
|
|||
(home-page "http://search.cpan.org/dist/Devel-GlobalDestruction")
|
||||
(synopsis "Provides equivalent of ${^GLOBAL_PHASE} eq 'DESTRUCT' for older perls")
|
||||
(description "Devel::GlobalDestruction provides a function returning the
|
||||
equivalent of \"${^GLOBAL_PHASE} eq 'DESTRUCT'\" for older perls.")
|
||||
equivalent of \"$@{^GLOBAL_PHASE@} eq 'DESTRUCT'\" for older perls.")
|
||||
(license (package-license perl))))
|
||||
|
||||
(define-public perl-devel-lexalias
|
||||
|
@ -1949,7 +1949,7 @@ (define-public perl-eval-closure
|
|||
eval is not without its issues however - it's difficult to control the scope
|
||||
it's used in (which determines which variables are in scope inside the eval),
|
||||
and it's easy to miss compilation errors, since eval catches them and sticks
|
||||
them in $@ instead. This module attempts to solve these problems. It
|
||||
them in $@@ instead. This module attempts to solve these problems. It
|
||||
provides an eval_closure function, which evals a string in a clean
|
||||
environment, other than a fixed list of specified variables. Compilation
|
||||
errors are rethrown automatically.")
|
||||
|
@ -1993,7 +1993,7 @@ (define-public perl-exporter-lite
|
|||
(description
|
||||
"Exporter::Lite is an alternative to Exporter, intended to provide a
|
||||
lightweight subset of the most commonly-used functionality. It supports
|
||||
import(), @EXPORT and @EXPORT_OK and not a whole lot else.")
|
||||
import(), @@EXPORT and @@EXPORT_OK and not a whole lot else.")
|
||||
(home-page (string-append "http://search.cpan.org/~neilb/"
|
||||
"Exporter-Lite-" version))
|
||||
(license (package-license perl))))
|
||||
|
|
|
@ -1174,7 +1174,7 @@ (define-public python2-empy
|
|||
"EmPy is a system for embedding Python expressions and statements in
|
||||
template text; it takes an EmPy source file, processes it, and produces
|
||||
output. This is accomplished via expansions, which are special signals to the
|
||||
EmPy system and are set off by a special prefix (by default the at sign, @).
|
||||
EmPy system and are set off by a special prefix (by default the at sign, @@).
|
||||
EmPy can expand arbitrary Python expressions and statements in this way, as
|
||||
well as a variety of special forms. Textual data not explicitly delimited in
|
||||
this way is sent unaffected to the output, allowing Python to be used in
|
||||
|
|
50
guix/ui.scm
50
guix/ui.scm
|
@ -3,6 +3,7 @@
|
|||
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
|
||||
;;; Copyright © 2014 Deck Pickard <deck.r.pickard@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -45,6 +46,9 @@ (define-module (guix ui)
|
|||
#:use-module (ice-9 regex)
|
||||
#:autoload (system repl repl) (start-repl)
|
||||
#:autoload (system repl debug) (make-debug stack->vector)
|
||||
#:use-module (texinfo)
|
||||
#:use-module (texinfo plain-text)
|
||||
#:use-module (texinfo string-utils)
|
||||
#:export (_
|
||||
N_
|
||||
P_
|
||||
|
@ -69,6 +73,7 @@ (define-module (guix ui)
|
|||
switch-symlinks
|
||||
config-directory
|
||||
fill-paragraph
|
||||
package-description-string
|
||||
string->recutils
|
||||
package->recutils
|
||||
package-specification->name+version+output
|
||||
|
@ -775,6 +780,28 @@ (define (maybe-break chr result)
|
|||
;;; Packages.
|
||||
;;;
|
||||
|
||||
(define %text-width
|
||||
(make-parameter (or (and=> (getenv "WIDTH") string->number)
|
||||
80)))
|
||||
|
||||
(set! (@@ (texinfo plain-text) wrap*)
|
||||
;; XXX: Monkey patch this private procedure to let 'package->recutils'
|
||||
;; parameterize the fill of description field correctly.
|
||||
(lambda strings
|
||||
(let ((indent (fluid-ref (@@ (texinfo plain-text) *indent*))))
|
||||
(fill-string (string-concatenate strings)
|
||||
#:line-width (%text-width) #:initial-indent indent
|
||||
#:subsequent-indent indent))))
|
||||
|
||||
(define (texi->plain-text str)
|
||||
"Return a plain-text representation of texinfo fragment STR."
|
||||
(stexi->plain-text (texi-fragment->stexi str)))
|
||||
|
||||
(define (package-description-string package)
|
||||
"Return a plain-text representation of PACKAGE description field."
|
||||
(and=> (package-description package)
|
||||
(compose texi->plain-text P_)))
|
||||
|
||||
(define (string->recutils str)
|
||||
"Return a version of STR where newlines have been replaced by newlines
|
||||
followed by \"+ \", which makes for a valid multi-line field value in the
|
||||
|
@ -787,18 +814,9 @@ (define (string->recutils str)
|
|||
'()
|
||||
str)))
|
||||
|
||||
(define* (package->recutils p port
|
||||
#:optional (width (or (and=> (getenv "WIDTH")
|
||||
string->number)
|
||||
80)))
|
||||
(define* (package->recutils p port #:optional (width (%text-width)))
|
||||
"Write to PORT a `recutils' record of package P, arranging to fit within
|
||||
WIDTH columns."
|
||||
(define (description->recutils str)
|
||||
(let ((str (P_ str)))
|
||||
(string->recutils
|
||||
(fill-paragraph str width
|
||||
(string-length "description: ")))))
|
||||
|
||||
(define (dependencies->recutils packages)
|
||||
(let ((list (string-join (map package-full-name
|
||||
(sort packages package<?)) " ")))
|
||||
|
@ -842,9 +860,15 @@ (define (package<? p1 p2)
|
|||
(chr chr))
|
||||
(or (and=> (package-synopsis p) P_)
|
||||
"")))
|
||||
(format port "description: ~a~%"
|
||||
(and=> (package-description p) description->recutils))
|
||||
(newline port))
|
||||
(format port "~a~2%"
|
||||
(string->recutils
|
||||
(string-trim-right
|
||||
(parameterize ((%text-width width))
|
||||
(texi->plain-text
|
||||
(string-append "description: "
|
||||
(or (and=> (package-description p) P_)
|
||||
""))))
|
||||
#\newline))))
|
||||
|
||||
(define (string->generations str)
|
||||
"Return the list of generations matching a pattern in STR. This function
|
||||
|
|
Loading…
Reference in a new issue