aboutsummaryrefslogtreecommitdiff
path: root/src/guile/skribilo/utils
diff options
context:
space:
mode:
authorLudovic Courtes2006-09-03 11:43:55 +0000
committerLudovic Courtes2006-09-03 11:43:55 +0000
commit8008a4d20f277910d5524e7704db32068010a0a5 (patch)
treeda43ca1820ca9d83845112963af054da748e96d0 /src/guile/skribilo/utils
parent242821c06c44429369cbf1f542bf07be5d51e955 (diff)
downloadskribilo-8008a4d20f277910d5524e7704db32068010a0a5.tar.gz
skribilo-8008a4d20f277910d5524e7704db32068010a0a5.tar.lz
skribilo-8008a4d20f277910d5524e7704db32068010a0a5.zip
Implemented per-document node identifiers.
* src/guile/skribilo/ast.scm: Autoload `srfi-1' on `fold'. (*node-table*): Removed. (bind-markup!): Removed. (initialize<markup>): Removed. (find-markups): Removed. (write<markup>): Commented out debugging `format'. (<document>)[node-table]: New slot. [nodes-bound?]: New slot. (document-lookup-node): New. (document-bind-node!): New. (document-bind-nodes!): New. (ast-fold): New. (find-markup-ident): Removed. * src/guile/skribilo/output.scm (*document-being-output*): New. (out<document>): New. * src/guile/skribilo/resolve.scm (*document-being-resolved*): New. (resolve!): Invoke `document-bind-nodes!' before resolving the document. (do-resolve!<document>): Parameterize `*document-being-resolved*'. (resolve-ident): Use `document-lookup-node' instead of `find-markups'. * src/guile/skribilo/utils/compat.scm (bind-markup!): New. (find-markups): New. (find-markup-ident): New. git-archimport-id: lcourtes@laas.fr--2005-libre/skribilo--devo--1.2--patch-57
Diffstat (limited to 'src/guile/skribilo/utils')
-rw-r--r--src/guile/skribilo/utils/compat.scm39
1 files changed, 35 insertions, 4 deletions
diff --git a/src/guile/skribilo/utils/compat.scm b/src/guile/skribilo/utils/compat.scm
index c8c3bd0..118f294 100644
--- a/src/guile/skribilo/utils/compat.scm
+++ b/src/guile/skribilo/utils/compat.scm
@@ -25,15 +25,18 @@
:use-module (skribilo parameters)
:use-module (skribilo evaluator)
:use-module (srfi srfi-1)
- :autoload (srfi srfi-13) (string-rindex)
+ :autoload (srfi srfi-13) (string-rindex)
:use-module (srfi srfi-34)
:use-module (srfi srfi-35)
:use-module (ice-9 optargs)
- :autoload (skribilo ast) (ast?)
+ :autoload (skribilo ast) (ast? document? document-lookup-node)
:autoload (skribilo condition) (file-search-error? &file-search-error)
- :autoload (skribilo reader) (make-reader)
- :autoload (skribilo lib) (type-name)
+ :autoload (skribilo reader) (make-reader)
+ :autoload (skribilo lib) (type-name)
+ :autoload (skribilo resolve) (*document-being-resolved*)
+ :autoload (skribilo output) (*document-being-output*)
:use-module (skribilo debug)
+
:re-export (file-size) ;; re-exported from `(skribilo utils files)'
:replace (gensym))
@@ -178,6 +181,34 @@
;;;
+;;; Node lookup (formerly provided by `ast.scm').
+;;;
+
+(define-public (bind-markup! node)
+ (let ((doc (or (*document-being-resolved*)
+ (*document-being-output*))))
+ (if (document? doc)
+ (document-bind-node! doc node)
+ (error "Sorry, unable to achieve `bind-markup!'. Use `document-bind-node!' instead."
+ node))))
+
+(define-public (find-markups ident)
+ (let ((doc (or (*document-being-resolved*)
+ (*document-being-output*))))
+ (if (document? doc)
+ (let ((result (document-lookup-node doc ident)))
+ (if result
+ (list result)
+ #f))
+ (error "Sorry, unable to achieve `find-markups'. Use `document-lookup-node' instead."
+ ident))))
+
+(define-public (find-markup-ident ident)
+ (or (find-markups ident) '()))
+
+
+
+;;;
;;; Debugging facilities.
;;;