Build dokuwiki module.

This commit is contained in:
Dominik Pantůček 2023-06-26 19:16:05 +02:00
parent 000b57641d
commit 6a4817c46f
3 changed files with 35 additions and 7 deletions

View file

@ -27,25 +27,44 @@
(module
dokuwiki
(
dokuwiki-load-users
)
(import scheme
(chicken base)
(chicken pathname)
(chicken io)
(chicken string)
racket-kwargs
configuration
util-parser)
util-parser
util-csv)
;; Parses all dokuwiki users from current-input-port
;; Special CSV-like parser
(define auth-line-parser
(make-csv-line-parser #\: #f))
;; Parses all dokuwiki users from current-input-port, returns a list
;; of lists: username, name, email, groups (list)
(define (parse-dokuwiki-users-auth)
(let loop ((lines (read-lines))
(users '()))
(if (null? lines)
users
(let ((line (car lines)))
(loop (cdr lines)
users)))))
(let ((line (parser-preprocess-line (car lines))))
(if (equal? line "")
(loop (cdr lines)
users)
(let* ((row (auth-line-parser line))
(username (car row))
(name (caddr row))
(email (cadddr row))
(groupstr (list-ref row 4))
(groups (string-split groupstr ",")))
(print "u=" username " n=" name " e=" email " g=" groups)
(loop (cdr lines)
(cons (list username name email groups)
users))))))))
;; Parses all users from given filename
(define (load-dokuwiki-users-auth fname)