diff options
author | Ludovic Court`es | 2005-11-29 13:32:30 +0000 |
---|---|---|
committer | Ludovic Court`es | 2005-11-29 13:32:30 +0000 |
commit | 3918fa2a728f00838ffda94ec6427b133c5abb68 (patch) | |
tree | 82dbc19796b8cf3f51486f3e6400967e45468a56 /src/guile/skribilo/biblio.scm | |
parent | 4686c3d129e4ebb3edc97e53a20a5f9db682f993 (diff) | |
download | skribilo-3918fa2a728f00838ffda94ec6427b133c5abb68.tar.gz skribilo-3918fa2a728f00838ffda94ec6427b133c5abb68.tar.lz skribilo-3918fa2a728f00838ffda94ec6427b133c5abb68.zip |
Fixed `ref' and bibliography-related things.
* src/guile/skribilo.scm (main): Handle `--warning'.
* src/guile/skribilo/biblio.scm: Export `skribe-open-bib-file' and
`parse-bib'.
(parse-bib): Use `%default-reader'.
* src/guile/skribilo/evaluator.scm (%evaluate): Cleaned up.
(skribe-eval-port): Likewise.
* src/guile/skribilo/module.scm (load-file-with-read): Removed.
(load-skribilo-file): Removed.
(load-skribilo-modules): Removed.
* src/guile/skribilo/package/slide.scm (ref): Temporarily commented out.
* src/guile/skribilo/skribe/bib.scm: Use `(skribilo biblio)'.
git-archimport-id: lcourtes@laas.fr--2004-libre/skribilo--devel--1.2--patch-15
Diffstat (limited to 'src/guile/skribilo/biblio.scm')
-rw-r--r-- | src/guile/skribilo/biblio.scm | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/src/guile/skribilo/biblio.scm b/src/guile/skribilo/biblio.scm index 045e3ae..cbb9202 100644 --- a/src/guile/skribilo/biblio.scm +++ b/src/guile/skribilo/biblio.scm @@ -25,10 +25,12 @@ :use-module (skribilo utils syntax) ;; `when', `unless' :use-module (skribilo module) :use-module (skribilo skribe bib) ;; `make-bib-entry' + :autoload (skribilo reader) (%default-reader) :autoload (skribilo parameters) (*bib-path*) :autoload (ice-9 format) (format) :export (bib-table? make-bib-table default-bib-table - bib-add!)) + bib-add! bib-duplicate + skribe-open-bib-file parse-bib)) (set-current-reader %skribilo-module-reader) @@ -92,24 +94,25 @@ ;;; ;;; ====================================================================== (define (parse-bib table port) - (if (not (bib-table? table)) - (skribe-error 'parse-bib "Illegal bibliography table" table) - (let ((from (port-file-name port))) - (let Loop ((entry (read port))) - (unless (eof-object? entry) - (cond - ((and (list? entry) (> (length entry) 2)) - (let* ((kind (car entry)) - (key (format #f "~A" (cadr entry))) - (fields (cddr entry)) - (old (hash-ref table key))) - (if old - (bib-duplicate ident from old) - (hash-set! table key - (make-bib-entry kind key fields from))) - (Loop (read port)))) - (else - (%bib-error 'bib-parse entry)))))))) + (let ((read %default-reader)) ;; FIXME: We should use a fluid + (if (not (bib-table? table)) + (skribe-error 'parse-bib "Illegal bibliography table" table) + (let ((from (port-filename port))) + (let Loop ((entry (read port))) + (unless (eof-object? entry) + (cond + ((and (list? entry) (> (length entry) 2)) + (let* ((kind (car entry)) + (key (format #f "~A" (cadr entry))) + (fields (cddr entry)) + (old (hash-ref table key))) + (if old + (bib-duplicate ident from old) + (hash-set! table key + (make-bib-entry kind key fields from))) + (Loop (read port)))) + (else + (%bib-error 'bib-parse entry))))))))) ;;; ====================================================================== |