Documentation Source Text

Hex Artifact Content
Login

Artifact 24ea78a20f01744bfb82c90919d72073fe60aa20:


0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 74 63 6c 73 68  #!/usr/bin/tclsh
0010: 0a 23 0a 23 20 54 68 69 73 20 73 63 72 69 70 74  .#.# This script
0020: 20 70 72 6f 63 65 73 73 65 73 20 72 61 77 20 70   processes raw p
0030: 61 67 65 20 74 65 78 74 20 69 6e 74 6f 20 69 74  age text into it
0040: 73 20 66 69 6e 61 6c 20 66 6f 72 6d 20 66 6f 72  s final form for
0050: 20 64 69 73 70 6c 61 79 2e 0a 23 20 49 6e 76 6f   display..# Invo
0060: 6b 65 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 20  ke this command 
0070: 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 23 0a 23 20  as follows:.#.# 
0080: 20 20 20 20 20 20 74 63 6c 73 68 20 77 72 61 70        tclsh wrap
0090: 2e 74 63 6c 20 24 28 44 4f 43 29 20 24 28 53 52  .tcl $(DOC) $(SR
00a0: 43 29 20 24 28 44 45 53 54 29 20 73 6f 75 72 63  C) $(DEST) sourc
00b0: 65 31 2e 69 6e 20 73 6f 75 72 63 65 32 2e 69 6e  e1.in source2.in
00c0: 20 2e 2e 2e 0a 23 0a 23 20 54 68 65 20 24 28 44   ....#.# The $(D
00d0: 4f 43 29 20 61 6e 64 20 24 28 53 52 43 29 20 76  OC) and $(SRC) v
00e0: 61 6c 75 65 73 20 61 72 65 20 74 68 65 20 6e 61  alues are the na
00f0: 6d 65 73 20 6f 66 20 64 69 72 65 63 74 6f 72 69  mes of directori
0100: 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 23 20  es containing.# 
0110: 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  the documentatio
0120: 6e 20 73 6f 75 72 63 65 20 61 6e 64 20 70 72 6f  n source and pro
0130: 67 72 61 6d 20 73 6f 75 72 63 65 2e 20 20 24 28  gram source.  $(
0140: 44 45 53 54 29 20 69 73 20 74 68 65 20 6e 61 6d  DEST) is the nam
0150: 65 20 6f 66 0a 23 20 6f 66 20 74 68 65 20 64 69  e of.# of the di
0160: 72 65 63 74 6f 72 79 20 77 68 65 72 65 20 67 65  rectory where ge
0170: 6e 65 72 61 74 65 64 20 48 54 4d 4c 20 69 73 20  nerated HTML is 
0180: 77 72 69 74 74 65 6e 2e 20 20 73 6f 75 72 63 65  written.  source
0190: 4e 2e 69 6e 20 69 73 20 74 68 65 0a 23 20 69 6e  N.in is the.# in
01a0: 70 75 74 20 66 69 6c 65 20 74 6f 20 62 65 20 70  put file to be p
01b0: 72 6f 63 65 73 73 65 64 2e 20 20 54 68 65 20 6f  rocessed.  The o
01c0: 75 74 70 75 74 20 69 73 20 73 6f 75 72 63 65 4e  utput is sourceN
01d0: 2e 68 74 6d 6c 20 69 6e 20 74 68 65 0a 23 20 6c  .html in the.# l
01e0: 6f 63 61 6c 20 64 69 72 65 63 74 6f 72 79 2e 0a  ocal directory..
01f0: 23 0a 23 20 43 68 61 6e 67 65 73 20 6d 61 64 65  #.# Changes made
0200: 20 74 6f 20 74 68 65 20 73 6f 75 72 63 65 20 66   to the source f
0210: 69 6c 65 73 3a 0a 23 0a 23 20 20 20 20 20 2a 20  iles:.#.#     * 
0220: 20 41 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20   An appropriate 
0230: 68 65 61 64 65 72 20 69 73 20 70 72 65 70 65 6e  header is prepen
0240: 64 65 64 20 74 6f 20 74 68 65 20 66 69 6c 65 2e  ded to the file.
0250: 20 20 0a 23 20 20 20 20 20 2a 20 20 41 6e 79 20    .#     *  Any 
0260: 3c 74 69 74 6c 65 3e 2e 2e 2e 3c 2f 74 69 74 6c  <title>...</titl
0270: 65 3e 20 69 6e 20 74 68 65 20 69 6e 70 75 74 20  e> in the input 
0280: 69 73 20 6d 6f 76 65 64 20 69 6e 74 6f 20 74 68  is moved into th
0290: 65 20 70 72 65 70 65 6e 64 65 64 0a 23 20 20 20  e prepended.#   
02a0: 20 20 20 20 20 68 65 61 64 65 72 2e 0a 23 20 20       header..#  
02b0: 20 20 20 2a 20 20 41 6e 20 61 70 70 72 6f 70 72     *  An appropr
02c0: 69 61 74 65 20 66 6f 6f 74 65 72 20 69 73 20 61  iate footer is a
02d0: 70 70 65 6e 64 65 64 2e 0a 23 20 20 20 20 20 2a  ppended..#     *
02e0: 20 20 53 63 72 69 70 74 73 20 77 69 74 68 69 6e    Scripts within
02f0: 20 3c 74 63 6c 3e 2e 2e 2e 3c 2f 74 63 6c 3e 20   <tcl>...</tcl> 
0300: 61 72 65 20 65 76 61 6c 75 61 74 65 64 2e 20 20  are evaluated.  
0310: 4f 75 74 70 75 74 20 74 68 61 74 0a 23 20 20 20  Output that.#   
0320: 20 20 20 20 20 69 73 20 65 6d 69 74 74 65 64 20       is emitted 
0330: 66 72 6f 6d 20 74 68 65 73 65 20 73 63 72 69 70  from these scrip
0340: 74 73 20 62 79 20 22 70 75 74 73 22 20 61 70 70  ts by "puts" app
0350: 65 61 72 73 20 69 6e 20 70 6c 61 63 65 20 6f 66  ears in place of
0360: 0a 23 20 20 20 20 20 20 20 20 74 68 65 20 6f 72  .#        the or
0370: 69 67 69 6e 61 6c 20 73 63 72 69 70 74 2e 0a 23  iginal script..#
0380: 0a 0a 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a  ..source [file j
0390: 6f 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d  oin [file dirnam
03a0: 65 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 5d  e [info script]]
03b0: 20 73 69 74 65 6d 61 70 2e 74 63 6c 5d 0a 0a 73   sitemap.tcl]..s
03c0: 65 74 20 44 4f 43 20 5b 6c 69 6e 64 65 78 20 24  et DOC [lindex $
03d0: 61 72 67 76 20 30 5d 0a 73 65 74 20 53 52 43 20  argv 0].set SRC 
03e0: 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20 31 5d  [lindex $argv 1]
03f0: 0a 73 65 74 20 44 45 53 54 20 5b 6c 69 6e 64 65  .set DEST [linde
0400: 78 20 24 61 72 67 76 20 32 5d 0a 73 65 74 20 48  x $argv 2].set H
0410: 4f 4d 45 44 49 52 20 5b 70 77 64 5d 20 20 20 20  OMEDIR [pwd]    
0420: 20 20 20 20 20 20 20 20 3b 23 20 41 6c 73 6f 20          ;# Also 
0430: 72 65 6d 65 6d 62 65 72 20 6f 75 72 20 68 6f 6d  remember our hom
0440: 65 20 64 69 72 65 63 74 6f 72 79 2e 0a 0a 23 20  e directory...# 
0450: 57 65 20 61 72 65 20 67 6f 69 6e 67 20 74 6f 20  We are going to 
0460: 6f 76 65 72 6c 6f 61 64 20 74 68 65 20 70 75 74  overload the put
0470: 73 20 63 6f 6d 6d 61 6e 64 2c 20 73 6f 20 72 65  s command, so re
0480: 6d 65 6d 62 65 72 20 74 68 65 0a 23 20 6f 72 69  member the.# ori
0490: 67 69 6e 61 6c 20 70 75 74 73 20 63 6f 6d 6d 61  ginal puts comma
04a0: 6e 64 20 75 73 69 6e 67 20 61 6e 20 61 6c 74 65  nd using an alte
04b0: 72 6e 61 74 69 76 65 20 6e 61 6d 65 2e 0a 72 65  rnative name..re
04c0: 6e 61 6d 65 20 70 75 74 73 20 72 65 61 6c 5f 70  name puts real_p
04d0: 75 74 73 0a 70 72 6f 63 20 70 75 74 73 20 7b 74  uts.proc puts {t
04e0: 65 78 74 7d 20 7b 0a 20 20 72 65 61 6c 5f 70 75  ext} {.  real_pu
04f0: 74 73 20 24 3a 3a 4f 55 54 20 24 74 65 78 74 0a  ts $::OUT $text.
0500: 20 20 66 6c 75 73 68 20 24 3a 3a 4f 55 54 0a 7d    flush $::OUT.}
0510: 0a 23 20 70 75 74 73 69 6e 34 20 69 73 20 6c 69  .# putsin4 is li
0520: 6b 65 20 70 75 74 73 20 65 78 63 65 70 74 20 74  ke puts except t
0530: 68 61 74 20 69 74 20 72 65 6d 6f 76 65 73 20 74  hat it removes t
0540: 68 65 20 66 69 72 73 74 20 34 20 69 6e 64 65 6e  he first 4 inden
0550: 74 61 74 69 6f 6e 0a 23 20 63 68 61 72 61 63 74  tation.# charact
0560: 65 72 73 20 66 72 6f 6d 20 65 61 63 68 20 6c 69  ers from each li
0570: 6e 65 2e 20 20 49 74 20 61 6c 73 6f 20 64 6f 65  ne.  It also doe
0580: 73 20 76 61 72 69 61 62 6c 65 20 73 75 62 73 74  s variable subst
0590: 69 74 75 74 69 6f 6e 20 69 6e 0a 23 20 74 68 65  itution in.# the
05a0: 20 6e 61 6d 65 73 70 61 63 65 20 6f 66 20 69 74   namespace of it
05b0: 73 20 63 61 6c 6c 69 6e 67 20 70 72 6f 63 65 64  s calling proced
05c0: 75 72 65 2e 0a 23 0a 70 72 6f 63 20 70 75 74 73  ure..#.proc puts
05d0: 69 6e 34 20 7b 74 65 78 74 7d 20 7b 0a 20 20 72  in4 {text} {.  r
05e0: 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 20 20  egsub -all "\n  
05f0: 20 20 22 20 24 74 65 78 74 20 5c 6e 20 74 65 78    " $text \n tex
0600: 74 0a 20 20 72 65 61 6c 5f 70 75 74 73 20 24 3a  t.  real_puts $:
0610: 3a 4f 55 54 20 5b 75 70 6c 65 76 65 6c 20 31 20  :OUT [uplevel 1 
0620: 5b 6c 69 73 74 20 73 75 62 73 74 20 2d 6e 6f 62  [list subst -nob
0630: 61 63 6b 20 2d 6e 6f 63 6f 6d 20 24 74 65 78 74  ack -nocom $text
0640: 5d 5d 0a 20 20 66 6c 75 73 68 20 24 3a 3a 4f 55  ]].  flush $::OU
0650: 54 0a 7d 0a 0a 23 20 41 20 70 72 6f 63 65 64 75  T.}..# A procedu
0660: 72 65 20 74 6f 20 77 72 69 74 65 20 74 68 65 20  re to write the 
0670: 63 6f 6d 6d 6f 6e 20 68 65 61 64 65 72 20 66 6f  common header fo
0680: 75 6e 64 20 6f 6e 20 65 76 65 72 79 20 48 54 4d  und on every HTM
0690: 4c 20 66 69 6c 65 20 6f 6e 0a 23 20 74 68 65 20  L file on.# the 
06a0: 53 51 4c 69 74 65 20 77 65 62 73 69 74 65 2e 0a  SQLite website..
06b0: 23 0a 70 72 6f 63 20 50 75 74 73 48 65 61 64 65  #.proc PutsHeade
06c0: 72 20 7b 74 69 74 6c 65 20 7b 70 61 74 68 20 7b  r {title {path {
06d0: 7d 7d 7d 20 7b 0a 20 20 70 75 74 73 20 7b 3c 21  }}} {.  puts {<!
06e0: 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42  DOCTYPE HTML PUB
06f0: 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44  LIC "-//W3C//DTD
0700: 20 48 54 4d 4c 20 34 2e 30 31 2f 2f 45 4e 22 20   HTML 4.01//EN" 
0710: 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 2e 6f  "http://www.w3.o
0720: 72 67 2f 54 52 2f 68 74 6d 6c 34 2f 73 74 72 69  rg/TR/html4/stri
0730: 63 74 2e 64 74 64 22 3e 7d 0a 20 20 70 75 74 73  ct.dtd">}.  puts
0740: 20 7b 3c 68 74 6d 6c 3e 3c 68 65 61 64 3e 7d 0a   {<html><head>}.
0750: 20 20 70 75 74 73 20 22 3c 74 69 74 6c 65 3e 24    puts "<title>$
0760: 74 69 74 6c 65 3c 2f 74 69 74 6c 65 3e 22 0a 20  title</title>". 
0770: 20 70 75 74 73 69 6e 34 20 7b 3c 73 74 79 6c 65   putsin4 {<style
0780: 20 74 79 70 65 3d 22 74 65 78 74 2f 63 73 73 22   type="text/css"
0790: 3e 0a 20 20 20 20 62 6f 64 79 20 7b 0a 20 20 20  >.    body {.   
07a0: 20 20 20 20 20 6d 61 72 67 69 6e 3a 20 61 75 74       margin: aut
07b0: 6f 3b 0a 20 20 20 20 20 20 20 20 66 6f 6e 74 2d  o;.        font-
07c0: 66 61 6d 69 6c 79 3a 20 22 56 65 72 64 61 6e 61  family: "Verdana
07d0: 22 20 22 73 61 6e 73 2d 73 65 72 69 66 22 3b 0a  " "sans-serif";.
07e0: 20 20 20 20 20 20 20 20 6c 69 6e 65 2d 68 65 69          line-hei
07f0: 67 68 74 3a 20 31 2e 35 65 6d 3b 0a 20 20 20 20  ght: 1.5em;.    
0800: 20 20 20 20 70 61 64 64 69 6e 67 3a 20 38 70 78      padding: 8px
0810: 20 31 25 3b 0a 20 20 20 20 7d 0a 20 20 20 20 0a   1%;.    }.    .
0820: 20 20 20 20 61 20 7b 20 63 6f 6c 6f 72 3a 20 23      a { color: #
0830: 34 35 37 33 35 66 20 7d 0a 20 20 20 20 61 3a 76  45735f }.    a:v
0840: 69 73 69 74 65 64 20 7b 20 63 6f 6c 6f 72 3a 20  isited { color: 
0850: 23 37 33 34 35 35 39 20 7d 0a 20 20 20 20 0a 20  #734559 }.    . 
0860: 20 20 20 2e 6c 6f 67 6f 20 7b 20 70 6f 73 69 74     .logo { posit
0870: 69 6f 6e 3a 61 62 73 6f 6c 75 74 65 3b 20 6d 61  ion:absolute; ma
0880: 72 67 69 6e 3a 33 70 78 3b 20 7d 0a 20 20 20 20  rgin:3px; }.    
0890: 2e 74 61 67 6c 69 6e 65 20 7b 0a 20 20 20 20 20  .tagline {.     
08a0: 20 66 6c 6f 61 74 3a 72 69 67 68 74 3b 0a 20 20   float:right;.  
08b0: 20 20 20 20 74 65 78 74 2d 61 6c 69 67 6e 3a 72      text-align:r
08c0: 69 67 68 74 3b 0a 20 20 20 20 20 20 66 6f 6e 74  ight;.      font
08d0: 2d 73 74 79 6c 65 3a 69 74 61 6c 69 63 3b 0a 20  -style:italic;. 
08e0: 20 20 20 20 20 77 69 64 74 68 3a 32 34 30 70 78       width:240px
08f0: 3b 0a 20 20 20 20 20 20 6d 61 72 67 69 6e 3a 31  ;.      margin:1
0900: 32 70 78 3b 0a 20 20 20 20 20 20 6d 61 72 67 69  2px;.      margi
0910: 6e 2d 74 6f 70 3a 35 38 70 78 3b 0a 20 20 20 20  n-top:58px;.    
0920: 7d 0a 20 20 20 20 0a 20 20 20 20 2e 74 6f 6f 6c  }.    .    .tool
0930: 62 61 72 20 7b 0a 20 20 20 20 20 20 74 65 78 74  bar {.      text
0940: 2d 61 6c 69 67 6e 3a 20 63 65 6e 74 65 72 3b 0a  -align: center;.
0950: 20 20 20 20 20 20 6c 69 6e 65 2d 68 65 69 67 68        line-heigh
0960: 74 3a 20 31 2e 36 65 6d 3b 0a 20 20 20 20 20 20  t: 1.6em;.      
0970: 6d 61 72 67 69 6e 3a 20 30 3b 0a 20 20 20 20 20  margin: 0;.     
0980: 20 70 61 64 64 69 6e 67 3a 31 70 78 20 38 70 78   padding:1px 8px
0990: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 2e 74 6f 6f  ;.    }.    .too
09a0: 6c 62 61 72 20 61 20 7b 20 63 6f 6c 6f 72 3a 20  lbar a { color: 
09b0: 77 68 69 74 65 3b 20 74 65 78 74 2d 64 65 63 6f  white; text-deco
09c0: 72 61 74 69 6f 6e 3a 20 6e 6f 6e 65 3b 20 70 61  ration: none; pa
09d0: 64 64 69 6e 67 3a 20 32 70 78 20 31 32 70 78 20  dding: 2px 12px 
09e0: 36 70 78 3b 20 7d 0a 20 20 20 20 2e 74 6f 6f 6c  6px; }.    .tool
09f0: 62 61 72 20 61 3a 76 69 73 69 74 65 64 20 7b 20  bar a:visited { 
0a00: 63 6f 6c 6f 72 3a 20 77 68 69 74 65 3b 20 7d 0a  color: white; }.
0a10: 20 20 20 20 2e 74 6f 6f 6c 62 61 72 20 61 3a 68      .toolbar a:h
0a20: 6f 76 65 72 20 7b 20 0a 20 20 20 20 20 20 20 63  over { .       c
0a30: 6f 6c 6f 72 3a 20 23 38 30 61 37 39 36 3b 20 62  olor: #80a796; b
0a40: 61 63 6b 67 72 6f 75 6e 64 3a 20 77 68 69 74 65  ackground: white
0a50: 3b 20 74 65 78 74 2d 64 65 63 6f 72 61 74 69 6f  ; text-decoratio
0a60: 6e 3a 20 75 6e 64 65 72 6c 69 6e 65 0a 20 20 20  n: underline.   
0a70: 20 7d 0a 20 20 20 20 2e 74 6f 6f 6c 62 61 72 20   }.    .toolbar 
0a80: 61 3a 61 63 74 69 76 65 20 7b 20 63 6f 6c 6f 72  a:active { color
0a90: 3a 20 62 6c 75 65 20 7d 0a 20 20 20 20 0a 20 20  : blue }.    .  
0aa0: 20 20 2e 63 6f 6e 74 65 6e 74 20 20 20 20 7b 20    .content    { 
0ab0: 6d 61 72 67 69 6e 3a 20 35 25 3b 20 7d 0a 20 20  margin: 5%; }.  
0ac0: 20 20 2e 63 6f 6e 74 65 6e 74 20 64 74 20 7b 20    .content dt { 
0ad0: 66 6f 6e 74 2d 77 65 69 67 68 74 3a 62 6f 6c 64  font-weight:bold
0ae0: 3b 20 7d 0a 20 20 20 20 2e 63 6f 6e 74 65 6e 74  ; }.    .content
0af0: 20 64 64 20 7b 20 6d 61 72 67 69 6e 2d 62 6f 74   dd { margin-bot
0b00: 74 6f 6d 3a 20 32 35 70 78 3b 20 6d 61 72 67 69  tom: 25px; margi
0b10: 6e 2d 6c 65 66 74 3a 32 30 25 3b 20 7d 0a 20 20  n-left:20%; }.  
0b20: 20 20 2e 63 6f 6e 74 65 6e 74 20 75 6c 20 7b 20    .content ul { 
0b30: 70 61 64 64 69 6e 67 3a 30 70 78 3b 20 70 61 64  padding:0px; pad
0b40: 64 69 6e 67 2d 6c 65 66 74 3a 20 31 35 70 78 3b  ding-left: 15px;
0b50: 20 6d 61 72 67 69 6e 3a 30 70 78 3b 20 7d 0a 20   margin:0px; }. 
0b60: 20 20 20 0a 20 20 20 20 2f 2a 20 72 6f 75 6e 64     .    /* round
0b70: 65 64 20 63 6f 72 6e 65 72 73 20 2a 2f 0a 20 20  ed corners */.  
0b80: 20 20 2e 73 65 20 20 7b 20 62 61 63 6b 67 72 6f    .se  { backgro
0b90: 75 6e 64 3a 20 75 72 6c 28 24 7b 70 61 74 68 7d  und: url(${path}
0ba0: 69 6d 61 67 65 73 2f 73 65 2e 70 6e 67 29 20 31  images/se.png) 1
0bb0: 30 30 25 20 31 30 30 25 20 6e 6f 2d 72 65 70 65  00% 100% no-repe
0bc0: 61 74 20 23 38 30 61 37 39 36 7d 0a 20 20 20 20  at #80a796}.    
0bd0: 2e 73 77 20 20 7b 20 62 61 63 6b 67 72 6f 75 6e  .sw  { backgroun
0be0: 64 3a 20 75 72 6c 28 24 7b 70 61 74 68 7d 69 6d  d: url(${path}im
0bf0: 61 67 65 73 2f 73 77 2e 70 6e 67 29 20 30 25 20  ages/sw.png) 0% 
0c00: 31 30 30 25 20 6e 6f 2d 72 65 70 65 61 74 20 7d  100% no-repeat }
0c10: 0a 20 20 20 20 2e 6e 65 20 20 7b 20 62 61 63 6b  .    .ne  { back
0c20: 67 72 6f 75 6e 64 3a 20 75 72 6c 28 24 7b 70 61  ground: url(${pa
0c30: 74 68 7d 69 6d 61 67 65 73 2f 6e 65 2e 70 6e 67  th}images/ne.png
0c40: 29 20 31 30 30 25 20 30 25 20 6e 6f 2d 72 65 70  ) 100% 0% no-rep
0c50: 65 61 74 20 7d 0a 20 20 20 20 2e 6e 77 20 20 7b  eat }.    .nw  {
0c60: 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20 75 72 6c   background: url
0c70: 28 24 7b 70 61 74 68 7d 69 6d 61 67 65 73 2f 6e  (${path}images/n
0c80: 77 2e 70 6e 67 29 20 30 25 20 30 25 20 6e 6f 2d  w.png) 0% 0% no-
0c90: 72 65 70 65 61 74 20 7d 0a 0a 20 20 20 20 2f 2a  repeat }..    /*
0ca0: 20 43 53 53 20 66 6f 72 20 64 72 6f 70 20 64 6f   CSS for drop do
0cb0: 77 6e 20 6d 65 6e 75 73 20 2a 2f 0a 20 20 20 20  wn menus */.    
0cc0: 2e 6d 65 6e 75 20 7b 0a 20 20 20 20 20 20 66 6c  .menu {.      fl
0cd0: 6f 61 74 3a 6c 65 66 74 3b 0a 20 20 20 20 7d 0a  oat:left;.    }.
0ce0: 20 20 20 20 2e 70 75 6c 6c 64 6f 77 6e 20 7b 0a      .pulldown {.
0cf0: 20 20 20 20 20 20 66 6f 6e 74 2d 73 69 7a 65 3a        font-size:
0d00: 20 30 2e 38 65 6d 3b 0a 20 20 20 20 20 20 6c 69   0.8em;.      li
0d10: 6e 65 2d 68 65 69 67 68 74 3a 20 31 2e 30 3b 0a  ne-height: 1.0;.
0d20: 20 20 20 20 20 20 6c 65 66 74 3a 30 70 78 3b 0a        left:0px;.
0d30: 20 20 20 20 20 20 74 6f 70 3a 31 30 30 25 3b 0a        top:100%;.
0d40: 20 20 20 20 20 20 6d 61 72 67 69 6e 2d 74 6f 70        margin-top
0d50: 3a 30 70 78 3b 0a 20 20 20 20 20 20 64 69 73 70  :0px;.      disp
0d60: 6c 61 79 3a 20 6e 6f 6e 65 3b 0a 20 20 20 20 20  lay: none;.     
0d70: 20 70 6f 73 69 74 69 6f 6e 3a 20 61 62 73 6f 6c   position: absol
0d80: 75 74 65 3b 0a 20 20 20 20 20 20 7a 2d 69 6e 64  ute;.      z-ind
0d90: 65 78 3a 20 31 3b 0a 20 20 20 20 20 20 62 6f 72  ex: 1;.      bor
0da0: 64 65 72 3a 20 32 70 78 20 73 6f 6c 69 64 20 23  der: 2px solid #
0db0: 38 30 61 37 39 36 3b 0a 20 20 20 20 20 20 62 61  80a796;.      ba
0dc0: 63 6b 67 72 6f 75 6e 64 3a 20 23 38 30 61 37 39  ckground: #80a79
0dd0: 36 3b 0a 20 20 20 20 20 20 74 65 78 74 2d 61 6c  6;.      text-al
0de0: 69 67 6e 3a 20 6c 65 66 74 3b 0a 0a 20 20 20 20  ign: left;..    
0df0: 20 20 62 6f 72 64 65 72 2d 6c 65 66 74 2d 63 6f    border-left-co
0e00: 6c 6f 72 3a 20 23 36 30 37 64 37 31 3b 0a 20 20  lor: #607d71;.  
0e10: 20 20 20 20 62 6f 72 64 65 72 2d 72 69 67 68 74      border-right
0e20: 2d 63 6f 6c 6f 72 3a 20 23 36 30 37 64 37 31 3b  -color: #607d71;
0e30: 0a 20 20 20 20 20 20 62 6f 72 64 65 72 2d 62 6f  .      border-bo
0e40: 74 74 6f 6d 2d 63 6f 6c 6f 72 3a 20 23 36 30 37  ttom-color: #607
0e50: 64 37 31 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  d71;.    }..    
0e60: 2e 70 75 6c 6c 64 6f 77 6e 20 61 20 7b 20 64 69  .pulldown a { di
0e70: 73 70 6c 61 79 3a 20 62 6c 6f 63 6b 3b 20 77 68  splay: block; wh
0e80: 69 74 65 2d 73 70 61 63 65 3a 20 6e 6f 77 72 61  ite-space: nowra
0e90: 70 3b 20 7d 0a 20 20 20 20 2e 74 6f 6f 6c 62 61  p; }.    .toolba
0ea0: 72 20 74 61 62 6c 65 2c 20 2e 74 6f 6f 6c 62 61  r table, .toolba
0eb0: 72 20 74 62 6f 64 79 2c 20 2e 74 6f 6f 6c 62 61  r tbody, .toolba
0ec0: 72 20 74 72 2c 20 2e 74 6f 6f 6c 62 61 72 20 74  r tr, .toolbar t
0ed0: 64 20 7b 20 0a 20 20 20 20 20 20 70 61 64 64 69  d { .      paddi
0ee0: 6e 67 3a 20 30 3b 20 62 6f 72 64 65 72 2d 73 70  ng: 0; border-sp
0ef0: 61 63 69 6e 67 3a 20 30 0a 20 20 20 20 7d 0a 20  acing: 0.    }. 
0f00: 20 20 20 2e 72 65 6c 20 7b 70 6f 73 69 74 69 6f     .rel {positio
0f10: 6e 3a 20 72 65 6c 61 74 69 76 65 7d 0a 0a 20 20  n: relative}..  
0f20: 20 20 2e 6f 76 65 72 20 2e 70 75 6c 6c 64 6f 77    .over .pulldow
0f30: 6e 2c 20 2e 6d 65 6e 75 3a 68 6f 76 65 72 20 2e  n, .menu:hover .
0f40: 70 75 6c 6c 64 6f 77 6e 20 7b 20 64 69 73 70 6c  pulldown { displ
0f50: 61 79 3a 20 62 6c 6f 63 6b 3b 20 7d 0a 20 20 20  ay: block; }.   
0f60: 20 2e 6f 76 65 72 20 2e 70 75 6c 6c 64 6f 77 6e   .over .pulldown
0f70: 2c 20 2e 6d 65 6e 75 3a 68 6f 76 65 72 20 2e 70  , .menu:hover .p
0f80: 75 6c 6c 64 6f 77 6e 20 7b 20 64 69 73 70 6c 61  ulldown { displa
0f90: 79 3a 20 62 6c 6f 63 6b 3b 20 7d 0a 0a 20 20 20  y: block; }..   
0fa0: 20 2e 61 64 76 65 72 74 69 73 65 6d 65 6e 74 20   .advertisement 
0fb0: 7b 0a 20 20 20 20 20 20 66 6f 6e 74 2d 73 74 79  {.      font-sty
0fc0: 6c 65 3a 20 69 74 61 6c 69 63 3b 0a 20 20 20 20  le: italic;.    
0fd0: 20 20 63 6f 6c 6f 72 3a 20 23 38 30 61 37 39 36    color: #80a796
0fe0: 3b 0a 20 20 20 20 20 20 63 6f 6c 6f 72 3a 20 23  ;.      color: #
0ff0: 36 30 37 64 37 31 3b 0a 20 20 20 20 20 20 63 6f  607d71;.      co
1000: 6c 6f 72 3a 20 23 34 35 37 33 35 66 3b 0a 20 20  lor: #45735f;.  
1010: 20 20 7d 0a 20 20 20 20 2e 61 64 76 65 72 74 69    }.    .adverti
1020: 73 65 6d 65 6e 74 20 61 20 7b 0a 20 20 20 20 20  sement a {.     
1030: 20 63 6f 6c 6f 72 3a 20 62 6c 61 63 6b 3b 0a 20   color: black;. 
1040: 20 20 20 7d 0a 0a 20 20 20 20 3c 2f 73 74 79 6c     }..    </styl
1050: 65 3e 0a 20 20 20 20 3c 6d 65 74 61 20 68 74 74  e>.    <meta htt
1060: 70 2d 65 71 75 69 76 3d 22 63 6f 6e 74 65 6e 74  p-equiv="content
1070: 2d 74 79 70 65 22 20 63 6f 6e 74 65 6e 74 3d 22  -type" content="
1080: 74 65 78 74 2f 68 74 6d 6c 3b 20 63 68 61 72 73  text/html; chars
1090: 65 74 3d 55 54 46 2d 38 22 3e 0a 0a 20 20 20 20  et=UTF-8">..    
10a0: 3c 73 63 72 69 70 74 20 74 79 70 65 3d 22 74 65  <script type="te
10b0: 78 74 2f 6a 61 76 61 73 63 72 69 70 74 22 3e 0a  xt/javascript">.
10c0: 0a 20 20 20 20 20 20 76 61 72 20 63 75 72 72 65  .      var curre
10d0: 6e 74 5f 6d 65 6e 75 5f 69 64 20 3d 20 6e 75 6c  nt_menu_id = nul
10e0: 6c 0a 20 20 20 20 20 20 76 61 72 20 63 75 72 72  l.      var curr
10f0: 65 6e 74 5f 74 69 6d 65 6f 75 74 20 3d 20 6e 75  ent_timeout = nu
1100: 6c 6c 0a 0a 20 20 20 20 20 20 66 75 6e 63 74 69  ll..      functi
1110: 6f 6e 20 6d 65 6e 75 5f 6d 6f 75 73 65 6f 76 65  on menu_mouseove
1120: 72 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 6d  r () {.        m
1130: 65 6e 75 5f 6d 6f 75 73 65 6f 75 74 5f 64 65 6c  enu_mouseout_del
1140: 61 79 65 64 28 29 0a 20 20 20 20 20 20 20 20 74  ayed().        t
1150: 68 69 73 2e 63 6c 61 73 73 4e 61 6d 65 20 2b 3d  his.className +=
1160: 20 22 20 6f 76 65 72 22 0a 20 20 20 20 20 20 20   " over".       
1170: 20 63 75 72 72 65 6e 74 5f 6d 65 6e 75 5f 69 64   current_menu_id
1180: 20 3d 20 74 68 69 73 2e 69 64 0a 20 20 20 20 20   = this.id.     
1190: 20 7d 0a 20 20 20 20 20 20 66 75 6e 63 74 69 6f   }.      functio
11a0: 6e 20 6d 65 6e 75 5f 6d 6f 75 73 65 6f 75 74 20  n menu_mouseout 
11b0: 28 29 20 7b 0a 20 20 20 20 20 20 20 20 63 75 72  () {.        cur
11c0: 72 65 6e 74 5f 74 69 6d 65 6f 75 74 20 3d 20 77  rent_timeout = w
11d0: 69 6e 64 6f 77 2e 73 65 74 54 69 6d 65 6f 75 74  indow.setTimeout
11e0: 28 27 6d 65 6e 75 5f 6d 6f 75 73 65 6f 75 74 5f  ('menu_mouseout_
11f0: 64 65 6c 61 79 65 64 28 29 27 2c 20 35 30 30 29  delayed()', 500)
1200: 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 66  .      }.      f
1210: 75 6e 63 74 69 6f 6e 20 6d 65 6e 75 5f 6d 6f 75  unction menu_mou
1220: 73 65 6f 75 74 5f 64 65 6c 61 79 65 64 20 28 69  seout_delayed (i
1230: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72  d) {.        var
1240: 20 65 6c 65 6d 20 3d 20 64 6f 63 75 6d 65 6e 74   elem = document
1250: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
1260: 63 75 72 72 65 6e 74 5f 6d 65 6e 75 5f 69 64 29  current_menu_id)
1270: 0a 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65  .        if (ele
1280: 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 65  m) {.          e
1290: 6c 65 6d 2e 63 6c 61 73 73 4e 61 6d 65 20 3d 20  lem.className = 
12a0: 65 6c 65 6d 2e 63 6c 61 73 73 4e 61 6d 65 2e 72  elem.className.r
12b0: 65 70 6c 61 63 65 28 22 20 6f 76 65 72 22 2c 20  eplace(" over", 
12c0: 22 22 29 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  "").        }.  
12d0: 20 20 20 20 20 20 69 66 20 28 63 75 72 72 65 6e        if (curren
12e0: 74 5f 74 69 6d 65 6f 75 74 29 20 7b 0a 20 20 20  t_timeout) {.   
12f0: 20 20 20 20 20 20 20 77 69 6e 64 6f 77 2e 63 6c         window.cl
1300: 65 61 72 54 69 6d 65 6f 75 74 28 63 75 72 72 65  earTimeout(curre
1310: 6e 74 5f 74 69 6d 65 6f 75 74 29 0a 20 20 20 20  nt_timeout).    
1320: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 63 75      }.        cu
1330: 72 72 65 6e 74 5f 6d 65 6e 75 5f 69 64 20 3d 20  rrent_menu_id = 
1340: 6e 75 6c 6c 0a 20 20 20 20 20 20 20 20 63 75 72  null.        cur
1350: 72 65 6e 74 5f 74 69 6d 65 6f 75 74 20 3d 20 6e  rent_timeout = n
1360: 75 6c 6c 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20  ull.      }..   
1370: 20 20 20 77 69 6e 64 6f 77 2e 6f 6e 6c 6f 61 64     window.onload
1380: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a   = function() {.
1390: 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 6c 6c          var coll
13a0: 65 63 74 69 6f 6e 20 3d 20 64 6f 63 75 6d 65 6e  ection = documen
13b0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 73 42 79 54  t.getElementsByT
13c0: 61 67 4e 61 6d 65 28 22 64 69 76 22 29 0a 20 20  agName("div").  
13d0: 20 20 20 20 20 20 76 61 72 20 69 69 0a 20 20 20        var ii.   
13e0: 20 20 20 20 20 66 6f 72 20 28 69 69 20 3d 20 30       for (ii = 0
13f0: 3b 20 69 69 20 3c 20 63 6f 6c 6c 65 63 74 69 6f  ; ii < collectio
1400: 6e 2e 6c 65 6e 67 74 68 3b 20 69 69 2b 2b 29 20  n.length; ii++) 
1410: 7b 0a 20 20 20 20 20 20 20 20 20 20 76 61 72 20  {.          var 
1420: 73 70 61 6e 20 3d 20 63 6f 6c 6c 65 63 74 69 6f  span = collectio
1430: 6e 2e 69 74 65 6d 28 69 69 29 0a 20 20 20 20 20  n.item(ii).     
1440: 20 20 20 20 20 69 66 20 28 73 70 61 6e 2e 63 6c       if (span.cl
1450: 61 73 73 4e 61 6d 65 20 3d 3d 20 22 6d 65 6e 75  assName == "menu
1460: 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ") {.           
1470: 20 73 70 61 6e 2e 6f 6e 6d 6f 75 73 65 6f 76 65   span.onmouseove
1480: 72 20 3d 20 6d 65 6e 75 5f 6d 6f 75 73 65 6f 76  r = menu_mouseov
1490: 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  er.            s
14a0: 70 61 6e 2e 6f 6e 6d 6f 75 73 65 6f 75 74 20 20  pan.onmouseout  
14b0: 3d 20 6d 65 6e 75 5f 6d 6f 75 73 65 6f 75 74 0a  = menu_mouseout.
14c0: 20 20 20 20 20 20 20 20 20 20 20 20 73 70 61 6e              span
14d0: 2e 69 64 20 20 3d 20 22 6d 65 6e 75 22 20 2b 20  .id  = "menu" + 
14e0: 69 69 0a 20 20 20 20 20 20 20 20 20 20 7d 0a 20  ii.          }. 
14f0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d         }.      }
1500: 0a 20 20 20 20 3c 2f 73 63 72 69 70 74 3e 0a 20  .    </script>. 
1510: 20 7d 0a 20 20 70 75 74 73 20 7b 3c 2f 68 65 61   }.  puts {</hea
1520: 64 3e 7d 0a 20 20 70 75 74 73 69 6e 34 20 7b 3c  d>}.  putsin4 {<
1530: 62 6f 64 79 3e 0a 20 20 20 20 3c 64 69 76 3e 3c  body>.    <div><
1540: 21 2d 2d 20 63 6f 6e 74 61 69 6e 65 72 20 64 69  !-- container di
1550: 76 20 74 6f 20 73 61 74 69 73 66 79 20 76 61 6c  v to satisfy val
1560: 69 64 61 74 6f 72 20 2d 2d 3e 0a 20 20 20 20 0a  idator -->.    .
1570: 20 20 20 20 3c 61 20 68 72 65 66 3d 22 24 7b 70      <a href="${p
1580: 61 74 68 7d 69 6e 64 65 78 2e 68 74 6d 6c 22 3e  ath}index.html">
1590: 0a 20 20 20 20 3c 69 6d 67 20 63 6c 61 73 73 3d  .    <img class=
15a0: 22 6c 6f 67 6f 22 20 73 72 63 3d 22 24 7b 70 61  "logo" src="${pa
15b0: 74 68 7d 69 6d 61 67 65 73 2f 53 51 4c 69 74 65  th}images/SQLite
15c0: 2e 67 69 66 22 20 61 6c 74 3d 22 53 51 4c 69 74  .gif" alt="SQLit
15d0: 65 20 4c 6f 67 6f 22 0a 20 20 20 20 20 62 6f 72  e Logo".     bor
15e0: 64 65 72 3d 22 30 22 3e 3c 2f 61 3e 0a 20 20 20  der="0"></a>.   
15f0: 20 3c 64 69 76 3e 3c 21 2d 2d 20 49 45 20 68 61   <div><!-- IE ha
1600: 63 6b 20 74 6f 20 70 72 65 76 65 6e 74 20 64 69  ck to prevent di
1610: 73 61 70 70 65 61 72 69 6e 67 20 6c 6f 67 6f 2d  sappearing logo-
1620: 2d 3e 3c 2f 64 69 76 3e 0a 20 20 20 20 3c 64 69  -></div>.    <di
1630: 76 20 63 6c 61 73 73 3d 22 74 61 67 6c 69 6e 65  v class="tagline
1640: 22 3e 53 6d 61 6c 6c 2c 20 46 61 73 74 2c 20 52  ">Small, Fast, R
1650: 65 6c 69 61 62 6c 65 2e 3c 62 72 3e 43 68 6f 6f  eliable.<br>Choo
1660: 73 65 20 61 6e 79 20 74 68 72 65 65 2e 3c 2f 64  se any three.</d
1670: 69 76 3e 0a 20 20 20 20 3c 74 61 62 6c 65 20 77  iv>.    <table w
1680: 69 64 74 68 3d 31 30 30 25 20 73 74 79 6c 65 3d  idth=100% style=
1690: 22 63 6c 65 61 72 3a 62 6f 74 68 22 3e 3c 74 72  "clear:both"><tr
16a0: 3e 3c 74 64 3e 0a 20 20 20 20 20 20 3c 64 69 76  ><td>.      <div
16b0: 20 63 6c 61 73 73 3d 22 73 65 22 3e 3c 64 69 76   class="se"><div
16c0: 20 63 6c 61 73 73 3d 22 73 77 22 3e 3c 64 69 76   class="sw"><div
16d0: 20 63 6c 61 73 73 3d 22 6e 65 22 3e 3c 64 69 76   class="ne"><div
16e0: 20 63 6c 61 73 73 3d 22 6e 77 22 3e 0a 20 20 20   class="nw">.   
16f0: 20 20 20 3c 64 69 76 20 63 6c 61 73 73 3d 22 74     <div class="t
1700: 6f 6f 6c 62 61 72 22 3e 0a 20 20 20 20 20 20 20  oolbar">.       
1710: 20 3c 74 61 62 6c 65 20 73 74 79 6c 65 3d 22 6d   <table style="m
1720: 61 72 67 69 6e 3a 61 75 74 6f 22 3e 3c 74 72 3e  argin:auto"><tr>
1730: 3c 74 64 3e 0a 20 20 7d 0a 20 20 63 72 65 61 74  <td>.  }.  creat
1740: 65 5f 6d 65 6e 75 62 61 72 20 24 70 61 74 68 0a  e_menubar $path.
1750: 20 20 70 75 74 73 69 6e 34 20 7b 0a 20 20 20 20    putsin4 {.    
1760: 20 20 20 20 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65      </tr></table
1770: 3e 0a 20 20 20 20 20 20 3c 2f 64 69 76 3e 3c 2f  >.      </div></
1780: 64 69 76 3e 3c 2f 64 69 76 3e 3c 2f 64 69 76 3e  div></div></div>
1790: 3c 2f 64 69 76 3e 0a 20 20 20 20 3c 2f 74 64 3e  </div>.    </td>
17a0: 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e 0a 20 20  </tr></table>.  
17b0: 7d 0a 7d 0a 0a 23 20 41 20 70 72 6f 63 65 64 75  }.}..# A procedu
17c0: 72 65 20 74 6f 20 77 72 69 74 65 20 74 68 65 20  re to write the 
17d0: 63 6f 6d 6d 6f 6e 20 66 6f 6f 74 65 72 20 66 6f  common footer fo
17e0: 75 6e 64 20 61 74 20 74 68 65 20 62 6f 74 74 6f  und at the botto
17f0: 6d 20 6f 66 0a 23 20 65 76 65 72 79 20 48 54 4d  m of.# every HTM
1800: 4c 20 66 69 6c 65 2e 20 20 24 73 72 63 66 69 6c  L file.  $srcfil
1810: 65 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  e is the name of
1820: 20 74 68 65 20 66 69 6c 65 20 74 68 61 74 20 69   the file that i
1830: 73 20 74 68 65 0a 23 20 73 6f 75 72 63 65 20 6f  s the.# source o
1840: 66 20 74 68 65 20 48 54 4d 4c 20 63 6f 6e 74 65  f the HTML conte
1850: 6e 74 2e 20 20 54 68 65 20 6d 6f 64 69 66 69 63  nt.  The modific
1860: 61 74 69 6f 6e 20 74 69 6d 65 20 6f 66 20 74 68  ation time of th
1870: 69 73 20 66 69 6c 65 0a 23 20 69 73 20 75 73 65  is file.# is use
1880: 64 20 74 6f 20 61 64 64 20 74 68 65 20 22 6c 61  d to add the "la
1890: 73 74 20 6d 6f 64 69 66 69 65 64 20 6f 6e 22 20  st modified on" 
18a0: 6c 69 6e 65 20 61 74 20 74 68 65 20 62 6f 74 74  line at the bott
18b0: 6f 6d 20 6f 66 20 74 68 65 0a 23 20 66 69 6c 65  om of the.# file
18c0: 2e 0a 23 0a 70 72 6f 63 20 50 75 74 73 46 6f 6f  ..#.proc PutsFoo
18d0: 74 65 72 20 7b 73 72 63 66 69 6c 65 7d 20 7b 0a  ter {srcfile} {.
18e0: 20 20 70 75 74 73 20 7b 3c 68 72 3e 3c 73 6d 61    puts {<hr><sma
18f0: 6c 6c 3e 3c 69 3e 7d 0a 20 20 73 65 74 20 6d 74  ll><i>}.  set mt
1900: 69 6d 65 20 5b 66 69 6c 65 20 6d 74 69 6d 65 20  ime [file mtime 
1910: 24 73 72 63 66 69 6c 65 5d 0a 20 20 73 65 74 20  $srcfile].  set 
1920: 64 61 74 65 20 5b 63 6c 6f 63 6b 20 66 6f 72 6d  date [clock form
1930: 61 74 20 24 6d 74 69 6d 65 20 2d 66 6f 72 6d 61  at $mtime -forma
1940: 74 20 7b 25 59 2f 25 6d 2f 25 64 20 25 48 3a 25  t {%Y/%m/%d %H:%
1950: 4d 3a 25 53 20 55 54 43 7d 20 2d 67 6d 74 20 31  M:%S UTC} -gmt 1
1960: 5d 0a 20 20 70 75 74 73 20 22 54 68 69 73 20 70  ].  puts "This p
1970: 61 67 65 20 6c 61 73 74 20 6d 6f 64 69 66 69 65  age last modifie
1980: 64 20 24 64 61 74 65 22 0a 20 20 70 75 74 73 20  d $date".  puts 
1990: 7b 3c 2f 69 3e 3c 2f 73 6d 61 6c 6c 3e 3c 2f 64  {</i></small></d
19a0: 69 76 3e 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c  iv></body></html
19b0: 3e 7d 0a 7d 0a 0a 23 20 54 68 65 20 66 6f 6c 6c  >}.}..# The foll
19c0: 6f 77 69 6e 67 20 70 72 6f 63 20 69 73 20 75 73  owing proc is us
19d0: 65 64 20 74 6f 20 65 6e 73 75 72 65 20 63 6f 6e  ed to ensure con
19e0: 73 69 73 74 65 6e 74 20 66 6f 72 6d 61 74 74 69  sistent formatti
19f0: 6e 67 20 69 6e 20 74 68 65 20 0a 23 20 48 54 4d  ng in the .# HTM
1a00: 4c 20 67 65 6e 65 72 61 74 65 64 20 62 79 20 6c  L generated by l
1a10: 61 6e 67 2e 74 63 6c 20 61 6e 64 20 70 72 61 67  ang.tcl and prag
1a20: 6d 61 2e 74 63 6c 2e 0a 23 0a 70 72 6f 63 20 53  ma.tcl..#.proc S
1a30: 79 6e 74 61 78 20 7b 61 72 67 73 7d 20 7b 0a 20  yntax {args} {. 
1a40: 20 70 75 74 73 20 7b 3c 74 61 62 6c 65 20 63 65   puts {<table ce
1a50: 6c 6c 70 61 64 64 69 6e 67 3d 22 31 30 22 20 63  llpadding="10" c
1a60: 6c 61 73 73 3d 70 64 66 5f 73 79 6e 74 61 78 3e  lass=pdf_syntax>
1a70: 7d 0a 20 20 66 6f 72 65 61 63 68 20 7b 72 75 6c  }.  foreach {rul
1a80: 65 20 62 6f 64 79 7d 20 24 61 72 67 73 20 7b 0a  e body} $args {.
1a90: 20 20 20 20 70 75 74 73 20 22 3c 74 72 3e 3c 74      puts "<tr><t
1aa0: 64 20 61 6c 69 67 6e 3d 5c 22 72 69 67 68 74 5c  d align=\"right\
1ab0: 22 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22  " valign=\"top\"
1ac0: 3e 22 0a 20 20 20 20 70 75 74 73 20 22 3c 69 3e  >".    puts "<i>
1ad0: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 66  <font color=\"#f
1ae0: 66 33 34 33 34 5c 22 3e 24 72 75 6c 65 3c 2f 66  f3434\">$rule</f
1af0: 6f 6e 74 3e 3c 2f 69 3e 26 6e 62 73 70 3b 3a 3a  ont></i>&nbsp;::
1b00: 3d 3c 2f 74 64 3e 22 0a 20 20 20 20 72 65 67 73  =</td>".    regs
1b10: 75 62 20 2d 61 6c 6c 20 3c 20 24 62 6f 64 79 20  ub -all < $body 
1b20: 7b 25 4c 54 7d 20 62 6f 64 79 0a 20 20 20 20 72  {%LT} body.    r
1b30: 65 67 73 75 62 20 2d 61 6c 6c 20 3e 20 24 62 6f  egsub -all > $bo
1b40: 64 79 20 7b 25 47 54 7d 20 62 6f 64 79 0a 20 20  dy {%GT} body.  
1b50: 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 25 4c    regsub -all %L
1b60: 54 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e  T $body {</font>
1b70: 3c 2f 62 3e 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c  </b><i><font col
1b80: 6f 72 3d 22 23 66 66 33 34 33 34 22 3e 7d 20 62  or="#ff3434">} b
1b90: 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d  ody.    regsub -
1ba0: 61 6c 6c 20 25 47 54 20 24 62 6f 64 79 20 7b 3c  all %GT $body {<
1bb0: 2f 66 6f 6e 74 3e 3c 2f 69 3e 3c 62 3e 3c 66 6f  /font></i><b><fo
1bc0: 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66  nt color="#2c2cf
1bd0: 30 22 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65  0">} body.    re
1be0: 67 73 75 62 20 2d 61 6c 6c 20 7b 5b 5d 7c 5b 2a  gsub -all {[]|[*
1bf0: 3f 5d 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e  ?]} $body {</fon
1c00: 74 3e 3c 2f 62 3e 26 3c 62 3e 3c 66 6f 6e 74 20  t></b>&<b><font 
1c10: 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e  color="#2c2cf0">
1c20: 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75  } body.    regsu
1c30: 62 20 2d 61 6c 6c 20 22 5c 6e 22 20 5b 73 74 72  b -all "\n" [str
1c40: 69 6e 67 20 74 72 69 6d 20 24 62 6f 64 79 5d 20  ing trim $body] 
1c50: 22 3c 62 72 3e 5c 6e 22 20 62 6f 64 79 0a 20 20  "<br>\n" body.  
1c60: 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c    regsub -all "\
1c70: 6e 20 20 2a 22 20 24 62 6f 64 79 20 22 5c 6e 5c  n  *" $body "\n\
1c80: 5c 26 6e 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 5c  \&nbsp;\\&nbsp;\
1c90: 5c 26 6e 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 22  \&nbsp;\\&nbsp;"
1ca0: 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62   body.    regsub
1cb0: 20 2d 61 6c 6c 20 7b 5b 7c 2c 2e 2a 28 29 5d 7d   -all {[|,.*()]}
1cc0: 20 24 62 6f 64 79 20 7b 3c 62 69 67 3e 26 3c 2f   $body {<big>&</
1cd0: 62 69 67 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72  big>} body.    r
1ce0: 65 67 73 75 62 20 2d 61 6c 6c 20 7b 20 3d 20 7d  egsub -all { = }
1cf0: 20 24 62 6f 64 79 20 7b 20 3c 62 69 67 3e 3d 3c   $body { <big>=<
1d00: 2f 62 69 67 3e 20 7d 20 62 6f 64 79 0a 20 20 20  /big> } body.   
1d10: 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 53 54   regsub -all {ST
1d20: 41 52 7d 20 24 62 6f 64 79 20 7b 3c 62 69 67 3e  AR} $body {<big>
1d30: 2a 3c 2f 62 69 67 3e 7d 20 62 6f 64 79 0a 20 20  *</big>} body.  
1d40: 20 20 23 23 20 54 68 65 73 65 20 6d 65 74 61 63    ## These metac
1d50: 68 61 72 61 63 74 65 72 73 20 6d 75 73 74 20 62  haracters must b
1d60: 65 20 68 61 6e 64 6c 65 64 20 74 6f 20 75 6e 64  e handled to und
1d70: 6f 20 62 65 69 6e 67 0a 20 20 20 20 23 23 20 74  o being.    ## t
1d80: 72 65 61 74 65 64 20 61 73 20 53 51 4c 20 70 75  reated as SQL pu
1d90: 6e 63 74 75 61 74 69 6f 6e 20 63 68 61 72 61 63  nctuation charac
1da0: 74 65 72 73 20 61 62 6f 76 65 2e 0a 20 20 20 20  ters above..    
1db0: 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 52 50 50  regsub -all {RPP
1dc0: 4c 55 53 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f  LUS} $body {</fo
1dd0: 6e 74 3e 3c 2f 62 3e 29 2b 3c 62 3e 3c 66 6f 6e  nt></b>)+<b><fon
1de0: 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30  t color="#2c2cf0
1df0: 22 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67  ">} body.    reg
1e00: 73 75 62 20 2d 61 6c 6c 20 7b 4c 50 7d 20 24 62  sub -all {LP} $b
1e10: 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e  ody {</font></b>
1e20: 28 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d  (<b><font color=
1e30: 22 23 32 63 32 63 66 30 22 3e 7d 20 62 6f 64 79  "#2c2cf0">} body
1e40: 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c  .    regsub -all
1e50: 20 7b 52 50 7d 20 24 62 6f 64 79 20 7b 3c 2f 66   {RP} $body {</f
1e60: 6f 6e 74 3e 3c 2f 62 3e 29 3c 62 3e 3c 66 6f 6e  ont></b>)<b><fon
1e70: 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30  t color="#2c2cf0
1e80: 22 3e 7d 20 62 6f 64 79 0a 20 20 20 20 23 23 20  ">} body.    ## 
1e90: 50 6c 61 63 65 20 74 68 65 20 6c 65 66 74 2d 68  Place the left-h
1ea0: 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 20  and side of the 
1eb0: 72 75 6c 65 20 69 6e 20 74 68 65 20 32 6e 64 20  rule in the 2nd 
1ec0: 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 2e 0a 20 20  table column..  
1ed0: 20 20 70 75 74 73 20 22 3c 74 64 3e 3c 62 3e 3c    puts "<td><b><
1ee0: 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63  font color=\"#2c
1ef0: 32 63 66 30 5c 22 3e 24 62 6f 64 79 3c 2f 66 6f  2cf0\">$body</fo
1f00: 6e 74 3e 3c 2f 62 3e 3c 2f 74 64 3e 3c 2f 74 72  nt></b></td></tr
1f10: 3e 22 0a 20 20 7d 0a 20 20 70 75 74 73 20 7b 3c  >".  }.  puts {<
1f20: 2f 74 61 62 6c 65 3e 7d 0a 7d 0a 0a 70 72 6f 63  /table>}.}..proc
1f30: 20 70 72 6f 63 65 73 73 5f 69 6e 66 69 6c 65 20   process_infile 
1f40: 7b 69 6e 20 69 6e 66 69 6c 65 20 6f 75 74 66 69  {in infile outfi
1f50: 6c 65 7d 20 7b 0a 20 20 73 65 74 20 74 69 74 6c  le} {.  set titl
1f60: 65 20 7b 4e 6f 20 54 69 74 6c 65 7d 0a 20 20 72  e {No Title}.  r
1f70: 65 67 65 78 70 20 7b 3c 74 69 74 6c 65 3e 28 5b  egexp {<title>([
1f80: 5e 5c 6e 5d 2a 29 3c 2f 74 69 74 6c 65 3e 7d 20  ^\n]*)</title>} 
1f90: 24 69 6e 20 61 6c 6c 20 74 69 74 6c 65 0a 20 20  $in all title.  
1fa0: 72 65 67 73 75 62 20 7b 3c 74 69 74 6c 65 3e 5b  regsub {<title>[
1fb0: 5e 5c 6e 5d 2a 3c 2f 74 69 74 6c 65 3e 7d 20 24  ^\n]*</title>} $
1fc0: 69 6e 20 7b 7d 20 69 6e 0a 20 20 73 65 74 20 3a  in {} in.  set :
1fd0: 3a 4f 55 54 20 5b 6f 70 65 6e 20 24 3a 3a 44 45  :OUT [open $::DE
1fe0: 53 54 2f 24 6f 75 74 66 69 6c 65 20 77 5d 0a 0a  ST/$outfile w]..
1ff0: 20 20 73 65 74 20 70 61 74 68 20 5b 73 74 72 69    set path [stri
2000: 6e 67 20 72 65 70 65 61 74 20 2e 2e 2f 20 5b 65  ng repeat ../ [e
2010: 78 70 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 66  xpr {[llength [f
2020: 69 6c 65 20 73 70 6c 69 74 20 24 6f 75 74 66 69  ile split $outfi
2030: 6c 65 5d 5d 2d 31 7d 5d 5d 0a 20 20 50 75 74 73  le]]-1}]].  Puts
2040: 48 65 61 64 65 72 20 24 74 69 74 6c 65 20 24 70  Header $title $p
2050: 61 74 68 0a 0a 20 20 72 65 67 73 75 62 20 2d 61  ath..  regsub -a
2060: 6c 6c 20 7b 3c 74 63 6c 3e 7d 20 24 69 6e 20 22  ll {<tcl>} $in "
2070: 5c 31 37 35 3b 20 65 76 61 6c 20 5c 31 37 33 22  \175; eval \173"
2080: 20 69 6e 0a 20 20 72 65 67 73 75 62 20 2d 61 6c   in.  regsub -al
2090: 6c 20 7b 3c 2f 74 63 6c 3e 7d 20 24 69 6e 20 22  l {</tcl>} $in "
20a0: 5c 31 37 35 3b 20 70 75 74 73 20 5c 31 37 33 22  \175; puts \173"
20b0: 20 69 6e 0a 20 20 75 70 6c 65 76 65 6c 20 23 30   in.  uplevel #0
20c0: 20 22 70 75 74 73 20 5c 31 37 33 24 69 6e 5c 31   "puts \173$in\1
20d0: 37 35 22 0a 20 20 63 64 20 24 3a 3a 48 4f 4d 45  75".  cd $::HOME
20e0: 44 49 52 0a 20 20 50 75 74 73 46 6f 6f 74 65 72  DIR.  PutsFooter
20f0: 20 24 69 6e 66 69 6c 65 0a 20 20 63 6c 6f 73 65   $infile.  close
2100: 20 24 3a 3a 4f 55 54 0a 7d 0a 0a 23 20 4c 6f 6f   $::OUT.}..# Loo
2110: 70 20 6f 76 65 72 20 61 6c 6c 20 69 6e 70 75 74  p over all input
2120: 20 66 69 6c 65 73 20 61 6e 64 20 70 72 6f 63 65   files and proce
2130: 73 73 20 74 68 65 6d 20 6f 6e 65 20 62 79 20 6f  ss them one by o
2140: 6e 65 0a 23 0a 66 6f 72 65 61 63 68 20 69 6e 66  ne.#.foreach inf
2150: 69 6c 65 20 5b 6c 72 61 6e 67 65 20 24 61 72 67  ile [lrange $arg
2160: 76 20 33 20 65 6e 64 5d 20 7b 0a 20 20 63 64 20  v 3 end] {.  cd 
2170: 24 48 4f 4d 45 44 49 52 0a 20 20 72 65 61 6c 5f  $HOMEDIR.  real_
2180: 70 75 74 73 20 22 50 72 6f 63 65 73 73 69 6e 67  puts "Processing
2190: 20 24 69 6e 66 69 6c 65 22 0a 20 20 73 65 74 20   $infile".  set 
21a0: 66 64 20 5b 6f 70 65 6e 20 24 69 6e 66 69 6c 65  fd [open $infile
21b0: 20 72 5d 0a 20 20 73 65 74 20 69 6e 20 5b 72 65   r].  set in [re
21c0: 61 64 20 24 66 64 5d 0a 20 20 63 6c 6f 73 65 20  ad $fd].  close 
21d0: 24 66 64 0a 20 20 73 65 74 20 6f 75 74 66 69 6c  $fd.  set outfil
21e0: 65 20 5b 66 69 6c 65 20 72 6f 6f 74 20 5b 66 69  e [file root [fi
21f0: 6c 65 20 74 61 69 6c 20 24 69 6e 66 69 6c 65 5d  le tail $infile]
2200: 5d 2e 68 74 6d 6c 0a 20 20 70 72 6f 63 65 73 73  ].html.  process
2210: 5f 69 6e 66 69 6c 65 20 24 69 6e 20 24 69 6e 66  _infile $in $inf
2220: 69 6c 65 20 24 6f 75 74 66 69 6c 65 0a 7d 0a 0a  ile $outfile.}..
2230: 70 72 6f 63 65 73 73 5f 69 6e 66 69 6c 65 20 5b  process_infile [
2240: 63 72 65 61 74 65 5f 73 69 74 65 6d 61 70 5d 20  create_sitemap] 
2250: 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 20 73 69  [info script] si
2260: 74 65 6d 61 70 2e 68 74 6d 6c 0a 0a              temap.html..