changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/lib/dat/pkg.lisp

changeset 619: 35a579313b80
parent: 74a55d5decce
child: 671f87e36e07
author: Richard Westhaver <ellis@rwest.io>
date: Thu, 22 Aug 2024 22:12:51 -0400
permissions: -rw-r--r--
description: init ini and vc work
1 ;;; dat/pkg.lisp --- Data
2 
3 ;;; Code:
4 (defpackage :dat/proto
5  (:use :cl :std)
6  (:export :serialize :deserialize
7  :serializer-error :deserializer-error
8  :serde :serde-error :dat-error))
9 
10 (defpackage :dat/sxp
11  (:nicknames :sxp)
12  (:use :cl :sb-mop :std)
13  (:import-from :uiop :read-file-forms :slurp-stream-forms :with-output-file)
14  ;; TODO: hot-patch readtables into sxp classes/parsers
15  (:import-from :std/named-readtables :defreadtable :in-readtable)
16  (:export
17  :sxp-fmt-designator
18  :form :formp :sxp-error :sxp-syntax-error :reader :writer :fmt
19  :wrap :unwrap
20  :unwrap-or
21  :sxpp :build-ast :load-ast :load-ast*
22  :ast
23  :define-macro :define-fmt :read-sxp-file :write-sxp-file
24  :read-sxp-string :write-sxp-string :read-sxp-stream :write-sxp-stream
25  :make-sxp :sxp :formp :form
26  :file-read-forms
27  :wrap-object :unwrap-object))
28 
29 (defpackage :dat/dot
30  (:use :cl :std :dat/proto :obj/graph)
31  (:export
32  :read-dot-file :write-dot-file
33  :read-dot-stream :write-dot-stream
34  :parse-dot-string))
35 
36 (defpackage :dat/csv
37  (:use :cl :std :dat/proto :obj/query)
38  (:export
39  :read-csv-file
40  :*csv-separator*
41  #:read-csv-stream
42  :write-csv-file
43  :write-csv-stream
44  :read-csv-file-and-sort
45  :parse-csv-string
46  #:write-csv-string))
47 
48 (defpackage :dat/ini
49  (:use :cl :std :dat/proto)
50  (:export
51  :ini-encode
52  :ini-decode)
53 
54 (defpackage :dat/toml
55  (:use :cl :std :dat/proto :obj/time)
56  (:export
57  #:parse
58  #:parse-toml-blocks
59  #:toml-collection
60  #:children
61  #:toml-table
62  #:inline-toml-table
63  #:toml-table-array
64  #:toml-redefine-table-error
65  #:toml-redefine-property-error
66  #:toml-modify-inline-table-error
67  #:toml-dotted-key-redefine-table-error
68  #:toml-dotted-key-open-table-array-error))
69 
70 (defpackage :dat/arff
71  (:use :cl :std :dat/proto :dat/csv)
72  (:export
73  :arff :arff-relation :arff-attributes :arff-data :arff-path
74  :parse-arff :parse-arff-string :parse-arff-stream
75  :remove-attribute-by-name))
76 
77 (defpackage :dat/json
78  (:use :cl :std :dat/proto)
79  (:export
80  :*allow-json-trailing-commas*
81  :json-trailing-commas-p
82  #:json-decode
83  #:json-encode
84  #:json-read
85  #:json-enable-reader-macro
86  #:json-object
87  #:json-object-members
88  #:json-getf
89  #:json-setf))
90 
91 (defpackage :dat/base64
92  (:use :cl :std :dat/proto)
93  (:export #:base64-stream-to-integer
94  #:base64-stream-to-string
95  #:base64-stream-to-stream
96  #:base64-stream-to-usb8-array
97  #:base64-string-to-integer
98  #:base64-string-to-string
99  #:base64-string-to-stream
100  #:base64-string-to-usb8-array
101  #:string-to-base64-string
102  #:string-to-base64-stream
103  #:usb8-array-to-base64-string
104  #:usb8-array-to-base64-stream
105  #:stream-to-base64-string
106  #:stream-to-base64-stream
107  #:integer-to-base64-string
108  #:integer-to-base64-stream
109  ;; Conditions.
110  #:base64-error
111  #:bad-base64-character
112  #:incomplete-base64-data
113  ;; For creating custom encode/decode tables.
114  #:make-decode-table
115  #:+decode-table+
116  #:+uri-decode-table+))
117 
118 (defpackage :dat/html
119  (:use :cl :std :dat/proto)
120  (:import-from :sb-ext :defglobal)
121  (:export
122  :parse-html5
123  :parse-html5-fragment
124  :transform-html5-dom
125  :xml-escape-name
126  :xml-unescape-name
127  ;; A simple DOM
128  :make-document
129  :make-fragment
130  :make-doctype
131  :make-comment
132  :make-element
133  :make-text-node
134  :node-type
135  :node-name
136  :node-namespace
137  :node-value
138  :node-public-id
139  :node-system-id
140  :element-attribute
141  :node-append-child
142  :node-insert-before
143  :node-remove-child
144  :node-parent
145  :node-first-child
146  :node-last-child
147  :node-previous-sibling
148  :node-next-sibling
149  :element-map-attributes
150  :element-map-attributes*
151  :element-map-children))
152 
153 (defpackage :dat/xml
154  (:use :cl :std :dat/proto :log)
155  (:shadow :read-char :unread-char)
156  (:export
157  :xml-node-name
158  :xml-node-ns
159  :xml-node-attrs
160  :xml-node-children
161  :make-xml-node
162  :xml-parse
163  :to-xml
164  :write-xml
165  :xml-node-p
166  :xml-node ; needed to support use in typep
167  ;; processing instruction objects
168  :proc-inst-p
169  :proc-inst-target
170  :proc-inst-contents
171  :write-prologue
172  :write-prolog
173  ;; rpg utils
174  :make-xmlrep :xmlrep-add-child!
175  :xmlrep-tag :xmlrep-tagmatch
176  :xmlrep-attribs :xmlrep-children
177  :xmlrep-string-child :xmlrep-integer-child
178  :xmlrep-find-child-tags :xmlrep-find-child-tag
179  :xmlrep-attrib-value :xmlrep-boolean-attrib-value
180  ;; tree searching from Daniel Eliason
181  :extract-path-list
182  :extract-path))
183 
184 (defpackage :dat/handlebars
185  (:use :cl :std :dat/proto :dat/html)
186  (:export))
187 
188 (defpackage :dat/mime
189  (:use :cl :std :dat/proto :dat/xml)
190  (:export :*mime-database*
191  :load-mime-info :update-mime-database
192  :mime-magic :mime-magic-offset :mime-magic-type :mime-magic-value
193  :mime-type :mime-type-name :mime-type-superclasses :mime-type-glob
194  :mime-type-glob :mime-type-magic
195  :mime :get-mime :get-mime*))
196 
197 (defpackage :dat/bencode
198  (:use :cl :std :dat/proto :sb-gray)
199  (:export
200  :bencode-encode
201  :bencode-decode
202  :*bencode-binary-key-p*))
203 
204 (defpackage :dat/midi
205  (:nicknames :midi)
206  (:use :cl :std :dat/proto)
207  (:export #:read-midi-file #:write-midi-file
208  #:midifile
209  #:midifile-format #:midifile-tracks #:midifile-division
210  #:message #:note-off-message #:note-on-message #:tempo-message
211  #:program-change-message #:pitch-bend-message
212  #:key-signature-message #:time-signature-message
213  #:smpte-offset-message
214  #:sequence/track-name-message
215  #:message-channel #:message-key #:message-time
216  #:message-velocity #:message-numerator #:message-denominator
217  #:message-sf #:message-mi #:message-tempo #:message-program
218  #:message-value
219  #:header #:header-type
220  #:unknown-event #:status #:data-byte #:dd #:bb #:cc #:nn))
221 
222 (defpackage :dat/qrcode
223  (:nicknames :qrcode)
224  (:use :cl :std :dat/proto)
225  (:export
226  :encode-symbol
227  ;; QR code representation
228  ;; this should be enough to write another backend for QR symbol
229  :qr-symbol
230  :matrix
231  :modules
232  :dark-module-p
233  :read-file-content))
234 
235 (defpackage :dat/gif
236  (:nicknames :gif)
237  (:use :cl :std :dat/proto)
238  (:export))
239 
240 (defpackage :dat/png
241  (:use :cl :std :dat/proto #+png :png)
242  (:export))
243 
244 (defpackage :dat/tar
245  (:use :cl :std :dat/proto)
246  (:export))
247 
248 (defpackage :dat/parquet
249  (:use :cl :std :obj/id :dat/proto :dat/json)
250  (:export
251  :parquet-object
252  :parquet-enum-object
253  :parquet-struct-object
254  :parquet-read
255  :parquet-write
256  :parquet-encode
257  :parquet-decode))
258 
259 (pkg:defpkg :dat
260  (:use-reexport :dat/proto :dat/csv :dat/arff
261  :dat/toml :dat/json :dat/sxp :dat/xml
262  :dat/bencode :dat/qrcode))