MACSCRPT Archives

September 2008

MACSCRPT@LISTSERV.DARTMOUTH.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
RJay Hansen <[log in to unmask]>
Reply To:
Macintosh Scripting Systems <[log in to unmask]>
Date:
Mon, 22 Sep 2008 09:04:49 -0500
Content-Type:
text/plain
Parts/Attachments:
text/plain (162 lines)
Many thanks to all who answered on this. I'm going with Mark's  
suggestion here which is doing the trick quite nicely.

Thanks,

RJay



On Sep 18, 2008, at 4:21 PM, Mark Lively wrote:

> Another option is with text item delimiters
>
>
> set instring to "This is some _boring_ text"
> set repstring to "EXCELLENT"
> set tid to applescript's text item delimiters
> set applescript's text item delimiters to "_"
> set outtext to text item 1 of instring & repstring & text item 3 of  
> instring
> set applescript's text item delimiters to TID
> outtext
>
> Not exactly what you were looking for but it works.
>
> It can even be expanded.
>
> set instring to "This is some _boring_ text.  With _multiple_  
> replaces."
> set reptext to {"EXCELLENT","no"}
> set tid to applescript's text item delimiters
> set applescript's text item delimiters to "_"
> set itemlist to every text item of instring
> set outtext to ""
> set applescript's text item delimiters to TID
>
> repeat with i from 1 to count itemlist
> 	if i mod 2 = 1 then
> 		set outtext to outtext & item i of itemlist
> 	else
> 		set outtext to outtext & item (i div 2) of reptext
> 	end
> end
>
> furthermore....
>
> set instring to "This is some _boring_ text.  With _multiple_ _out  
> of order_ replaces."
> set reparray to {"out of order", "ordered or unordered", "boring",  
> "EXCELLENT", "multiple", "no"}
> set tid to AppleScript's text item delimiters
> set AppleScript's text item delimiters to "_"
> set itemlist to every text item of instring
> set outtext to ""
> set AppleScript's text item delimiters to tid
>
> repeat with i from 1 to count itemlist
> 	if i mod 2 = 1 then
> 		set outtext to outtext & item i of itemlist
> 	else
> 		repeat with j from 1 to ((count reparray) div 2)
> 			if item (2 * j - 1) of reparray = item i of itemlist then
> 				set outtext to outtext & item (2 * j) of reparray
> 				exit repeat
> 			end if
> 		end repeat
> 	end if
> end repeat
>
> -Mark
> Feeling pedantic and liking it.
>
>
> On Sep 18, 2008, at 4:56 PM, Mark J. Reed wrote:
>
>> Well, there's always the brute force approach:
>>
>> set theText to (text begin through (beginItal-1) of theText) &
>> newString & (text (endItal+1) through end of theText)
>>
>> On Thu, Sep 18, 2008 at 4:19 PM, RJay Hansen  
>> <[log in to unmask]> wrote:
>>> Thanks for the suggestion Mark. Unfortunately, that generates the  
>>> same
>>> error--"Can't set text 23 thru 32 of theText...etc."
>>>
>>> RJay
>>>
>>>
>>> On Sep 18, 2008, at 2:54 PM, Mark J. Reed wrote:
>>>
>>>> If theText is
>>>>
>>>> Here's some text with underscores (_like this_).
>>>>
>>>> Then the first underscore is at text position 36, but is contained
>>>> within word 6.  I'm guessing that beginItal holds the former value,
>>>> not the latter, so you want "set text beginItal thru endItal of
>>>> theText", not "set words ...".  (Setting words would also  
>>>> replace the
>>>> entire words "(_like" and "this_)" rather than leaving the  
>>>> parentheses
>>>> alone.)
>>>>
>>>> On Thu, Sep 18, 2008 at 3:16 PM, RJay Hansen  
>>>> <[log in to unmask]>
>>>> wrote:
>>>>>
>>>>> I'm writing a script that's intended to parse out text that is  
>>>>> enclosed
>>>>> within underscores (_like this_). I'm using Tex-Edit Plus and  
>>>>> Smile.
>>>>>
>>>>> I'm putting text selected in Tex-Edit Plus into a variable then  
>>>>> getting
>>>>> what
>>>>> I need working with the text in the variable. Once I have it, I  
>>>>> want to
>>>>> replace the string surrounded by the underscores (and including  
>>>>> the
>>>>> underscores) with the new string using this:
>>>>>
>>>>> set words beginItal thru endItal of theText to newString
>>>>>
>>>>> beginItal and endItal are the indexes of the underscores.  
>>>>> theText is the
>>>>> variable that the selection from the document is read into and  
>>>>> newString
>>>>> is
>>>>> of course, the replacement string.
>>>>>
>>>>> Smile comes back with "Can't set words 23 thru 32 of theText  
>>>>> (it puts the
>>>>> actual string in the error message/not the variable name as  
>>>>> shown here)
>>>>> to
>>>>> newString (and again, it puts the new string in the error  
>>>>> message, not
>>>>> the
>>>>> variable name)".
>>>>>
>>>>> I haven't been able to figure out why I can't do this. Any help  
>>>>> would be
>>>>> appreciated.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> RJay
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Mark J. Reed <[log in to unmask]>
>>>
>>
>>
>>
>> -- 
>> Mark J. Reed <[log in to unmask]>
>>

ATOM RSS1 RSS2