diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2016-10-27 19:01:15 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2016-10-27 19:01:15 (GMT) |
commit | 12166aa342f7c8d905097e43a1f50e0775503069 (patch) | |
tree | 73a6e7296fbf9898633a02c2503a3e959789d8c3 /ds9/util | |
parent | d4d595fa7fb12903db9227d33d48b2b00120dbd1 (diff) | |
download | blt-12166aa342f7c8d905097e43a1f50e0775503069.zip blt-12166aa342f7c8d905097e43a1f50e0775503069.tar.gz blt-12166aa342f7c8d905097e43a1f50e0775503069.tar.bz2 |
Initial commit
Diffstat (limited to 'ds9/util')
-rw-r--r-- | ds9/util/mergedict.tcl | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/ds9/util/mergedict.tcl b/ds9/util/mergedict.tcl new file mode 100644 index 0000000..47a7c08 --- /dev/null +++ b/ds9/util/mergedict.tcl @@ -0,0 +1,68 @@ +# usage: mergedict <##> + +set mm [lindex $argv 0] +set enc [lindex $argv 1] +set fn "msgs/${mm}.msg" + +# read in original msg file +if {[catch {open $fn r} id]} { + puts "Error: can't open $fn for reading" + return +} +fconfigure $id -encoding $enc + +set orgmsg {} +while {[gets $id line] >= 0} { + lappend orgmsg $line +} +set orgmsg [lsort -unique $orgmsg] +catch {close $id} + +# read current msgs +set curmsg {} +while {[gets stdin line] >= 0} { + set exp {.*msgcat::mc {([^\}]*)}} + if [regexp $exp $line foo aa] { + lappend curmsg "::msgcat::mcset $mm {$aa} " + } +} +set curmsg [lsort -unique $curmsg] + +# now merge original against current +set mermsg {} +foreach ll $curmsg { + set ii [lsearch -glob $orgmsg "$ll*"] + if {$ii != -1} { + lappend mermsg [lindex $orgmsg $ii] + } else { + lappend mermsg $ll + } +} +set mermsg [lsort -unique $mermsg] + +# now find unused entries in original +foreach ll $orgmsg { + set ii [lsearch -exact $mermsg $ll] + + if {$ii == -1} { + if {[string range $ll 0 0] != {#}} { + lappend mermsg "# $ll" + } else { + lappend mermsg "$ll" + } + } +} +set mermsg [lsort -unique $mermsg] + +# write new msg file +if {[catch {open $fn w} id]} { + puts "Error: can't open $fn for writing" + return +} +fconfigure $id -encoding $enc + +foreach ll $mermsg { + puts $id $ll +} + +catch {close $id} |