diff options
Diffstat (limited to 'src/guile/skribilo/engine/base.scm')
-rw-r--r-- | src/guile/skribilo/engine/base.scm | 67 |
1 files changed, 39 insertions, 28 deletions
diff --git a/src/guile/skribilo/engine/base.scm b/src/guile/skribilo/engine/base.scm index 711c179..9c1fdd2 100644 --- a/src/guile/skribilo/engine/base.scm +++ b/src/guile/skribilo/engine/base.scm @@ -19,17 +19,29 @@ ;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, ;;; USA. -(define-skribe-module (skribilo engine base) - :autoload (skribilo biblio template) (make-bib-entry-template/default - output-bib-entry-template) - :use-module (srfi srfi-13)) +(define-module (skribilo engine base) + :use-module (skribilo ast) + :use-module (skribilo engine) + :use-module (skribilo writer) + :autoload (skribilo output) (output) + :use-module (skribilo evaluator) + :autoload (skribilo package base) (color) + :autoload (skribilo utils keywords) (list-split) + :autoload (skribilo biblio template) (make-bib-entry-template/default + output-bib-entry-template) + ;; syntactic sugar + :use-module (skribilo reader) + :use-module (skribilo utils syntax)) +(fluid-set! current-reader (make-reader 'skribe)) + + ;*---------------------------------------------------------------------*/ ;* base-engine ... */ ;*---------------------------------------------------------------------*/ (define base-engine - (default-engine-set! - (make-engine 'base + (default-engine-class-set! + (make-engine-class 'base :version 'plain :symbol-table '(("iexcl" "!") ("cent" "c") @@ -170,20 +182,20 @@ (format #f "?~a " k)))) (msg (list f (markup-body n))) (n (list "[" (color :fg "red" (bold msg)) "]"))) - (skribe-eval n e)))) + (evaluate-document n e)))) ;*---------------------------------------------------------------------*/ ;* &the-bibliography ... */ ;*---------------------------------------------------------------------*/ (markup-writer '&the-bibliography :before (lambda (n e) - (let ((w (markup-writer-get 'table e))) + (let ((w (markup-writer-get 'table (engine-class e)))) (and (writer? w) (invoke (writer-before w) n e)))) :action (lambda (n e) (when (pair? (markup-body n)) (for-each (lambda (i) (output i e)) (markup-body n)))) :after (lambda (n e) - (let ((w (markup-writer-get 'table e))) + (let ((w (markup-writer-get 'table (engine-class e)))) (and (writer? w) (invoke (writer-after w) n e))))) ;*---------------------------------------------------------------------*/ @@ -192,23 +204,28 @@ (markup-writer '&bib-entry :options '(:title) :before (lambda (n e) - (invoke (writer-before (markup-writer-get 'tr e)) n e)) + (invoke (writer-before (markup-writer-get 'tr + (engine-class e))) + n e)) :action (lambda (n e) - (let ((wtc (markup-writer-get 'tc e))) + (let ((wtc (markup-writer-get 'tc (engine-class e)))) ;; the label (markup-option-add! n :valign 'top) (markup-option-add! n :align 'right) (invoke (writer-before wtc) n e) - (output n e (markup-writer-get '&bib-entry-label e)) + (output n e (markup-writer-get '&bib-entry-label + (engine-class e))) (invoke (writer-after wtc) n e) ;; the body (markup-option-add! n :valign 'top) (markup-option-add! n :align 'left) (invoke (writer-before wtc) n e) - (output n e (markup-writer-get '&bib-entry-body)) + (output n e (markup-writer-get '&bib-entry-body + (engine-class e))) (invoke (writer-after wtc) n e))) :after (lambda (n e) - (invoke (writer-after (markup-writer-get 'tr e)) n e))) + (invoke (writer-after (markup-writer-get 'tr (engine-class e))) + n e))) ;*---------------------------------------------------------------------*/ ;* &bib-entry-label ... */ @@ -234,7 +251,7 @@ (markup-writer '&bib-entry-url :action (lambda (n e) (let ((url (markup-body n))) - (skribe-eval + (evaluate-document (ref :text (it url) :url url) e)))) ;*---------------------------------------------------------------------*/ @@ -258,7 +275,7 @@ ;*---------------------------------------------------------------------*/ (markup-writer '&bib-entry-title :action (lambda (n e) - (skribe-eval (markup-body n)) e)) + (evaluate-document (bold (markup-body n)) e))) ;*---------------------------------------------------------------------*/ ;* &bib-entry-booktitle ... */ @@ -266,21 +283,21 @@ (markup-writer '&bib-entry-booktitle :action (lambda (n e) (let ((title (markup-body n))) - (skribe-eval (it title) e)))) + (evaluate-document (it title) e)))) ;*---------------------------------------------------------------------*/ ;* &bib-entry-journal ... */ ;*---------------------------------------------------------------------*/ (markup-writer '&bib-entry-journal :action (lambda (n e) - (skribe-eval (it (markup-body n)) e))) + (evaluate-document (it (markup-body n)) e))) ;*---------------------------------------------------------------------*/ ;* &bib-entry-publisher ... */ ;*---------------------------------------------------------------------*/ (markup-writer '&bib-entry-publisher :action (lambda (n e) - (skribe-eval (markup-body n) e))) + (evaluate-document (it (markup-body n)) e))) ;*---------------------------------------------------------------------*/ ;* &the-index ... @label the-index@ */ @@ -400,7 +417,7 @@ ;;:&skribe-eval-location loc :class "index-table" (make-sub-tables ie nc pref)))))) - (output (skribe-eval t e) e)))) + (output (evaluate-document t e) e)))) ;*---------------------------------------------------------------------*/ ;* &the-index-header ... */ @@ -418,7 +435,7 @@ :before (lambda (n e) (let ((num (markup-option n :number))) (if (number? num) - (skribe-eval + (evaluate-document (it (string-append (string-pad (number->string num) 3) ": ")) e)))) @@ -432,11 +449,5 @@ :action (lambda (n e) (let ((o (markup-option n :offset)) (n (markup-ident (handle-body (markup-body n))))) - (skribe-eval (it (if (integer? o) (+ o n) n)) e)))) - - + (evaluate-document (it (if (integer? o) (+ o n) n)) e)))) -;;;; A VIRER (mais handle-body n'est pas défini) -(markup-writer 'line-ref - :options '(:offset) - :action #f) |