Function to Upper and Lower Case sentences

Sivakatirswami katir at hindu.org
Wed Dec 21 20:00:05 EST 2011


well I got this far.. in my "hokey-baby" xTalk way of coding...but it 
works well enough to keep one or two donors from "screaming" with all 
caps in their comments... but someone  was entering  dates like this: 
12.21.2012
in his comments my  script munges these to 12212012.. and it doesn't 
deal well with !bangs... but it's good enough to do what I need for now.


on mouseUp
    local tNewSentence

    put the clipboarddata["text"] into tInput
         # I'll change this to input from $POST on the server side 
script later
    set the linedel to "."
    repeat for each line aSentence in tInput

       ## First we lower case all
       # delete space in front first

       repeat until x <> " "

  #I think there is a better trim leading/trailing space function I saw 
years ago...I have it
  # somewhere... one day I will master accessing all my code (ha, good 
luck with that!)

          put char 1 of aSentence into x
          if x = " " then delete char 1 of aSentence
       end repeat
       put toLower(aSentence) into aSentence
       replace "!" with "! " in aSentence

                  # doesn't help unless next word is in my dictionary.
                 # so I need something to "see" exclamation marks as 
delimiters, not sure
                  # how to tackle that if dot is already set as delimiter

   put (toUpper(char 1 of aSentence)) into char 1 of aSentence

# next we set upper case words from our mini-dictionary function...

       Repeat for each word theWord in aSentence
          put capitalizeWords(theWord)  into tWord
          put tWord & space after tNewSentence
       end Repeat
       delete char -1 of tNewSentence
       put tNewSentence &". " after tOutPut
       put empty into tNewSentence

    end repeat
    if char 1 of tOutput = "." then delete char 1 of tOutput
    set the clipboarddata["text"] to tOutput
    put tOutput

end mouseUp

function capitalizeWords theWord
    put "ganesha, pancha, gurudeva!,gurudev!,Satguru, ganapathi, 
ganapati, yogaswami, siva, shiva, muruga, bodhinatha,lord, nataraja, 
aum" into tCapsDictionary

    set the itemdel to comma

    if  tCapsDictionary contains theWord then

       --if theWord is among the items of tCapsDictionary
                 ## doesn't work; dunno why...
                 # so I used "contains"

      put toUpper(char 1 of theWord) into char 1 of theWord
    end if
    return theWord
end capitalizeWords

On 12/21/11 11:46 AM, Bob Sneidar wrote:
> I did something similar recently, where not only was the delimiter important, but preserving the exact delimiter was also important. In my case it was breaking out the parts of a query that might contain AND or OR. What I did was:
>
> replace " AND " with cr&  " AND "&  cr in theList
> replace " OR " with cr&  " OR "&  cr in theList
>
> repeat with theLineCount = 1 to the number of lines of theList step 2
>    put line theLineCount of theList into theLine
>    put line theLineCount +1 into theDelimiter
>    -- do some stuff with whatcha got
>    put theLine&  theDelimiter&  cr after theNewList
> end repeat
>
> You could modify this to deal with a period and a space, a period and a close parens, a period and a character return or a period and anything else that might apply. Just don't append CR for a single period and cr, or you will end up with blank lines that were not there beforehand. Also, now that I think about it, you should probably also replace "..." with an ellipsis before continuing, and any other thing that might come after a period in normal text. You should end up with a list of sentences, and whatever came after them. Also, now that I think about it some more, you should probably replace 2 cr's with some kind of placeholder&  cr before anything else in a repeat loop to account for multiple CR's. That would throw your function out of sync if an extra line showed up anywhere along the way.
>
> Bob
>
>
> On Dec 21, 2011, at 1:02 PM, Sivakatirswami wrote:
>
>> OK yes, Title case is easy... It's sentence case I was looking for because a period/dot is not part of a word. I guess one could use a dot as a line delimiter and then step thru the lines.
>>
>>
>>
>> On 12/21/11 10:57 AM, Bob Sneidar wrote:
>>> On Dec 21, 2011, at 12:43 PM, Sivakatirswami wrote:
>>>
>>>> I have a need to take all caps input  and
>>>>
>>>> 1) Lower case all but first letter of sentences
>>>>
>>>> 2) Upper case words in a small dictionary I will provide to the function.
>>>>
>>>> As anyone cooked up something like this already... if I just had 1) can manage 2)
>>>>
>>>> Happy Holidays!
>>>>
>>>> Om Shanti
>>>> Sivakatirswami
>>>>
>>>> Kauai Aadheenam
>>>>
>>>> __________________________
>>> function titleCase theText, forceIt
>>>      if forceIt is true then
>>>          put tolower(theText) into theText
>>>      end if
>>>
>>>      repeat with theWordNum = 1 to the number of words of theText
>>>          put toupper(char 1 of word theWordNum of theText)&   \
>>>                  char 2 to -1 of word theWordNum of theText \
>>>                  into word theWordNum of theText
>>>      end repeat
>>>
>>>      return theText
>>> end titleCase
>>>
>>>
>>> _______________________________________________
>>>
>>
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>





More information about the use-livecode mailing list