changelog shortlog graph tags branches changeset files revisions annotate raw help

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

changeset 356: aac665e2f5bf
parent: 87a8ae74a22c
child: de40bd522c84
author: Richard Westhaver <ellis@rwest.io>
date: Tue, 21 May 2024 17:13:34 -0400
permissions: -rw-r--r--
description: stashed and revert some obj/color changes. added x/wayland feature splits, WITH-TCP-CLIENT and WITH-UDP-CLIENT impl (no tests)
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-fmt-error :sxp-syntax-error :reader :writer :fmt
19  :wrap :wrap! :wrap-from-string! :unwrap :unwrap! :unwrap-or
20  :sxpp :build-ast :load-ast :ast
21  :define-macro :define-fmt :read-sxp-file :write-sxp-file
22  :read-sxp-string :write-sxp-string :read-sxp-stream :write-sxp-stream
23  :make-sxp :sxp :formp :form
24  :file-read-forms
25  :wrap-object :unwrap-object))
26 
27 (defpackage :dat/csv
28  (:use :cl :std :dat/proto)
29  (:export
30  :read-csv-file
31  :*csv-separator*
32  #:read-csv-stream
33  :write-csv-file
34  :write-csv-stream
35  :read-csv-file-and-sort
36  :parse-csv-string))
37 
38 (defpackage :dat/toml
39  (:use :cl :std :dat/proto :obj/time)
40  (:export
41  #:parse
42  #:parse-toml-blocks
43  #:toml-collection
44  #:children
45  #:toml-table
46  #:inline-toml-table
47  #:toml-table-array
48  #:toml-redefine-table-error
49  #:toml-redefine-property-error
50  #:toml-modify-inline-table-error
51  #:toml-dotted-key-redefine-table-error
52  #:toml-dotted-key-open-table-array-error))
53 
54 (defpackage :dat/arff
55  (:use :cl :std :dat/proto :dat/csv)
56  (:export
57  :arff :arff-relation :arff-attributes :arff-data :arff-path
58  :parse-arff :parse-arff-string :parse-arff-stream
59  :remove-attribute-by-name))
60 
61 (defpackage :dat/json
62  (:use :cl :std :dat/proto)
63  (:export
64  #:json-decode
65  #:json-encode
66  #:json-read
67  #:json-enable-reader-macro
68  #:json-object
69  #:json-object-members
70  #:json-getf
71  #:json-setf))
72 
73 (defpackage :dat/base64
74  (:use :cl :std :dat/proto)
75  (:export #:base64-stream-to-integer
76  #:base64-stream-to-string
77  #:base64-stream-to-stream
78  #:base64-stream-to-usb8-array
79  #:base64-string-to-integer
80  #:base64-string-to-string
81  #:base64-string-to-stream
82  #:base64-string-to-usb8-array
83  #:string-to-base64-string
84  #:string-to-base64-stream
85  #:usb8-array-to-base64-string
86  #:usb8-array-to-base64-stream
87  #:stream-to-base64-string
88  #:stream-to-base64-stream
89  #:integer-to-base64-string
90  #:integer-to-base64-stream
91  ;; Conditions.
92  #:base64-error
93  #:bad-base64-character
94  #:incomplete-base64-data
95  ;; For creating custom encode/decode tables.
96  #:make-decode-table
97  #:+decode-table+
98  #:+uri-decode-table+))
99 
100 (defpackage :dat/html
101  (:use :cl :std :dat/proto)
102  (:import-from :sb-ext :defglobal)
103  (:export
104  :parse-html5
105  :parse-html5-fragment
106  :transform-html5-dom
107  :xml-escape-name
108  :xml-unescape-name
109  ;; A simple DOM
110  :make-document
111  :make-fragment
112  :make-doctype
113  :make-comment
114  :make-element
115  :make-text-node
116  :node-type
117  :node-name
118  :node-namespace
119  :node-value
120  :node-public-id
121  :node-system-id
122  :element-attribute
123  :node-append-child
124  :node-insert-before
125  :node-remove-child
126  :node-parent
127  :node-first-child
128  :node-last-child
129  :node-previous-sibling
130  :node-next-sibling
131  :element-map-attributes
132  :element-map-attributes*
133  :element-map-children))
134 
135 (defpackage :dat/xml
136  (:use :cl :std :dat/proto :log)
137  (:shadow :read-char :unread-char)
138  (:export
139  :xml-node-name
140  :xml-node-ns
141  :xml-node-attrs
142  :xml-node-children
143  :make-xml-node
144  :xml-parse
145  :to-xml
146  :write-xml
147  :xml-node-p
148  :nodelist->xml-node
149  :xml-node->nodelist
150  :xml-node ; needed to support use in typep
151  ;; processing instruction objects
152  :proc-inst-p
153  :proc-inst-target
154  :proc-inst-contents
155  :write-prologue
156  :write-prolog
157  ;; rpg utils
158  :make-xmlrep :xmlrep-add-child!
159  :xmlrep-tag :xmlrep-tagmatch
160  :xmlrep-attribs :xmlrep-children
161  :xmlrep-string-child :xmlrep-integer-child
162  :xmlrep-find-child-tags :xmlrep-find-child-tag
163  :xmlrep-attrib-value :xmlrep-boolean-attrib-value
164  ;; tree searching from Daniel Eliason
165  :extract-path-list
166  :extract-path))
167 
168 (defpackage :dat/bencode
169  (:use :cl :std :dat/proto :sb-gray)
170  (:export
171  :bencode-encode
172  :bencode-decode
173  :*bencode-binary-key-p*))
174 
175 (defpackage :dat/midi
176  (:nicknames :midi)
177  (:use :cl :std :dat/proto)
178  (:export #:read-midi-file #:write-midi-file
179  #:midifile
180  #:midifile-format #:midifile-tracks #:midifile-division
181  #:message #:note-off-message #:note-on-message #:tempo-message
182  #:program-change-message #:pitch-bend-message
183  #:key-signature-message #:time-signature-message
184  #:smpte-offset-message
185  #:sequence/track-name-message
186  #:message-channel #:message-key #:message-time
187  #:message-velocity #:message-numerator #:message-denominator
188  #:message-sf #:message-mi #:message-tempo #:message-program
189  #:message-value
190  #:header #:header-type
191  #:unknown-event #:status #:data-byte #:dd #:bb #:cc #:nn))
192 
193 (defpackage :dat/qrcode
194  (:nicknames :qrcode)
195  (:use :cl :std :dat/proto)
196  (:export
197  :encode-symbol
198  ;; QR code representation
199  ;; this should be enough to write another backend for QR symbol
200  :qr-symbol
201  :matrix
202  :modules
203  :dark-module-p
204  :read-file-content))
205 
206 (defpackage :dat/gif
207  (:nicknames :gif)
208  (:use :cl :std :dat/proto))
209 
210 (defpackage :dat/png
211  (:use :cl :std :dat/proto :png))
212 
213 (uiop:define-package :dat
214  (:use-reexport :dat/proto :dat/csv :dat/arff :dat/toml :dat/json :dat/sxp :dat/xml :dat/bencode
215  ;; :dat/qrcode
216  ))