Artifact
6207d17268e5c4768a094d4b458c5ba3723b31c4:
0000: 28 75 73 65 20 72 65 67 65 78 20 70 6f 73 69 78 (use regex posix
0010: 20 73 72 66 69 2d 36 39 20 73 72 66 69 2d 31 29 srfi-69 srfi-1)
0020: 0a 0a 28 64 65 66 69 6e 65 20 65 78 74 72 61 63 ..(define extrac
0030: 74 2d 72 78 20 28 72 65 67 65 78 70 20 22 70 61 t-rx (regexp "pa
0040: 67 65 73 5c 5c 2f 28 2e 2a 29 5f 28 76 69 65 77 ges\\/(.*)_(view
0050: 7c 63 74 72 6c 29 2e 73 63 6d 22 29 29 0a 0a 28 |ctrl).scm"))..(
0060: 6c 65 74 2a 20 28 28 76 69 65 77 73 20 20 28 67 let* ((views (g
0070: 6c 6f 62 20 22 70 61 67 65 73 2f 2a 5f 76 69 65 lob "pages/*_vie
0080: 77 2e 73 63 6d 22 29 29 0a 20 20 20 20 20 20 20 w.scm")).
0090: 28 63 74 72 6c 73 20 20 28 67 6c 6f 62 20 22 70 (ctrls (glob "p
00a0: 61 67 65 73 2f 2a 5f 63 74 72 6c 2e 73 63 6d 22 ages/*_ctrl.scm"
00b0: 29 29 0a 20 20 20 20 20 20 20 28 61 6c 6c 20 20 )). (all
00c0: 20 20 28 61 70 70 65 6e 64 20 76 69 65 77 73 20 (append views
00d0: 63 74 72 6c 73 29 29 0a 20 20 20 20 20 20 20 28 ctrls)). (
00e0: 6c 6f 6f 6b 75 70 20 28 6d 61 6b 65 2d 68 61 73 lookup (make-has
00f0: 68 2d 74 61 62 6c 65 29 29 0a 20 20 20 20 20 20 h-table)).
0100: 20 28 70 61 67 65 73 20 20 28 64 65 6c 65 74 65 (pages (delete
0110: 2d 64 75 70 6c 69 63 61 74 65 73 0a 09 09 28 6d -duplicates...(m
0120: 61 70 20 28 6c 61 6d 62 64 61 20 28 78 29 0a 09 ap (lambda (x)..
0130: 09 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 . (let* ((
0140: 72 65 73 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 res (string-mat
0150: 63 68 20 65 78 74 72 61 63 74 2d 72 78 20 78 29 ch extract-rx x)
0160: 29 0a 09 09 09 20 20 20 20 20 20 28 70 61 67 65 ).... (page
0170: 20 28 63 61 64 72 20 72 65 73 29 29 0a 09 09 09 (cadr res))....
0180: 20 20 20 20 20 20 28 74 79 70 65 20 28 63 61 64 (type (cad
0190: 64 72 20 72 65 73 29 29 29 0a 09 09 09 20 28 68 dr res))).... (h
01a0: 61 73 68 2d 74 61 62 6c 65 2d 73 65 74 21 20 6c ash-table-set! l
01b0: 6f 6f 6b 75 70 20 28 63 6f 6e 63 20 70 61 67 65 ookup (conc page
01c0: 20 22 5f 22 20 74 79 70 65 29 20 23 74 29 0a 09 "_" type) #t)..
01d0: 09 09 20 28 63 61 64 72 20 72 65 73 29 29 29 0a .. (cadr res))).
01e0: 09 09 20 20 20 20 20 61 6c 6c 29 29 29 29 0a 20 .. all)))).
01f0: 20 20 20 20 20 20 28 69 66 20 28 6e 75 6c 6c 3f (if (null?
0200: 20 61 6c 6c 29 28 62 65 67 69 6e 20 28 70 72 69 all)(begin (pri
0210: 6e 74 20 22 4e 6f 20 70 61 67 65 20 66 69 6c 65 nt "No page file
0220: 73 20 6d 61 74 63 68 69 6e 67 20 70 61 67 65 73 s matching pages
0230: 2f 2a 5f 28 76 69 65 77 7c 63 74 72 6c 29 2e 73 /*_(view|ctrl).s
0240: 63 6d 22 29 28 65 78 69 74 29 29 29 0a 20 20 28 cm")(exit))). (
0250: 70 72 69 6e 74 20 22 50 61 67 65 73 3a 20 22 20 print "Pages: "
0260: 70 61 67 65 73 29 0a 20 20 28 77 69 74 68 2d 6f pages). (with-o
0270: 75 74 70 75 74 2d 74 6f 2d 66 69 6c 65 20 22 61 utput-to-file "a
0280: 6c 6c 5f 70 61 67 65 73 2e 73 63 6d 22 0a 20 20 ll_pages.scm".
0290: 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 (lambda ().
02a0: 20 20 20 28 66 6f 72 2d 65 61 63 68 20 28 6c 61 (for-each (la
02b0: 6d 62 64 61 20 28 70 61 67 65 29 0a 09 09 20 20 mbda (page)...
02c0: 28 70 72 69 6e 74 20 22 28 64 65 66 69 6e 65 20 (print "(define
02d0: 28 70 61 67 65 73 3a 22 20 70 61 67 65 20 22 29 (pages:" page ")
02e0: 22 29 0a 09 09 20 20 28 69 66 20 28 68 61 73 68 ")... (if (hash
02f0: 2d 74 61 62 6c 65 2d 72 65 66 2f 64 65 66 61 75 -table-ref/defau
0300: 6c 74 20 6c 6f 6f 6b 75 70 20 28 63 6f 6e 63 20 lt lookup (conc
0310: 70 61 67 65 20 22 5f 76 69 65 77 22 29 20 23 66 page "_view") #f
0320: 29 0a 09 09 20 20 20 20 20 20 28 70 72 69 6e 74 )... (print
0330: 20 22 28 69 6e 63 6c 75 64 65 20 5c 22 70 61 67 "(include \"pag
0340: 65 73 2f 22 20 70 61 67 65 20 22 5f 76 69 65 77 es/" page "_view
0350: 2e 73 63 6d 5c 22 29 22 29 29 0a 09 09 20 20 28 .scm\")"))... (
0360: 69 66 20 28 68 61 73 68 2d 74 61 62 6c 65 2d 72 if (hash-table-r
0370: 65 66 2f 64 65 66 61 75 6c 74 20 6c 6f 6f 6b 75 ef/default looku
0380: 70 20 28 63 6f 6e 63 20 70 61 67 65 20 22 5f 63 p (conc page "_c
0390: 74 72 6c 22 29 20 23 66 29 0a 09 09 20 20 20 20 trl") #f)...
03a0: 20 20 28 70 72 69 6e 74 20 22 28 69 6e 63 6c 75 (print "(inclu
03b0: 64 65 20 5c 22 70 61 67 65 73 2f 22 20 70 61 67 de \"pages/" pag
03c0: 65 20 22 5f 63 74 72 6c 2e 73 63 6d 5c 22 29 22 e "_ctrl.scm\")"
03d0: 29 29 0a 09 09 20 20 28 70 72 69 6e 74 20 22 29 ))... (print ")
03e0: 5c 6e 22 29 29 0a 09 09 70 61 67 65 73 29 29 29 \n"))...pages)))
03f0: 29 0a 0a 0a 20 20 )...