After at least a week, I have finally made enough progress on a script I am working on that categorizes items. It's not finished, and the code thus far is clunky and could maybe use some cleaning up, but here's my progress thus far:
So the script now knows which parts of the string belong under which categories. You pass along a string to be categorized for "theString," and a list of the categories for "theCategories." Now I just need it to apply that knowledge to the task at hand.Code:on indexesOf(theSubstring, theString) set oldDelims to AppleScript's text item delimiters set AppleScript's text item delimiters to theSubstring set stringList to every text item of theString set AppleScript's text item delimiters to oldDelims set theIndex to 1 set theIndexes to {} repeat with X from 2 to count of stringList set theIndex to theIndex + (length of item (X - 1) of stringList) if (X > 2) then set theIndex to theIndex + (length of theSubstring) end if copy theIndex to end of theIndexes end repeat return theIndexes end indexesOf on separateItemsIntoCategories(theContent, theCategories, categoryID, contentOrganized, splitStringDelimiter) try set oldDelims to AppleScript's text item delimiters -- Separate the items set theDelims to {} repeat with X from 1 to count of theCategories set delim to "" set delim to (item X of theCategories) & categoryID copy delim to end of theDelims end repeat set AppleScript's text item delimiters to theDelims set splitContent to every text item of theContent set currentIndex to 1 set categorizedContent to {} set categoryNames to {} set categoryContent to {} if (contentOrganized is false) then -- Content is not organized. set theString to "" set categoryNameBeforeContent to true try repeat with X from 1 to length of splitContent get item X of theDelims end repeat on error errMsg set categoryNameBeforeContent to false end try set categoryIndexes to {} repeat with X from 1 to length of theCategories set theIndexes to indexesOf(item X of theCategories, theContent) copy theIndexes to end of categoryIndexes copy item X of theCategories to end of categoryNames end repeat set expandedIndexes to {} set expandedCategories to {} repeat with X from 1 to count of categoryIndexes set theIndexes to item X of categoryIndexes repeat with I from 1 to count of theIndexes copy item I of theIndexes to end of expandedIndexes copy item X of theCategories & categoryID to end of expandedCategories end repeat end repeat repeat with X from 1 to ((count of splitContent) - 1) set delim to "" if (categoryNameBeforeContent is false) then set theString to theString & item X of splitContent end if repeat with I from 1 to count of expandedIndexes log "expandedIndexes item I: " & item I of expandedIndexes if (item I of expandedIndexes is ((length of theString) + 1)) then set delim to item I of expandedCategories end if end repeat if (categoryNameBeforeContent is true) then log item X of splitContent set theString to theString & delim & item X of splitContent else set theString to theString & delim end if set comparisonString to "" repeat with Y from 1 to count of theCategories set comparisonString to item Y of theCategories & categoryID log "comparison string: " & comparisonString if (comparisonString is delim) then exit repeat end if end repeat log "category is " & item Y of theCategories log "length of theString: " & length of theString log theString end repeat log X end if set AppleScript's text item delimiters to oldDelims return categorizedContent on error errMsg log ("Error in separateItemsIntoCategories: " & errMsg) end try end separateItemsIntoCategories


Reply With Quote