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