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                                )...