Version 3 of Capitalize -Create WP formatted title strings on arbitrary strings

Updated 2012-06-27 10:24:46 by RLE

WJG <27/06/12> In a previous post I included an example of how to create formatted title strings using the selection in a Tk text widget. The following example shows how to create formatted titles using arbitrary strings.

#---------------
# test-capitalize.tcl
#---------------
#!/bin/sh
#\
exec tclsh "$0" "$@"

#---------------
# capitalize str1, excepting those words given in str2
#---------------
# args:
#        str1        string to format
#        str2        exceptions list
# returns:
#        Reformatted string

set exceptions "a an and are as at be for had has have have if in is of on or that the this to with you your" 

proc capitalize {str1 str2} {
        
        # parse each word in str1 
        foreach word  $str1 {
                # is it found in the exception list str2, if not capitalize
                if { [string first $word $str2 ] == -1 }  {
                        set word [string totitle $word]
                        } 
                lappend text $word
                }
                
        # make sure initial is always capital
        return [string totitle $text 0 0]
}



# demo --------
puts [capitalize "The development of perfection -the interiorization of buddhist ritual in the eighth and ninth centuries" $exceptions]
puts [capitalize "Vasubandhu's philosophical critique of the vatsiputriya's theory of persons (II)" $exceptions]

# the (II) will not be capitalized, so add this to the exceptions list
lappend exceptions (II)
puts [capitalize "Vasubandhu's philosophical critique of the vatsiputriya's theory of persons (II)" $exceptions]