X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fcharconv.tcl;h=f43c8152eaadaa6d19077844a299e16bf9b36ba5;hp=45f6e13336a98548db85a9c5fada13b0f9ed78cd;hb=8626b7019b5d3d9c9594f20025e97d06a2d590fc;hpb=39d32c922161800240dfcfb2b833e55872dfb2ee diff --git a/src/charconv.tcl b/src/charconv.tcl index 45f6e13..f43c815 100755 --- a/src/charconv.tcl +++ b/src/charconv.tcl @@ -2,7 +2,7 @@ # the next line restats using tclsh \ exec tclsh "$0" "$@" # -# $Id: charconv.tcl,v 1.11 2006-02-23 13:15:43 adam Exp $ +# $Id: charconv.tcl,v 1.12 2006-04-19 23:15:39 adam Exp $ proc usage {} { puts {charconv.tcl: [-p prefix] [-s split] [-o ofile] file ... } @@ -255,11 +255,12 @@ proc dump_trie {ofilehandle} { " } -proc readfile {fname ofilehandle prefix omits} { +proc readfile {fname ofilehandle prefix omits reverse} { global trie set marc_lines 0 set ucs_lines 0 + set utf_lines 0 set codename_lines 0 set lineno 0 set f [open $fname r] @@ -290,12 +291,21 @@ proc readfile {fname ofilehandle prefix omits} { } } elseif {[regexp {} $line s]} { if {[string length $ucs]} { - for {set i 0} {$i < [string length $marc]} {incr i 2} { - lappend hex [string range $marc $i [expr $i+1]] + if {$reverse} { + for {set i 0} {$i < [string length $utf]} {incr i 2} { + lappend hex [string range $utf $i [expr $i+1]] + } + # puts "ins_trie $hex $marc + ins_trie $hex $marc $combining $codename + unset hex + } else { + for {set i 0} {$i < [string length $marc]} {incr i 2} { + lappend hex [string range $marc $i [expr $i+1]] + } + # puts "ins_trie $hex $ucs" + ins_trie $hex $ucs $combining $codename + unset hex } - # puts "ins_trie $hex $ucs" - ins_trie $hex $ucs $combining $codename - unset hex } set marc {} set uni {} @@ -319,6 +329,8 @@ proc readfile {fname ofilehandle prefix omits} { set combining 1 } elseif {[regexp {([0-9A-Fa-f]*)} $line s ucs]} { incr ucs_lines + } elseif {[regexp {([0-9A-Fa-f]*)} $line s utf]} { + incr utf_lines } } close $f @@ -328,6 +340,7 @@ set verbose 0 set ifile {} set ofile out.c set prefix {c} +set reverse_map 0 # Parse command line set l [llength $argv] set i 0 @@ -362,6 +375,9 @@ while {$i < $l} { } lappend omits $arg } + -r { + set reverse_map 1 + } default { lappend ifiles $arg } @@ -377,7 +393,7 @@ set ofilehandle [open $ofile w] preamble_trie $ofilehandle foreach ifile $ifiles { - readfile $ifile $ofilehandle $prefix $omits + readfile $ifile $ofilehandle $prefix $omits $reverse_map } close $ofilehandle