mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
utils: Add insert-expression procedure.
* guix/utils.scm (define-module): Use (guix read-print) and export (insert-expression). (insert-expression): Add procedure. * tests/utils.scm ("insert-expression"): Add test. Change-Id: I971a43a78aa6ecaaef33c1a7a0db4b287eb85036 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
a1d0610f83
commit
babd39e843
2 changed files with 25 additions and 0 deletions
|
@ -20,6 +20,7 @@
|
|||
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
|
||||
;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
|
||||
;;; Copyright © 2024 Herman Rimm <herman@rimm.ee>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -38,6 +39,7 @@
|
|||
|
||||
(define-module (guix utils)
|
||||
#:use-module (guix config)
|
||||
#:autoload (guix read-print) (object->string*)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-11)
|
||||
#:use-module (srfi srfi-26)
|
||||
|
@ -145,6 +147,7 @@ (define-module (guix utils)
|
|||
go-to-location
|
||||
edit-expression
|
||||
delete-expression
|
||||
insert-expression
|
||||
|
||||
filtered-port
|
||||
decompressed-port
|
||||
|
@ -502,6 +505,14 @@ (define (delete-expression source-properties)
|
|||
"Delete the expression specified by SOURCE-PROPERTIES."
|
||||
(edit-expression source-properties (const "") #:include-trailing-newline? #t))
|
||||
|
||||
(define (insert-expression source-properties expr)
|
||||
"Insert EXPR before the top-level expression specified by
|
||||
SOURCE-PROPERTIES."
|
||||
(let* ((expr (object->string* expr 0))
|
||||
(insert (lambda (str)
|
||||
(string-append expr "\n\n" str))))
|
||||
(edit-expression source-properties insert)))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Keyword arguments.
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
|
||||
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
|
||||
;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
|
||||
;;; Copyright © 2024 Herman Rimm <herman@rimm.ee>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -274,6 +275,19 @@ (define (test-compression/decompression method run?)
|
|||
string-reverse)
|
||||
(call-with-input-file temp-file get-string-all)))
|
||||
|
||||
(test-equal "insert-expression"
|
||||
"(define-public package-1\n 'package)\n
|
||||
(define-public package-2\n 'package)\n"
|
||||
(begin
|
||||
(call-with-output-file temp-file
|
||||
(lambda (port)
|
||||
(display "(define-public package-2\n 'package)\n" port)))
|
||||
(insert-expression `((filename . ,temp-file)
|
||||
(line . 0)
|
||||
(column . 0))
|
||||
`(define-public package-1 'package))
|
||||
(call-with-input-file temp-file get-string-all)))
|
||||
|
||||
(test-equal "string-distance"
|
||||
'(0 1 1 5 5)
|
||||
(list
|
||||
|
|
Loading…
Reference in a new issue