From af49e0e41d8283439ff741d6ed832fd84a50be0a Mon Sep 17 00:00:00 2001 From: Vivien Kraus Date: Wed, 1 Jan 2020 00:00:00 +0100 Subject: Set up the guile project --- src/scm/webid-oidc/Makefile.am | 7 +++++++ src/scm/webid-oidc/errors.scm | 30 ++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 src/scm/webid-oidc/Makefile.am create mode 100644 src/scm/webid-oidc/errors.scm (limited to 'src/scm/webid-oidc') diff --git a/src/scm/webid-oidc/Makefile.am b/src/scm/webid-oidc/Makefile.am new file mode 100644 index 0000000..48a41f7 --- /dev/null +++ b/src/scm/webid-oidc/Makefile.am @@ -0,0 +1,7 @@ +dist_webidoidcmod_DATA += \ + %reldir%/errors.scm + +webidoidcgo_DATA += \ + %reldir%/errors.go + +EXTRA_DIST += %reldir%/ChangeLog diff --git a/src/scm/webid-oidc/errors.scm b/src/scm/webid-oidc/errors.scm new file mode 100644 index 0000000..b8d7382 --- /dev/null +++ b/src/scm/webid-oidc/errors.scm @@ -0,0 +1,30 @@ +(define-module (webid-oidc errors) + #:use-module (ice-9 exceptions) + #:use-module (ice-9 optargs) + #:use-module (ice-9 i18n)) + +(define (G_ text) + (let ((out (gettext text))) + (if (string=? out text) + ;; No translation, disambiguate + (car (reverse (string-split text #\|))) + out))) + +;; This is a collection of all errors that can happen, and a function +;; to log them. + +(define*-public (error->str error #:key (max-depth #f)) + (if (record? error) + (let* ((type (record-type-descriptor error)) + (get + (lambda (slot) + ((record-accessor type slot) error))) + (recurse + (if (eqv? max-depth 0) + (lambda (err) (G_ "that’s how it is")) + (lambda (err) + (error->str err #:max-depth (and max-depth (- max-depth 1))))))) + (case (record-type-name type) + (else + (error (format #f "Unhandled exception type ~a." (record-type-name type)))))) + (format #f "~a" error))) -- cgit v1.2.3