home *** CD-ROM | disk | FTP | other *** search
/ Practical Programming in Tcl & Tk (4th Edition) / TCLBOOK4.BIN / pc / exsource / 11_9.tcl < prev    next >
Text File  |  2003-04-16  |  897b  |  34 lines

  1. #
  2. # Example 11-9
  3. # Html_Parse.
  4. #
  5.  
  6. proc Html_Parse {html cmd {start {}}} {
  7.  
  8.     # Map braces and backslashes into HTML entities
  9.     regsub -all \{ $html {\&ob;} html
  10.     regsub -all \} $html {\&cb;} html
  11.     regsub -all {\\} $html {\&bsl;} html
  12.  
  13.     # This pattern matches the parts of an HTML tag
  14.     set s" \t\r\n"                    ;# white space
  15.     set exp <(/?)(\[^$s>]+)\[$s]*(\[^>]*)>
  16.  
  17.     # This generates a call to cmd with HTML tag parts
  18.     # \1 is the leading /, if any
  19.     # \2 is the HTML tag name
  20.     # \3 is the parameters to the tag, if any
  21.     # The curly braces at either end group of all the text
  22.     # after the HTML tag, which becomes the last arg to $cmd.
  23.     set sub "\}\n$cmd {\\2} {\\1} {\\3} \{"
  24.     regsub -all $exp $html $sub html
  25.  
  26.     # This balances the curly braces,
  27.     # and calls $cmd with $start as a pseudo-tag 
  28.     # at the beginning and end of the script.
  29.     eval "$cmd {$start} {} {} {$html}"
  30.     eval "$cmd {$start} / {} {}"
  31. }
  32.  
  33.  
  34.