Documentation Source Text

Hex Artifact Content
Login

Artifact e741e0852375d93bb39ddfd2208c8961ec79b8bb:


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 3c 2f 73 74 79 6c 65 3e 0a 20 20 20 20 3c 6d   </style>.    <m
0fb0: 65 74 61 20 68 74 74 70 2d 65 71 75 69 76 3d 22  eta http-equiv="
0fc0: 63 6f 6e 74 65 6e 74 2d 74 79 70 65 22 20 63 6f  content-type" co
0fd0: 6e 74 65 6e 74 3d 22 74 65 78 74 2f 68 74 6d 6c  ntent="text/html
0fe0: 3b 20 63 68 61 72 73 65 74 3d 55 54 46 2d 38 22  ; charset=UTF-8"
0ff0: 3e 0a 0a 20 20 20 20 3c 73 63 72 69 70 74 20 74  >..    <script t
1000: 79 70 65 3d 22 74 65 78 74 2f 6a 61 76 61 73 63  ype="text/javasc
1010: 72 69 70 74 22 3e 0a 0a 20 20 20 20 20 20 76 61  ript">..      va
1020: 72 20 63 75 72 72 65 6e 74 5f 6d 65 6e 75 5f 69  r current_menu_i
1030: 64 20 3d 20 6e 75 6c 6c 0a 20 20 20 20 20 20 76  d = null.      v
1040: 61 72 20 63 75 72 72 65 6e 74 5f 74 69 6d 65 6f  ar current_timeo
1050: 75 74 20 3d 20 6e 75 6c 6c 0a 0a 20 20 20 20 20  ut = null..     
1060: 20 66 75 6e 63 74 69 6f 6e 20 6d 65 6e 75 5f 6d   function menu_m
1070: 6f 75 73 65 6f 76 65 72 20 28 29 20 7b 0a 20 20  ouseover () {.  
1080: 20 20 20 20 20 20 6d 65 6e 75 5f 6d 6f 75 73 65        menu_mouse
1090: 6f 75 74 5f 64 65 6c 61 79 65 64 28 29 0a 20 20  out_delayed().  
10a0: 20 20 20 20 20 20 74 68 69 73 2e 63 6c 61 73 73        this.class
10b0: 4e 61 6d 65 20 2b 3d 20 22 20 6f 76 65 72 22 0a  Name += " over".
10c0: 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f          current_
10d0: 6d 65 6e 75 5f 69 64 20 3d 20 74 68 69 73 2e 69  menu_id = this.i
10e0: 64 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20  d.      }.      
10f0: 66 75 6e 63 74 69 6f 6e 20 6d 65 6e 75 5f 6d 6f  function menu_mo
1100: 75 73 65 6f 75 74 20 28 29 20 7b 0a 20 20 20 20  useout () {.    
1110: 20 20 20 20 63 75 72 72 65 6e 74 5f 74 69 6d 65      current_time
1120: 6f 75 74 20 3d 20 77 69 6e 64 6f 77 2e 73 65 74  out = window.set
1130: 54 69 6d 65 6f 75 74 28 27 6d 65 6e 75 5f 6d 6f  Timeout('menu_mo
1140: 75 73 65 6f 75 74 5f 64 65 6c 61 79 65 64 28 29  useout_delayed()
1150: 27 2c 20 35 30 30 29 0a 20 20 20 20 20 20 7d 0a  ', 500).      }.
1160: 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6d        function m
1170: 65 6e 75 5f 6d 6f 75 73 65 6f 75 74 5f 64 65 6c  enu_mouseout_del
1180: 61 79 65 64 20 28 69 64 29 20 7b 0a 20 20 20 20  ayed (id) {.    
1190: 20 20 20 20 76 61 72 20 65 6c 65 6d 20 3d 20 64      var elem = d
11a0: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
11b0: 6e 74 42 79 49 64 28 63 75 72 72 65 6e 74 5f 6d  ntById(current_m
11c0: 65 6e 75 5f 69 64 29 0a 20 20 20 20 20 20 20 20  enu_id).        
11d0: 69 66 20 28 65 6c 65 6d 29 20 7b 0a 20 20 20 20  if (elem) {.    
11e0: 20 20 20 20 20 20 65 6c 65 6d 2e 63 6c 61 73 73        elem.class
11f0: 4e 61 6d 65 20 3d 20 65 6c 65 6d 2e 63 6c 61 73  Name = elem.clas
1200: 73 4e 61 6d 65 2e 72 65 70 6c 61 63 65 28 22 20  sName.replace(" 
1210: 6f 76 65 72 22 2c 20 22 22 29 0a 20 20 20 20 20  over", "").     
1220: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20     }.        if 
1230: 28 63 75 72 72 65 6e 74 5f 74 69 6d 65 6f 75 74  (current_timeout
1240: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 77 69  ) {.          wi
1250: 6e 64 6f 77 2e 63 6c 65 61 72 54 69 6d 65 6f 75  ndow.clearTimeou
1260: 74 28 63 75 72 72 65 6e 74 5f 74 69 6d 65 6f 75  t(current_timeou
1270: 74 29 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  t).        }.   
1280: 20 20 20 20 20 63 75 72 72 65 6e 74 5f 6d 65 6e       current_men
1290: 75 5f 69 64 20 3d 20 6e 75 6c 6c 0a 20 20 20 20  u_id = null.    
12a0: 20 20 20 20 63 75 72 72 65 6e 74 5f 74 69 6d 65      current_time
12b0: 6f 75 74 20 3d 20 6e 75 6c 6c 0a 20 20 20 20 20  out = null.     
12c0: 20 7d 0a 0a 20 20 20 20 20 20 77 69 6e 64 6f 77   }..      window
12d0: 2e 6f 6e 6c 6f 61 64 20 3d 20 66 75 6e 63 74 69  .onload = functi
12e0: 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 20 20 76  on() {.        v
12f0: 61 72 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 3d 20  ar collection = 
1300: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
1310: 65 6e 74 73 42 79 54 61 67 4e 61 6d 65 28 22 64  entsByTagName("d
1320: 69 76 22 29 0a 20 20 20 20 20 20 20 20 76 61 72  iv").        var
1330: 20 69 69 0a 20 20 20 20 20 20 20 20 66 6f 72 20   ii.        for 
1340: 28 69 69 20 3d 20 30 3b 20 69 69 20 3c 20 63 6f  (ii = 0; ii < co
1350: 6c 6c 65 63 74 69 6f 6e 2e 6c 65 6e 67 74 68 3b  llection.length;
1360: 20 69 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20   ii++) {.       
1370: 20 20 20 76 61 72 20 73 70 61 6e 20 3d 20 63 6f     var span = co
1380: 6c 6c 65 63 74 69 6f 6e 2e 69 74 65 6d 28 69 69  llection.item(ii
1390: 29 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ).          if (
13a0: 73 70 61 6e 2e 63 6c 61 73 73 4e 61 6d 65 20 3d  span.className =
13b0: 3d 20 22 6d 65 6e 75 22 29 20 7b 0a 20 20 20 20  = "menu") {.    
13c0: 20 20 20 20 20 20 20 20 73 70 61 6e 2e 6f 6e 6d          span.onm
13d0: 6f 75 73 65 6f 76 65 72 20 3d 20 6d 65 6e 75 5f  ouseover = menu_
13e0: 6d 6f 75 73 65 6f 76 65 72 0a 20 20 20 20 20 20  mouseover.      
13f0: 20 20 20 20 20 20 73 70 61 6e 2e 6f 6e 6d 6f 75        span.onmou
1400: 73 65 6f 75 74 20 20 3d 20 6d 65 6e 75 5f 6d 6f  seout  = menu_mo
1410: 75 73 65 6f 75 74 0a 20 20 20 20 20 20 20 20 20  useout.         
1420: 20 20 20 73 70 61 6e 2e 69 64 20 20 3d 20 22 6d     span.id  = "m
1430: 65 6e 75 22 20 2b 20 69 69 0a 20 20 20 20 20 20  enu" + ii.      
1440: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a      }.        }.
1450: 20 20 20 20 20 20 7d 0a 20 20 20 20 3c 2f 73 63        }.    </sc
1460: 72 69 70 74 3e 0a 20 20 7d 0a 20 20 70 75 74 73  ript>.  }.  puts
1470: 20 7b 3c 2f 68 65 61 64 3e 7d 0a 20 20 70 75 74   {</head>}.  put
1480: 73 69 6e 34 20 7b 3c 62 6f 64 79 3e 0a 20 20 20  sin4 {<body>.   
1490: 20 3c 64 69 76 3e 3c 21 2d 2d 20 63 6f 6e 74 61   <div><!-- conta
14a0: 69 6e 65 72 20 64 69 76 20 74 6f 20 73 61 74 69  iner div to sati
14b0: 73 66 79 20 76 61 6c 69 64 61 74 6f 72 20 2d 2d  sfy validator --
14c0: 3e 0a 20 20 20 20 0a 20 20 20 20 3c 61 20 68 72  >.    .    <a hr
14d0: 65 66 3d 22 24 7b 70 61 74 68 7d 69 6e 64 65 78  ef="${path}index
14e0: 2e 68 74 6d 6c 22 3e 0a 20 20 20 20 3c 69 6d 67  .html">.    <img
14f0: 20 63 6c 61 73 73 3d 22 6c 6f 67 6f 22 20 73 72   class="logo" sr
1500: 63 3d 22 24 7b 70 61 74 68 7d 69 6d 61 67 65 73  c="${path}images
1510: 2f 53 51 4c 69 74 65 2e 67 69 66 22 20 61 6c 74  /SQLite.gif" alt
1520: 3d 22 53 51 4c 69 74 65 20 4c 6f 67 6f 22 0a 20  ="SQLite Logo". 
1530: 20 20 20 20 62 6f 72 64 65 72 3d 22 30 22 3e 3c      border="0"><
1540: 2f 61 3e 0a 20 20 20 20 3c 64 69 76 3e 3c 21 2d  /a>.    <div><!-
1550: 2d 20 49 45 20 68 61 63 6b 20 74 6f 20 70 72 65  - IE hack to pre
1560: 76 65 6e 74 20 64 69 73 61 70 70 65 61 72 69 6e  vent disappearin
1570: 67 20 6c 6f 67 6f 2d 2d 3e 3c 2f 64 69 76 3e 0a  g logo--></div>.
1580: 20 20 20 20 3c 64 69 76 20 63 6c 61 73 73 3d 22      <div class="
1590: 74 61 67 6c 69 6e 65 22 3e 53 6d 61 6c 6c 2c 20  tagline">Small, 
15a0: 46 61 73 74 2c 20 52 65 6c 69 61 62 6c 65 2e 3c  Fast, Reliable.<
15b0: 62 72 3e 43 68 6f 6f 73 65 20 61 6e 79 20 74 68  br>Choose any th
15c0: 72 65 65 2e 3c 2f 64 69 76 3e 0a 20 20 20 20 3c  ree.</div>.    <
15d0: 74 61 62 6c 65 20 77 69 64 74 68 3d 31 30 30 25  table width=100%
15e0: 20 73 74 79 6c 65 3d 22 63 6c 65 61 72 3a 62 6f   style="clear:bo
15f0: 74 68 22 3e 3c 74 72 3e 3c 74 64 3e 0a 20 20 20  th"><tr><td>.   
1600: 20 20 20 3c 64 69 76 20 63 6c 61 73 73 3d 22 73     <div class="s
1610: 65 22 3e 3c 64 69 76 20 63 6c 61 73 73 3d 22 73  e"><div class="s
1620: 77 22 3e 3c 64 69 76 20 63 6c 61 73 73 3d 22 6e  w"><div class="n
1630: 65 22 3e 3c 64 69 76 20 63 6c 61 73 73 3d 22 6e  e"><div class="n
1640: 77 22 3e 0a 20 20 20 20 20 20 3c 64 69 76 20 63  w">.      <div c
1650: 6c 61 73 73 3d 22 74 6f 6f 6c 62 61 72 22 3e 0a  lass="toolbar">.
1660: 20 20 20 20 20 20 20 20 3c 74 61 62 6c 65 20 73          <table s
1670: 74 79 6c 65 3d 22 6d 61 72 67 69 6e 3a 61 75 74  tyle="margin:aut
1680: 6f 22 3e 3c 74 72 3e 3c 74 64 3e 0a 20 20 7d 0a  o"><tr><td>.  }.
1690: 20 20 63 72 65 61 74 65 5f 6d 65 6e 75 62 61 72    create_menubar
16a0: 20 24 70 61 74 68 0a 20 20 70 75 74 73 69 6e 34   $path.  putsin4
16b0: 20 7b 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e   {.        </tr>
16c0: 3c 2f 74 61 62 6c 65 3e 0a 20 20 20 20 20 20 3c  </table>.      <
16d0: 2f 64 69 76 3e 3c 2f 64 69 76 3e 3c 2f 64 69 76  /div></div></div
16e0: 3e 3c 2f 64 69 76 3e 3c 2f 64 69 76 3e 0a 20 20  ></div></div>.  
16f0: 20 20 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61    </td></tr></ta
1700: 62 6c 65 3e 0a 20 20 7d 0a 7d 0a 0a 23 20 41 20  ble>.  }.}..# A 
1710: 70 72 6f 63 65 64 75 72 65 20 74 6f 20 77 72 69  procedure to wri
1720: 74 65 20 74 68 65 20 63 6f 6d 6d 6f 6e 20 66 6f  te the common fo
1730: 6f 74 65 72 20 66 6f 75 6e 64 20 61 74 20 74 68  oter found at th
1740: 65 20 62 6f 74 74 6f 6d 20 6f 66 0a 23 20 65 76  e bottom of.# ev
1750: 65 72 79 20 48 54 4d 4c 20 66 69 6c 65 2e 20 20  ery HTML file.  
1760: 24 73 72 63 66 69 6c 65 20 69 73 20 74 68 65 20  $srcfile is the 
1770: 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 69 6c 65  name of the file
1780: 20 74 68 61 74 20 69 73 20 74 68 65 0a 23 20 73   that is the.# s
1790: 6f 75 72 63 65 20 6f 66 20 74 68 65 20 48 54 4d  ource of the HTM
17a0: 4c 20 63 6f 6e 74 65 6e 74 2e 20 20 54 68 65 20  L content.  The 
17b0: 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 74 69 6d  modification tim
17c0: 65 20 6f 66 20 74 68 69 73 20 66 69 6c 65 0a 23  e of this file.#
17d0: 20 69 73 20 75 73 65 64 20 74 6f 20 61 64 64 20   is used to add 
17e0: 74 68 65 20 22 6c 61 73 74 20 6d 6f 64 69 66 69  the "last modifi
17f0: 65 64 20 6f 6e 22 20 6c 69 6e 65 20 61 74 20 74  ed on" line at t
1800: 68 65 20 62 6f 74 74 6f 6d 20 6f 66 20 74 68 65  he bottom of the
1810: 0a 23 20 66 69 6c 65 2e 0a 23 0a 70 72 6f 63 20  .# file..#.proc 
1820: 50 75 74 73 46 6f 6f 74 65 72 20 7b 73 72 63 66  PutsFooter {srcf
1830: 69 6c 65 7d 20 7b 0a 20 20 70 75 74 73 20 7b 3c  ile} {.  puts {<
1840: 68 72 3e 3c 73 6d 61 6c 6c 3e 3c 69 3e 7d 0a 20  hr><small><i>}. 
1850: 20 73 65 74 20 6d 74 69 6d 65 20 5b 66 69 6c 65   set mtime [file
1860: 20 6d 74 69 6d 65 20 24 73 72 63 66 69 6c 65 5d   mtime $srcfile]
1870: 0a 20 20 73 65 74 20 64 61 74 65 20 5b 63 6c 6f  .  set date [clo
1880: 63 6b 20 66 6f 72 6d 61 74 20 24 6d 74 69 6d 65  ck format $mtime
1890: 20 2d 66 6f 72 6d 61 74 20 7b 25 59 2f 25 6d 2f   -format {%Y/%m/
18a0: 25 64 20 25 48 3a 25 4d 3a 25 53 20 55 54 43 7d  %d %H:%M:%S UTC}
18b0: 20 2d 67 6d 74 20 31 5d 0a 20 20 70 75 74 73 20   -gmt 1].  puts 
18c0: 22 54 68 69 73 20 70 61 67 65 20 6c 61 73 74 20  "This page last 
18d0: 6d 6f 64 69 66 69 65 64 20 24 64 61 74 65 22 0a  modified $date".
18e0: 20 20 70 75 74 73 20 7b 3c 2f 69 3e 3c 2f 73 6d    puts {</i></sm
18f0: 61 6c 6c 3e 3c 2f 64 69 76 3e 3c 2f 62 6f 64 79  all></div></body
1900: 3e 3c 2f 68 74 6d 6c 3e 7d 0a 7d 0a 0a 23 20 54  ></html>}.}..# T
1910: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72 6f  he following pro
1920: 63 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e 73  c is used to ens
1930: 75 72 65 20 63 6f 6e 73 69 73 74 65 6e 74 20 66  ure consistent f
1940: 6f 72 6d 61 74 74 69 6e 67 20 69 6e 20 74 68 65  ormatting in the
1950: 20 0a 23 20 48 54 4d 4c 20 67 65 6e 65 72 61 74   .# HTML generat
1960: 65 64 20 62 79 20 6c 61 6e 67 2e 74 63 6c 20 61  ed by lang.tcl a
1970: 6e 64 20 70 72 61 67 6d 61 2e 74 63 6c 2e 0a 23  nd pragma.tcl..#
1980: 0a 70 72 6f 63 20 53 79 6e 74 61 78 20 7b 61 72  .proc Syntax {ar
1990: 67 73 7d 20 7b 0a 20 20 70 75 74 73 20 7b 3c 74  gs} {.  puts {<t
19a0: 61 62 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e 67  able cellpadding
19b0: 3d 22 31 30 22 20 63 6c 61 73 73 3d 70 64 66 5f  ="10" class=pdf_
19c0: 73 79 6e 74 61 78 3e 7d 0a 20 20 66 6f 72 65 61  syntax>}.  forea
19d0: 63 68 20 7b 72 75 6c 65 20 62 6f 64 79 7d 20 24  ch {rule body} $
19e0: 61 72 67 73 20 7b 0a 20 20 20 20 70 75 74 73 20  args {.    puts 
19f0: 22 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 5c  "<tr><td align=\
1a00: 22 72 69 67 68 74 5c 22 20 76 61 6c 69 67 6e 3d  "right\" valign=
1a10: 5c 22 74 6f 70 5c 22 3e 22 0a 20 20 20 20 70 75  \"top\">".    pu
1a20: 74 73 20 22 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c  ts "<i><font col
1a30: 6f 72 3d 5c 22 23 66 66 33 34 33 34 5c 22 3e 24  or=\"#ff3434\">$
1a40: 72 75 6c 65 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e 26  rule</font></i>&
1a50: 6e 62 73 70 3b 3a 3a 3d 3c 2f 74 64 3e 22 0a 20  nbsp;::=</td>". 
1a60: 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 3c     regsub -all <
1a70: 20 24 62 6f 64 79 20 7b 25 4c 54 7d 20 62 6f 64   $body {%LT} bod
1a80: 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c  y.    regsub -al
1a90: 6c 20 3e 20 24 62 6f 64 79 20 7b 25 47 54 7d 20  l > $body {%GT} 
1aa0: 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20  body.    regsub 
1ab0: 2d 61 6c 6c 20 25 4c 54 20 24 62 6f 64 79 20 7b  -all %LT $body {
1ac0: 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 3c 69 3e 3c 66  </font></b><i><f
1ad0: 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 66 66 33 34  ont color="#ff34
1ae0: 33 34 22 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72  34">} body.    r
1af0: 65 67 73 75 62 20 2d 61 6c 6c 20 25 47 54 20 24  egsub -all %GT $
1b00: 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 69  body {</font></i
1b10: 3e 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d  ><b><font color=
1b20: 22 23 32 63 32 63 66 30 22 3e 7d 20 62 6f 64 79  "#2c2cf0">} body
1b30: 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c  .    regsub -all
1b40: 20 7b 5b 5d 7c 5b 2a 3f 5d 7d 20 24 62 6f 64 79   {[]|[*?]} $body
1b50: 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 26 3c 62   {</font></b>&<b
1b60: 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32  ><font color="#2
1b70: 63 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a 20 20  c2cf0">} body.  
1b80: 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c    regsub -all "\
1b90: 6e 22 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20  n" [string trim 
1ba0: 24 62 6f 64 79 5d 20 22 3c 62 72 3e 5c 6e 22 20  $body] "<br>\n" 
1bb0: 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20  body.    regsub 
1bc0: 2d 61 6c 6c 20 22 5c 6e 20 20 2a 22 20 24 62 6f  -all "\n  *" $bo
1bd0: 64 79 20 22 5c 6e 5c 5c 26 6e 62 73 70 3b 5c 5c  dy "\n\\&nbsp;\\
1be0: 26 6e 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 5c 5c  &nbsp;\\&nbsp;\\
1bf0: 26 6e 62 73 70 3b 22 20 62 6f 64 79 0a 20 20 20  &nbsp;" body.   
1c00: 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5b 7c   regsub -all {[|
1c10: 2c 2e 2a 28 29 5d 7d 20 24 62 6f 64 79 20 7b 3c  ,.*()]} $body {<
1c20: 62 69 67 3e 26 3c 2f 62 69 67 3e 7d 20 62 6f 64  big>&</big>} bod
1c30: 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c  y.    regsub -al
1c40: 6c 20 7b 20 3d 20 7d 20 24 62 6f 64 79 20 7b 20  l { = } $body { 
1c50: 3c 62 69 67 3e 3d 3c 2f 62 69 67 3e 20 7d 20 62  <big>=</big> } b
1c60: 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d  ody.    regsub -
1c70: 61 6c 6c 20 7b 53 54 41 52 7d 20 24 62 6f 64 79  all {STAR} $body
1c80: 20 7b 3c 62 69 67 3e 2a 3c 2f 62 69 67 3e 7d 20   {<big>*</big>} 
1c90: 62 6f 64 79 0a 20 20 20 20 23 23 20 54 68 65 73  body.    ## Thes
1ca0: 65 20 6d 65 74 61 63 68 61 72 61 63 74 65 72 73  e metacharacters
1cb0: 20 6d 75 73 74 20 62 65 20 68 61 6e 64 6c 65 64   must be handled
1cc0: 20 74 6f 20 75 6e 64 6f 20 62 65 69 6e 67 0a 20   to undo being. 
1cd0: 20 20 20 23 23 20 74 72 65 61 74 65 64 20 61 73     ## treated as
1ce0: 20 53 51 4c 20 70 75 6e 63 74 75 61 74 69 6f 6e   SQL punctuation
1cf0: 20 63 68 61 72 61 63 74 65 72 73 20 61 62 6f 76   characters abov
1d00: 65 2e 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61  e..    regsub -a
1d10: 6c 6c 20 7b 52 50 50 4c 55 53 7d 20 24 62 6f 64  ll {RPPLUS} $bod
1d20: 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 29 2b  y {</font></b>)+
1d30: 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22  <b><font color="
1d40: 23 32 63 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a  #2c2cf0">} body.
1d50: 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20      regsub -all 
1d60: 7b 4c 50 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f  {LP} $body {</fo
1d70: 6e 74 3e 3c 2f 62 3e 28 3c 62 3e 3c 66 6f 6e 74  nt></b>(<b><font
1d80: 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22   color="#2c2cf0"
1d90: 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73  >} body.    regs
1da0: 75 62 20 2d 61 6c 6c 20 7b 52 50 7d 20 24 62 6f  ub -all {RP} $bo
1db0: 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 29  dy {</font></b>)
1dc0: 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22  <b><font color="
1dd0: 23 32 63 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a  #2c2cf0">} body.
1de0: 20 20 20 20 23 23 20 50 6c 61 63 65 20 74 68 65      ## Place the
1df0: 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20   left-hand side 
1e00: 6f 66 20 74 68 65 20 72 75 6c 65 20 69 6e 20 74  of the rule in t
1e10: 68 65 20 32 6e 64 20 74 61 62 6c 65 20 63 6f 6c  he 2nd table col
1e20: 75 6d 6e 2e 0a 20 20 20 20 70 75 74 73 20 22 3c  umn..    puts "<
1e30: 74 64 3e 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f  td><b><font colo
1e40: 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e 24 62  r=\"#2c2cf0\">$b
1e50: 6f 64 79 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 3c 2f  ody</font></b></
1e60: 74 64 3e 3c 2f 74 72 3e 22 0a 20 20 7d 0a 20 20  td></tr>".  }.  
1e70: 70 75 74 73 20 7b 3c 2f 74 61 62 6c 65 3e 7d 0a  puts {</table>}.
1e80: 7d 0a 0a 70 72 6f 63 20 70 72 6f 63 65 73 73 5f  }..proc process_
1e90: 69 6e 66 69 6c 65 20 7b 69 6e 20 69 6e 66 69 6c  infile {in infil
1ea0: 65 20 6f 75 74 66 69 6c 65 7d 20 7b 0a 20 20 73  e outfile} {.  s
1eb0: 65 74 20 74 69 74 6c 65 20 7b 4e 6f 20 54 69 74  et title {No Tit
1ec0: 6c 65 7d 0a 20 20 72 65 67 65 78 70 20 7b 3c 74  le}.  regexp {<t
1ed0: 69 74 6c 65 3e 28 5b 5e 5c 6e 5d 2a 29 3c 2f 74  itle>([^\n]*)</t
1ee0: 69 74 6c 65 3e 7d 20 24 69 6e 20 61 6c 6c 20 74  itle>} $in all t
1ef0: 69 74 6c 65 0a 20 20 72 65 67 73 75 62 20 7b 3c  itle.  regsub {<
1f00: 74 69 74 6c 65 3e 5b 5e 5c 6e 5d 2a 3c 2f 74 69  title>[^\n]*</ti
1f10: 74 6c 65 3e 7d 20 24 69 6e 20 7b 7d 20 69 6e 0a  tle>} $in {} in.
1f20: 20 20 73 65 74 20 3a 3a 4f 55 54 20 5b 6f 70 65    set ::OUT [ope
1f30: 6e 20 24 3a 3a 44 45 53 54 2f 24 6f 75 74 66 69  n $::DEST/$outfi
1f40: 6c 65 20 77 5d 0a 0a 20 20 73 65 74 20 70 61 74  le w]..  set pat
1f50: 68 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74  h [string repeat
1f60: 20 2e 2e 2f 20 5b 65 78 70 72 20 7b 5b 6c 6c 65   ../ [expr {[lle
1f70: 6e 67 74 68 20 5b 66 69 6c 65 20 73 70 6c 69 74  ngth [file split
1f80: 20 24 6f 75 74 66 69 6c 65 5d 5d 2d 31 7d 5d 5d   $outfile]]-1}]]
1f90: 0a 20 20 50 75 74 73 48 65 61 64 65 72 20 24 74  .  PutsHeader $t
1fa0: 69 74 6c 65 20 24 70 61 74 68 0a 0a 20 20 72 65  itle $path..  re
1fb0: 67 73 75 62 20 2d 61 6c 6c 20 7b 3c 74 63 6c 3e  gsub -all {<tcl>
1fc0: 7d 20 24 69 6e 20 22 5c 31 37 35 3b 20 65 76 61  } $in "\175; eva
1fd0: 6c 20 5c 31 37 33 22 20 69 6e 0a 20 20 72 65 67  l \173" in.  reg
1fe0: 73 75 62 20 2d 61 6c 6c 20 7b 3c 2f 74 63 6c 3e  sub -all {</tcl>
1ff0: 7d 20 24 69 6e 20 22 5c 31 37 35 3b 20 70 75 74  } $in "\175; put
2000: 73 20 5c 31 37 33 22 20 69 6e 0a 20 20 75 70 6c  s \173" in.  upl
2010: 65 76 65 6c 20 23 30 20 22 70 75 74 73 20 5c 31  evel #0 "puts \1
2020: 37 33 24 69 6e 5c 31 37 35 22 0a 20 20 63 64 20  73$in\175".  cd 
2030: 24 3a 3a 48 4f 4d 45 44 49 52 0a 20 20 50 75 74  $::HOMEDIR.  Put
2040: 73 46 6f 6f 74 65 72 20 24 69 6e 66 69 6c 65 0a  sFooter $infile.
2050: 20 20 63 6c 6f 73 65 20 24 3a 3a 4f 55 54 0a 7d    close $::OUT.}
2060: 0a 0a 23 20 4c 6f 6f 70 20 6f 76 65 72 20 61 6c  ..# Loop over al
2070: 6c 20 69 6e 70 75 74 20 66 69 6c 65 73 20 61 6e  l input files an
2080: 64 20 70 72 6f 63 65 73 73 20 74 68 65 6d 20 6f  d process them o
2090: 6e 65 20 62 79 20 6f 6e 65 0a 23 0a 66 6f 72 65  ne by one.#.fore
20a0: 61 63 68 20 69 6e 66 69 6c 65 20 5b 6c 72 61 6e  ach infile [lran
20b0: 67 65 20 24 61 72 67 76 20 33 20 65 6e 64 5d 20  ge $argv 3 end] 
20c0: 7b 0a 20 20 63 64 20 24 48 4f 4d 45 44 49 52 0a  {.  cd $HOMEDIR.
20d0: 20 20 72 65 61 6c 5f 70 75 74 73 20 22 50 72 6f    real_puts "Pro
20e0: 63 65 73 73 69 6e 67 20 24 69 6e 66 69 6c 65 22  cessing $infile"
20f0: 0a 20 20 73 65 74 20 66 64 20 5b 6f 70 65 6e 20  .  set fd [open 
2100: 24 69 6e 66 69 6c 65 20 72 5d 0a 20 20 73 65 74  $infile r].  set
2110: 20 69 6e 20 5b 72 65 61 64 20 24 66 64 5d 0a 20   in [read $fd]. 
2120: 20 63 6c 6f 73 65 20 24 66 64 0a 20 20 73 65 74   close $fd.  set
2130: 20 6f 75 74 66 69 6c 65 20 5b 66 69 6c 65 20 72   outfile [file r
2140: 6f 6f 74 20 5b 66 69 6c 65 20 74 61 69 6c 20 24  oot [file tail $
2150: 69 6e 66 69 6c 65 5d 5d 2e 68 74 6d 6c 0a 20 20  infile]].html.  
2160: 70 72 6f 63 65 73 73 5f 69 6e 66 69 6c 65 20 24  process_infile $
2170: 69 6e 20 24 69 6e 66 69 6c 65 20 24 6f 75 74 66  in $infile $outf
2180: 69 6c 65 0a 7d 0a 0a 70 72 6f 63 65 73 73 5f 69  ile.}..process_i
2190: 6e 66 69 6c 65 20 5b 63 72 65 61 74 65 5f 73 69  nfile [create_si
21a0: 74 65 6d 61 70 5d 20 5b 69 6e 66 6f 20 73 63 72  temap] [info scr
21b0: 69 70 74 5d 20 73 69 74 65 6d 61 70 2e 68 74 6d  ipt] sitemap.htm
21c0: 6c 0a 0a                                         l..