[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#26137: [PATCH 2/6] services: Factorize define-maybe macro.
From: |
Mathieu Othacehe |
Subject: |
bug#26137: [PATCH 2/6] services: Factorize define-maybe macro. |
Date: |
Fri, 17 Mar 2017 11:34:26 +0100 |
* gnu/services/configuration.scm (id): New procedure extracted from
define-configuration.
(define-maybe): New exported procedure, moved from messaging.scm.
* gnu/services/messaging.scm (define-maybe): Remove it.
(id): Move declaration inside define-all-configurations which is now
the only caller procedure.
---
gnu/services/configuration.scm | 24 +++++++++++++++++++++---
gnu/services/messaging.scm | 23 ++++-------------------
2 files changed, 25 insertions(+), 22 deletions(-)
diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm
index 2ad3a637a..f59920d5a 100644
--- a/gnu/services/configuration.scm
+++ b/gnu/services/configuration.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Andy Wingo <address@hidden>
+;;; Copyright © 2017 Mathieu Othacehe <address@hidden>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -36,6 +37,7 @@
configuration-field-default-value-thunk
configuration-field-documentation
serialize-configuration
+ define-maybe
define-configuration
validate-configuration
generate-documentation
@@ -85,9 +87,7 @@
(configuration-field-name field) val))))
fields))
-(define-syntax define-configuration
- (lambda (stx)
- (define (id ctx part . parts)
+(define (id ctx part . parts)
(let ((part (syntax->datum part)))
(datum->syntax
ctx
@@ -95,6 +95,24 @@
(() part)
(parts (symbol-append part
(syntax->datum (apply id ctx parts))))))))
+
+(define-syntax define-maybe
+ (lambda (x)
+ (syntax-case x ()
+ ((_ stem)
+ (with-syntax
+ ((stem? (id #'stem #'stem #'?))
+ (maybe-stem? (id #'stem #'maybe- #'stem #'?))
+ (serialize-stem (id #'stem #'serialize- #'stem))
+ (serialize-maybe-stem (id #'stem #'serialize-maybe- #'stem)))
+ #'(begin
+ (define (maybe-stem? val)
+ (or (eq? val 'disabled) (stem? val)))
+ (define (serialize-maybe-stem field-name val)
+ (when (stem? val) (serialize-stem field-name val)))))))))
+
+(define-syntax define-configuration
+ (lambda (stx)
(syntax-case stx ()
((_ stem (field (field-type def) doc) ...)
(with-syntax (((field-getter ...)
diff --git a/gnu/services/messaging.scm b/gnu/services/messaging.scm
index 34723dc11..715d6181f 100644
--- a/gnu/services/messaging.scm
+++ b/gnu/services/messaging.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Clément Lassieur <address@hidden>
+;;; Copyright © 2017 Mathieu Othacehe <address@hidden>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -49,27 +50,11 @@
;;;
;;; Code:
-(define-syntax-rule (id ctx parts ...)
- "Assemble PARTS into a raw (unhygienic) identifier."
- (datum->syntax ctx (symbol-append (syntax->datum parts) ...)))
-
-(define-syntax define-maybe
- (lambda (x)
- (syntax-case x ()
- ((_ stem)
- (with-syntax
- ((stem? (id #'stem #'stem #'?))
- (maybe-stem? (id #'stem #'maybe- #'stem #'?))
- (serialize-stem (id #'stem #'serialize- #'stem))
- (serialize-maybe-stem (id #'stem #'serialize-maybe- #'stem)))
- #'(begin
- (define (maybe-stem? val)
- (or (eq? val 'disabled) (stem? val)))
- (define (serialize-maybe-stem field-name val)
- (when (stem? val) (serialize-stem field-name val)))))))))
-
(define-syntax define-all-configurations
(lambda (stx)
+ (define-syntax-rule (id ctx parts ...)
+ "Assemble PARTS into a raw (unhygienic) identifier."
+ (datum->syntax ctx (symbol-append (syntax->datum parts) ...)))
(define (make-pred arg)
(lambda (field target)
(and (memq (syntax->datum target) `(common ,arg)) field)))
--
2.12.0
- bug#26137: [PATCH 0/6 v2] Add tlp service., Mathieu Othacehe, 2017/03/17
- bug#26137: [PATCH 1/6] gnu: tlp: Read configuration from /etc/tlp., Mathieu Othacehe, 2017/03/17
- bug#26137: [PATCH v3 0/6] Add TLP service., Mathieu Othacehe, 2017/03/24
- bug#26137: [PATCH v3 1/6] gnu: tlp: Read configuration from /etc/tlp., Mathieu Othacehe, 2017/03/24
- bug#26137: [PATCH v3 3/6] services: configuration: Rewrite id procedure., Mathieu Othacehe, 2017/03/24
- bug#26137: [PATCH v3 2/6] services: Factorize define-maybe macro., Mathieu Othacehe, 2017/03/24
- bug#26137: [PATCH v3 5/6] services: openvpn: Fix a typo which was corrected in generated doc., Mathieu Othacehe, 2017/03/24
- bug#26137: [PATCH v3 6/6] doc: Re-generate openvpn service documentation., Mathieu Othacehe, 2017/03/24