about summary refs log tree commit diff
path: root/doc
diff options
context:
space:
mode:
authorArun Isaac2021-11-05 23:20:54 +0530
committerArun Isaac2021-11-05 23:20:54 +0530
commitc86e1b4276fba6dd110dfb91ffead5707a77421d (patch)
treed44ec08cd359bc4f547f39fcaeb41082d31bf397 /doc
parent56de5b79d8a340b6aa003bd4c586c7a4af7a454f (diff)
downloadccwl-c86e1b4276fba6dd110dfb91ffead5707a77421d.tar.gz
ccwl-c86e1b4276fba6dd110dfb91ffead5707a77421d.tar.lz
ccwl-c86e1b4276fba6dd110dfb91ffead5707a77421d.zip
doc: Support extracting specific forms from a scheme file.
* doc/skribilo.scm (scheme-source-form): New public function.
Diffstat (limited to 'doc')
-rw-r--r--doc/skribilo.scm13
1 files changed, 13 insertions, 0 deletions
diff --git a/doc/skribilo.scm b/doc/skribilo.scm
index 22d31f9..cba6d08 100644
--- a/doc/skribilo.scm
+++ b/doc/skribilo.scm
@@ -38,6 +38,7 @@
   #:export (command
             file
             scheme-source
+            scheme-source-form
             source-ref))
 
 ;; Constants
@@ -125,6 +126,18 @@ and END are line numbers indexed from 1."
                                    (number->string end-line)))))
        #:text text))
 
+;; Extract forms from scheme source
+(define (scheme-source-form file regexp)
+  "Extract form from scheme source FILE whose beginning matches
+REGEXP. Return it enclosed in a prog form."
+  (prog (match (sexp-file-lines file regexp)
+          ((start . stop)
+           (source #:language scheme
+                   #:file file
+                   #:start (1- start)
+                   #:stop (1- stop))))
+        #:line #f))
+
 ;; HTML engine customizations
 (let ((html-engine (find-engine 'html)))
   (engine-custom-set! html-engine 'css "/style.css")