Build dokuwiki module.
This commit is contained in:
parent
000b57641d
commit
6a4817c46f
3 changed files with 35 additions and 7 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue