Annotation For lib/minirivet/minirivet.tcl

Origin for each line in lib/minirivet/minirivet.tcl from check-in f09ab16ca1:

47dcf5fc27 2019-05-01    1: #! /usr/bin/env tclsh
47dcf5fc27 2019-05-01    2: 
47dcf5fc27 2019-05-01    3: namespace eval ::minirivet {}
47dcf5fc27 2019-05-01    4: 
f09ab16ca1 2019-05-08    5: proc ::minirivet::parseStringToCode {string} {
47dcf5fc27 2019-05-01    6: 	set fixMap [list]
47dcf5fc27 2019-05-01    7: 	foreach char [list "\{" "\}" "\\"] {
47dcf5fc27 2019-05-01    8: 		lappend fixMap $char "\}; puts -nonewline \"\\$char\"; puts -nonewline \{"
47dcf5fc27 2019-05-01    9: 	}
47dcf5fc27 2019-05-01   10: 
47dcf5fc27 2019-05-01   11: 	set code ""
47dcf5fc27 2019-05-01   12: 	while {$string ne ""} {
47dcf5fc27 2019-05-01   13: 		set endIndex [string first "<?" $string]
47dcf5fc27 2019-05-01   14: 		if {$endIndex == -1} {
47dcf5fc27 2019-05-01   15: 			set endIndex [expr {[string length $string] + 1}]
47dcf5fc27 2019-05-01   16: 		}
47dcf5fc27 2019-05-01   17: 
47dcf5fc27 2019-05-01   18: 
47dcf5fc27 2019-05-01   19: 		append code "puts -nonewline \{" [string map $fixMap [string range $string 0 $endIndex-1]] "\}; "
47dcf5fc27 2019-05-01   20: 		set string [string range $string $endIndex end]
47dcf5fc27 2019-05-01   21: 		set endIndex [string first "?>" $string]
47dcf5fc27 2019-05-01   22: 		if {$endIndex == -1} {
47dcf5fc27 2019-05-01   23: 			set endIndex [expr {[string length $string] + 1}]
47dcf5fc27 2019-05-01   24: 		}
47dcf5fc27 2019-05-01   25: 
47dcf5fc27 2019-05-01   26: 		set work [string range $string 0 2]
47dcf5fc27 2019-05-01   27: 		if {$work eq "<?="} {
47dcf5fc27 2019-05-01   28: 			set startIndex 3
47dcf5fc27 2019-05-01   29: 			append code "puts -nonewline [string trim [string range $string 3 $endIndex-1]]; "
47dcf5fc27 2019-05-01   30: 		} else {
47dcf5fc27 2019-05-01   31: 			append code [string range $string 2 $endIndex-1] "\n"
47dcf5fc27 2019-05-01   32: 		}
47dcf5fc27 2019-05-01   33: 
47dcf5fc27 2019-05-01   34: 		set string [string range $string $endIndex+2 end]
47dcf5fc27 2019-05-01   35: 
47dcf5fc27 2019-05-01   36: 
47dcf5fc27 2019-05-01   37: 	}
47dcf5fc27 2019-05-01   38: 
f09ab16ca1 2019-05-08   39: 	return $code
f09ab16ca1 2019-05-08   40: }
f09ab16ca1 2019-05-08   41: 
f09ab16ca1 2019-05-08   42: proc ::minirivet::parseString {string} {
f09ab16ca1 2019-05-08   43: 	set code [parseStringToCode $string]
47dcf5fc27 2019-05-01   44: 	tailcall namespace eval ::request $code
47dcf5fc27 2019-05-01   45: }
47dcf5fc27 2019-05-01   46: 
47dcf5fc27 2019-05-01   47: proc ::minirivet::parse {file} {
47dcf5fc27 2019-05-01   48: 	set fd [open $file]
47dcf5fc27 2019-05-01   49: 	set data [read $fd]
47dcf5fc27 2019-05-01   50: 	close $fd
47dcf5fc27 2019-05-01   51: 	tailcall parseString $data
47dcf5fc27 2019-05-01   52: }
47dcf5fc27 2019-05-01   53: 
47dcf5fc27 2019-05-01   54: package provide minirivet 1