Build dokuwiki module.
This commit is contained in:
parent
000b57641d
commit
6a4817c46f
3 changed files with 35 additions and 7 deletions
12
src/Makefile
12
src/Makefile
|
@ -39,7 +39,8 @@ HACKERBASE-DEPS=hackerbase.scm cal-month.import.scm \
|
|||
mailman.import.scm texts.import.scm tests.import.scm \
|
||||
notifications.import.scm logging.import.scm \
|
||||
progress.import.scm cal-period.import.scm \
|
||||
util-stdout.import.scm export-web-static.import.scm
|
||||
util-stdout.import.scm export-web-static.import.scm \
|
||||
dokuwiki.import.scm
|
||||
|
||||
HACKERBASE-OBJS=hackerbase.o testing.o listing.o cal-month.o \
|
||||
cal-period.o ansi.o util-dict-list.o command-line.o mbase.o \
|
||||
|
@ -55,7 +56,7 @@ HACKERBASE-OBJS=hackerbase.o testing.o listing.o cal-month.o \
|
|||
sgr-list.o sgr-block.o table-processor.o table-border.o \
|
||||
table-style.o sgr-state.o util-utf8.o sgr-cell.o \
|
||||
template-list-expander.o box-drawing.o util-list.o \
|
||||
export-web-static.o util-dir.o racket-kwargs.o
|
||||
export-web-static.o util-dir.o racket-kwargs.o dokuwiki.o
|
||||
|
||||
.PHONY: imports
|
||||
imports: $(HACKERBASE-DEPS)
|
||||
|
@ -482,3 +483,10 @@ UTIL-DIR-SOURCES=util-dir.scm
|
|||
|
||||
util-dir.o: util-dir.import.scm
|
||||
util-dir.import.scm: $(UTIL-DIR-SOURCES)
|
||||
|
||||
DOKUWIKI-SOURCES=dokuwiki.scm racket-kwargs.import.scm \
|
||||
configuration.import.scm util-parser.import.scm \
|
||||
util-csv.import.scm
|
||||
|
||||
dokuwiki.o: dokuwiki.import.scm
|
||||
dokuwiki.import.scm: $(DOKUWIKI-SOURCES)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
(module
|
||||
util-csv
|
||||
(
|
||||
make-csv-line-parser
|
||||
csv-parse
|
||||
csv-split-header
|
||||
csv-simple-tests!
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue