Artifact 470a71c4d1eb1fe5696c53095ca7e547367eacb8
File tools/cvs2fossil/lib/misc.tcl part of check-in [7208c7ac4d] - Changes to cvs2fossil to import tcllib CVS into fossil on Win32* using ::file instead of file in snit methods to get the core file command * taking care of files that only differ in case in the Attic and the repo on case insensitive FS * passing platform specific
by mjanssen on 2008-01-28 23:57:27.
## -*- tcl -*- # # ## ### ##### ######## ############# ##################### ## Copyright (c) 2007 Andreas Kupries. # # This software is licensed as described in the file LICENSE, which # you should have received as part of this distribution. # # This software consists of voluntary contributions made by many # individuals. For exact contribution history, see the revision # history and logs, available at http://fossil-scm.hwaci.com/fossil # # ## ### ##### ######## ############# ##################### ## Utilities for various things: text formatting, max, ... # # ## ### ##### ######## ############# ##################### ## Requirements package require Tcl 8.4 ; # Required runtime # # ## ### ##### ######## ############# ##################### ## namespace eval ::vc::tools::misc { # # ## ### ##### ######## ############# ## Public API, Methods # Choose singular vs plural forms of a word based on a number. proc sp {n singular {plural {}}} { if {$n == 1} {return $singular} if {$plural eq ""} {set plural ${singular}s} return $plural } # As above, with the number automatically put in front of the # string. proc nsp {n singular {plural {}}} { return "$n [sp $n $singular $plural]" } # Find maximum/minimum in a list. proc max {list} { set max -1 foreach e $list { if {$e < $max} continue set max $e } return $max } proc min {list} { set min {} foreach e $list { if {$min == {}} { set min $e } elseif {$e > $min} continue set min $e } return $min } proc max2 {a b} { if {$a > $b} { return $a } return $b } proc min2 {a b} { if {$a < $b} { return $a } return $b } proc ldelete {lv item} { upvar 1 $lv list set pos [lsearch -exact $list $item] if {$pos < 0} return set list [lreplace $list $pos $pos] return } # Delete item from list by name proc striptrailingslash {path} { # split and rejoin gets rid of a traling / character. return [eval [linsert [file split $path] 0 ::file join]] } # # ## ### ##### ######## ############# } namespace eval ::vc::tools::misc { namespace export sp nsp max min max2 min2 ldelete striptrailingslash } # ----------------------------------------------------------------------------- # Ready package provide vc::tools::misc 1.0 return