Function to break apart a Long Name?

David Bovill david at openpartenrship.net
Mon Oct 17 11:13:42 EDT 2005


A bit of a hack, but may help?

on deconstruct_Object someObject, @someControl, @cardObject, @stackName
   -- <hack>
   put extract_StackObject(someObject) into stackObject
   put the last word of stackObject into stackName
   delete char 1 of stackName
   delete last char of stackName
   -- put the short name of stackObject into stackName
   -- </hack>

   put "(^.*) of (card .*) of stack" && quote & "(.*)" & quote into  
someReg
   if matchtext(someObject, someReg, someControl, cardObject,  
stackNameBit) is true then
     return stackObject
   else if word 1 of someObject is "stack" then
     put "^stack" && quote & "(.*)" & quote into someReg
     if matchText(someObject, someReg, stackNameBit) is true then
       -- a stack
       put empty into someObject
       put empty into cardObject
       return stackObject
     else
       return "Not a well formed MC object"
     end if
   else if word 1 of someObject is "card" then
     put "(^card .*) of stack" && quote & "(.*)" & quote into someReg
     if matchtext(someObject, someReg, cardObject, stackNameBit) is  
true then
       put empty into someObject
       return stackObject
     else
       return "Not a well formed MC object"
     end if
   else -- it's a group not on a card
     put "(^.*) of stack" && quote & "(.*)" & quote into someReg
     if matchtext(someObject, someReg, someControl, stackNameBit) is  
true then
       put empty into cardObject
       return stackObject
     else
       return "Not a well formed MC object"
     end if
   end if
end deconstruct_Object

function extract_StackObject someObject
   if someObject is empty then put the long name of the target into  
someObject
   setOffsets_StackObject someObject, stackNameStart, stackNameEnd
   return char stackNameStart to stackNameEnd of someObject into  
longStackName
end extract_StackObject

on setOffsets_StackObject someObject, @stackNameStart, @stackNameEnd
   -- hack assumes last char is quote
   put the number of chars of someObject into stackNameEnd
   put "stack" && quote into stackStart
   put offset(stackStart, someObject) into stackNameStart
end setOffsets_StackObject


On 17 Oct 2005, at 17:00, David Burgun wrote:

> Hi,
>
> Does anyone know of a function that will extract name of the  
> Control, Group, Card and Stack from a long name string?
>
> e.g. I have a string of the form:
>
> control "A" of group "B" of card "C" of stack "D"
>
> And I would like to have:
>
> local myControlName  = A
> local myGroupName = B
> local myCardName = C
> local myStackName = D
>
> Any tips of how to write some code to do this would be greatly  
> appreciated if there is not a standard function available.
>
> I haven't used the string function in RunRev much and I'm having  
> difficulty in working out the best way to do this.
>
> Thanks a lot
> All the Best
> Dave
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your  
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
>




More information about the use-livecode mailing list