summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/guile/skribilo/index.scm (renamed from src/guile/skribilo/skribe/index.scm)53
-rw-r--r--src/guile/skribilo/module.scm4
-rw-r--r--src/guile/skribilo/package/base.scm4
-rw-r--r--src/guile/skribilo/skribe/Makefile.am2
4 files changed, 42 insertions, 21 deletions
diff --git a/src/guile/skribilo/skribe/index.scm b/src/guile/skribilo/index.scm
index 12ef31e..33f8d15 100644
--- a/src/guile/skribilo/skribe/index.scm
+++ b/src/guile/skribilo/index.scm
@@ -1,7 +1,7 @@
 ;;; index.scm
 ;;;
 ;;; Copyright 2003, 2004  Manuel Serrano
-;;; Copyright 2005  Ludovic Courtès  <ludovic.courtes@laas.fr>
+;;; Copyright 2005, 2006  Ludovic Courtès  <ludovic.courtes@laas.fr>
 ;;;
 ;;;
 ;;; This program is free software; you can redistribute it and/or modify
@@ -19,49 +19,67 @@
 ;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
 ;;; USA.
 
-(define-skribe-module (skribilo skribe index))
+(define-module (skribilo index)
+  :use-syntax (skribilo utils syntax)
+  :use-syntax (skribilo lib)
+
+  :use-module (skribilo lib)
+  :use-module (skribilo ast)
+  :use-module (srfi srfi-39)
+
+  ;; XXX: The use of `mark' here introduces a cross-dependency between
+  ;; `index' and `package base'.  Thus, we require that each of these two
+  ;; modules autoloads the other one.
+  :autoload   (skribilo package base) (mark)
+
+  :export (index? make-index-table *index-table*
+           default-index resolve-the-index))
+
+
+(fluid-set! current-reader %skribilo-module-reader)
 
 ;;; Author:  Manuel Serrano
 ;;; Commentary:
 ;;;
-;;; A library of index-related functions.
+;;; A library of functions dealing with the creation of indices in
+;;; documents.
 ;;;
 ;;; Code:
 
 
-;;; The contents of the file below are unchanged compared to Skribe 1.2d's
-;;; `index.scm' file found in the `common' directory.
+;;; The contents of the file below are (almost) unchanged compared to Skribe
+;;; 1.2d's `index.scm' file found in the `common' directory.
 
 
 ;*---------------------------------------------------------------------*/
 ;*    index? ...                                                       */
 ;*---------------------------------------------------------------------*/
-(define-public (index? obj)
-   (hashtable? obj))
+(define (index? obj)
+   (hash-table? obj))
 
 ;*---------------------------------------------------------------------*/
 ;*    *index-table* ...                                                */
 ;*---------------------------------------------------------------------*/
-(define-public *index-table* #f)
+(define *index-table* (make-parameter #f))
 
 ;*---------------------------------------------------------------------*/
 ;*    make-index-table ...                                             */
 ;*---------------------------------------------------------------------*/
-(define-public (make-index-table ident)
-   (make-hashtable))
+(define (make-index-table ident)
+   (make-hash-table))
 
 ;*---------------------------------------------------------------------*/
 ;*    default-index ...                                                */
 ;*---------------------------------------------------------------------*/
-(define-public (default-index)
-   (if (not *index-table*)
-       (set! *index-table* (make-index-table "default-index")))
-   *index-table*)
+(define (default-index)
+   (if (not (*index-table*))
+       (*index-table* (make-index-table "default-index")))
+   (*index-table*))
 
 ;*---------------------------------------------------------------------*/
 ;*    resolve-the-index ...                                            */
 ;*---------------------------------------------------------------------*/
-(define-public (resolve-the-index loc i c indexes split char-offset header-limit col)
+(define (resolve-the-index loc i c indexes split char-offset header-limit col)
    ;; fetch the descriminating index name letter
    (define (index-ref n)
       (let ((name (markup-option n 'name)))
@@ -101,7 +119,10 @@
 		(else
 		 (loop (cdr buckets)
 		       (cons (car buckets) res)))))))
-   (let* ((entries (apply append (map hashtable->list indexes)))
+   (let* ((entries (apply append (map (lambda (t)
+                                        (hash-map->list
+                                         (lambda (key val) val) t))
+                                      indexes)))
 	  (sorted (map sort-entries-bucket
 		       (merge-buckets
 			(sort entries
diff --git a/src/guile/skribilo/module.scm b/src/guile/skribilo/module.scm
index f68d4aa..54989fb 100644
--- a/src/guile/skribilo/module.scm
+++ b/src/guile/skribilo/module.scm
@@ -75,6 +75,8 @@
     ((skribilo engine html)   . (html-markup-class html-class
 				 html-width))
     ((skribilo utils images)  . (convert-image))
+    ((skribilo index)         . (index? make-index-table default-index
+                                 resolve-the-index))
     ((skribilo source)        . (source-read-lines source-fontify
 				 language? language-extractor
 				 language-fontifier source-fontify))
@@ -88,7 +90,7 @@
     ((ice-9 receive)          . (receive))))
 
 (define %skribe-core-modules
-  '("index" "param" "sui"))
+  '("param" "sui"))
 
 
 
diff --git a/src/guile/skribilo/package/base.scm b/src/guile/skribilo/package/base.scm
index 69818da..7b97c5d 100644
--- a/src/guile/skribilo/package/base.scm
+++ b/src/guile/skribilo/package/base.scm
@@ -37,9 +37,7 @@
   :autoload   (skribilo color)     (skribe-use-color!)
   :autoload   (skribilo source)    (language? source-read-lines source-fontify)
   :autoload   (skribilo prog)      (make-prog-body resolve-line)
-
-  :use-module (skribilo module) ;; needed before loading the following one
-  :autoload   (skribilo skribe index) (make-index-table)
+  :autoload   (skribilo index)     (make-index-table)
 
   :replace (symbol))
 
diff --git a/src/guile/skribilo/skribe/Makefile.am b/src/guile/skribilo/skribe/Makefile.am
index 91e3944..4b5797f 100644
--- a/src/guile/skribilo/skribe/Makefile.am
+++ b/src/guile/skribilo/skribe/Makefile.am
@@ -1,2 +1,2 @@
 guilemoduledir = $(GUILE_SITE)/skribilo/skribe
-dist_guilemodule_DATA = index.scm param.scm sui.scm
+dist_guilemodule_DATA = param.scm sui.scm