Wednesday, November 22, 2017

#1 2015-07-19 02:19:51 pm

artphotodude
Member
Registered: 2012-10-15
Posts: 45

Quick Alphabetical

Here is a very quick little script to enable ultra-fast alphabetical sorts of text-lists, Stickies or whatever.  As stated below, it is recommended as a keyboard shortcut service.  One simply copies the list to be sorted, and then engages the script.  Once done, a dialog displays the finished sort, which is automatically put on the clipboard - that can next be pasted right-over the (theoretically still selected list) on the original document.

Note:  Special-Paste may be required to maintain original style/formatting, as the script strips these away to sort.


Applescript:


----
-- "QuickSort" by Adam Albrec (game_creator@hotmail.com)
-- An Applescript to allow the copying and alphabetizing of lists (Recommended to be used as a Hotkey Service).
----

----
-- Handlers.
----

-- Simple Sort Handler (from [url]http://www.macosxautomation.com/applescript/sbrt/sbrt-05.html)[/url]
on simple_sort(my_list)
   set the index_list to {}
   set the sorted_list to {}
   repeat (the number of items in my_list) times
       set the low_item to ""
       repeat with i from 1 to (number of items in my_list)
           if i is not in the index_list then
               set this_item to item i of my_list as text
               if the low_item is "" then
                   set the low_item to this_item
                   set the low_item_index to i
               else if this_item comes before the low_item then
                   set the low_item to this_item
                   set the low_item_index to i
               end if
           end if
       end repeat
       set the end of sorted_list to the low_item
       set the end of the index_list to the low_item_index
   end repeat
   return the sorted_list
end simple_sort

-- Replace Chars Handler (from [url]http://www.macosxautomation.com/applescript/sbrt/sbrt-05.html)[/url]
on replace_chars(this_text, search_string, replacement_string)
   set AppleScript's text item delimiters to the search_string
   set the item_list to every text item of this_text
   set AppleScript's text item delimiters to the replacement_string
   set this_text to the item_list as string
   set AppleScript's text item delimiters to ""
   return this_text
end replace_chars

----
-- Script.
----

-- Prevents timeout if user walks away during long sort.
with timeout of 86400 seconds
   
   
   -- Brings in text list from clipboard. and removes extra line-breaks if present.
   set incomingList to (the clipboard) as text
   set the incomingList to replace_chars(incomingList, "

"
, "")
   set incomingList to the paragraphs of incomingList as list
   set linebreakCheck to the number of items in incomingList
   set linebreakCheckRun to "1"
   set newBreakFreeList to {}
   repeat linebreakCheck times
       if item linebreakCheckRun of incomingList is not "" then
           set newBreakFreeList's end to item linebreakCheckRun of incomingList
       end if
       set linebreakCheckRun to linebreakCheckRun + 1
   end repeat
   set incomingList to newBreakFreeList
   
   
   -- Sorts items into new alphabetized list and copies it to the clipboard to be pasted in the original's place. Brings up dialog to show completion.
   set the message_text to (simple_sort(the incomingList))
   set the message_text to replace_chars(message_text, ", ", "
"
)
   beep
   set the clipboard to message_text as text
   display dialog " Everything is Sorted-Out!

"
& message_text
   

end timeout

----
-- End of Script.
----

Last edited by artphotodude (2015-07-19 03:08:30 pm)

Offline

 

Board footer

Powered by FluxBB

RSS (new topics) RSS (active topics)