guile-jsonld/jsonld/options.scm

options.scm

1
;;;; Copyright (C) 2019, 2020 Julien Lepiller <julien@lepiller.eu>
2
;;;; 
3
;;;; This library is free software; you can redistribute it and/or
4
;;;; modify it under the terms of the GNU Lesser General Public
5
;;;; License as published by the Free Software Foundation; either
6
;;;; version 3 of the License, or (at your option) any later version.
7
;;;; 
8
;;;; This library is distributed in the hope that it will be useful,
9
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
10
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11
;;;; Lesser General Public License for more details.
12
;;;; 
13
;;;; You should have received a copy of the GNU Lesser General Public
14
;;;; License along with this library; if not, write to the Free Software
15
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
;;;; 
17
18
(define-module (jsonld options)
19
  #:use-module (json)
20
  #:use-module (jsonld download)
21
  #:use-module (jsonld iri)
22
  #:use-module (jsonld memoization)
23
  #:use-module (web client)
24
  #:use-module (web response)
25
  #:use-module (web uri)
26
  #:use-module (rnrs bytevectors)
27
  #:use-module (ice-9 match)
28
  #:use-module (srfi srfi-1)
29
  #:use-module (srfi srfi-9)
30
  #:export (jsonld-options?
31
            jsonld-options-base
32
            jsonld-options-compact-arrays?
33
            jsonld-options-compact-to-relative?
34
            jsonld-options-document-loader
35
            jsonld-options-expand-context
36
            jsonld-options-extract-all-scripts?
37
            jsonld-options-frame-expansion?
38
            jsonld-options-ordered?
39
            jsonld-options-processing-mode
40
            jsonld-options-produce-generalized-rdf?
41
            jsonld-options-rdf-direction
42
            jsonld-options-use-native-types?
43
            jsonld-options-use-rdf-type?
44
            new-jsonld-options
45
            update-jsonld-options))
46
47
(define-record-type jsonld-options
48
  (make-jsonld-options
49
    base compact-arrays? compact-to-relative? document-loader expand-context
50
    extract-all-scripts? frame-expansion? ordered? processing-mode
51
    produce-generalized-rdf? rdf-direction use-native-types? use-rdf-type?)
52
  jsonld-options?
53
  (base                     jsonld-options-base)
54
  (compact-arrays?          jsonld-options-compact-arrays?)
55
  (compact-to-relative?     jsonld-options-compact-to-relative?)
56
  (document-loader          jsonld-options-document-loader)
57
  (expand-context           jsonld-options-expand-context)
58
  (extract-all-scripts?     jsonld-options-extract-all-scripts?)
59
  (frame-expansion?         jsonld-options-frame-expansion?)
60
  (ordered?                 jsonld-options-ordered?)
61
  (processing-mode          jsonld-options-processing-mode)
62
  (produce-generalized-rdf? jsonld-options-produce-generalized-rdf?)
63
  (rdf-direction            jsonld-options-rdf-direction)
64
  (use-native-types?        jsonld-options-use-native-types?)
65
  (use-rdf-type?            jsonld-options-use-rdf-type?))
66
67
(define* (new-jsonld-options #:key
68
                             (base #f)
69
                             (compact-arrays? #t)
70
                             (compact-to-relative? #t)
71
                             (document-loader (memoize download-json))
72
                             (expand-context #f)
73
                             (extract-all-scripts? #f)
74
                             (frame-expansion? #f)
75
                             (ordered? #f)
76
                             (processing-mode "jsonld-1.1")
77
                             (produce-generalized-rdf? #t)
78
                             (rdf-direction #f)
79
                             (use-native-types? #f)
80
                             (use-rdf-type? #f))
81
  (make-jsonld-options
82
    base compact-arrays? compact-to-relative? document-loader expand-context
83
    extract-all-scripts? frame-expansion? ordered? processing-mode
84
    produce-generalized-rdf? rdf-direction use-native-types? use-rdf-type?))
85
86
(define* (update-jsonld-options options #:key
87
           (base                     (jsonld-options-base options))
88
           (compact-arrays?          (jsonld-options-compact-arrays? options))
89
           (compact-to-relative?     (jsonld-options-compact-to-relative? options))
90
           (document-loader          (jsonld-options-document-loader options))
91
           (expand-context           (jsonld-options-expand-context options))
92
           (extract-all-scripts?     (jsonld-options-extract-all-scripts? options))
93
           (frame-expansion?         (jsonld-options-frame-expansion? options))
94
           (ordered?                 (jsonld-options-ordered? options))
95
           (processing-mode          (jsonld-options-processing-mode options))
96
           (produce-generalized-rdf? (jsonld-options-produce-generalized-rdf? options))
97
           (rdf-direction            (jsonld-options-rdf-direction options))
98
           (use-native-types?        (jsonld-options-use-native-types? options))
99
           (use-rdf-type?            (jsonld-options-use-rdf-type? options)))
100
  (make-jsonld-options
101
    base compact-arrays? compact-to-relative? document-loader expand-context
102
    extract-all-scripts? frame-expansion? ordered? processing-mode
103
    produce-generalized-rdf? rdf-direction use-native-types? use-rdf-type?))
104