From e6214d130c5fe791d011498fe328ff236aa836fc Mon Sep 17 00:00:00 2001 From: Alexey Glushkov Date: Sun, 6 Jul 2014 18:44:40 +0400 Subject: [PATCH] actions --- EvernoteExport.lbaction/Contents/Info.plist | 45 +++++++ .../Contents/Scripts/default.scpt | Bin 0 -> 3954 bytes EvernoteSearch.lbaction/Contents/Info.plist | 51 ++++++++ .../Contents/Scripts/default.rb | 120 ++++++++++++++++++ .../Contents/Scripts/pick.rb | 21 +++ IrregularVerbs.lbaction/Contents/Info.plist | 51 ++++++++ .../Contents/Scripts/default.rb | 60 +++++++++ .../Contents/Scripts/pick.rb | 18 +++ 8 files changed, 366 insertions(+) create mode 100644 EvernoteExport.lbaction/Contents/Info.plist create mode 100644 EvernoteExport.lbaction/Contents/Scripts/default.scpt create mode 100644 EvernoteSearch.lbaction/Contents/Info.plist create mode 100644 EvernoteSearch.lbaction/Contents/Scripts/default.rb create mode 100644 EvernoteSearch.lbaction/Contents/Scripts/pick.rb create mode 100644 IrregularVerbs.lbaction/Contents/Info.plist create mode 100644 IrregularVerbs.lbaction/Contents/Scripts/default.rb create mode 100644 IrregularVerbs.lbaction/Contents/Scripts/pick.rb diff --git a/EvernoteExport.lbaction/Contents/Info.plist b/EvernoteExport.lbaction/Contents/Info.plist new file mode 100644 index 0000000..c3a0972 --- /dev/null +++ b/EvernoteExport.lbaction/Contents/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleIdentifier + com.alexeyglushkov.LaunchBar.action.EvernoteExport + CFBundleIconFile + + CFBundleName + Evernote Export + CFBundleVersion + 1.0 + LBDebugLogEnabled + + LBScripts + + LBDefaultScript + + LBScriptName + default.scpt + LBRunInBackground + + LBRequiresArgument + + LBReturnsResult + + LBLiveFeedbackEnabled + + + + LBDescription + + LBSummary + Export your evernote notes to be able to look through them by Evernote Search tool + LBAuthor + Glushkov Alexey + LBWebsite + https://medium.com/@sonicCat + LBTwitter + @soniccat + + NSHumanReadableCopyright + Copyright © 2014 Gluhkov Alexey + + diff --git a/EvernoteExport.lbaction/Contents/Scripts/default.scpt b/EvernoteExport.lbaction/Contents/Scripts/default.scpt new file mode 100644 index 0000000000000000000000000000000000000000..ee984165700681f2e31f95a9a9aa95196eab1779 GIT binary patch literal 3954 zcmb_fd303O8UMYP5W;)86T%umY|y6IK(hcgkgBXhk;Osw&BA1umDzi{MRhp)oY^rCb!+7yjU3C@@zvc&s9`vwlIh2GGD8-NRI z74iy@hXA68pcY9K;ddyrue zmv7{2zI}qb8%X2%SvmtofQxN&em9LI&Z_wFivjh3<5xQ+5jF3;Eoj(3ekVdZ4Ev*n=ov0G;GN=;aWyom9H1 z#-Nwa0<|EYx$@a*uwc-$mF-Vm`4lDP=$uNXV@=2L?oW<9Dv&S07b?K#DnNI(v(VcR zJOR40bGCdUhYim51<;uvp~w(O(T;lVi9T{j4jT0F?-ys}W1J%g9KH%mqv85=yk>rV zL#8PM4D)PS6N^U;&S}}98_t!FWWT|=z8GE6O+Iwx!!s1)BNbym#gGHqJEU+>uVzuJ zc0O?B1DJAj$kayXDjR8~`b6QdDxf#pk5Oz0o&w0Oyf6FYJxktKqJ0YQDP=L+Ptey8 zJj&iY<~-Re?;4!vt4e2niV{Qc9H}>T*e`&7dPDmcpue(K(#qO9uDpZ7aya$TbVEGj z-L>YvZ>GI^_Pcs^U$&p2)DVtxxkq-(E=%?((QbuZN?FQQhH^vjDEsirSIFD)mO%xw zW>7qx86f}0Ktqqop2e98y2c=!FFWN;!;T&F<_6*Cs5Au64=ec14p(-dT{)~8m88-a zasUQmZ~%i<$RPz7LJ1?>Zy`B}qS14-1jiZnN)bGE#^8KEwpC&Qs%%t|`Cs4yL-3fd zM5VkT+vRmj-cSj*E4;2^Uch!CE;0l!=2hY%48<@*@WMzXDTZT&AvBMx7y(8Zf+tQT z2Fo^Aww;!DuOtRdJTT6HLc z-#Cmn1TUuq8PzA)m_V{i5HbWWV+1i)UY3{SMMqwyM+c`(x+J|Q5lJ+}!twaRMTula9p1)dwrR57 zV48o(RMg79FdZ`-zI+LziKbNBLrVA-Ppm@@~nxWPX#Tb^TE@-qyy2--JQfLO zV#!3BwFLFBId)L%lLGB;nf}|!>|4lIp2&aSw(M86{kRIpavWg3%R9lFOIb&x_{;ZJ zCvX(;>WU2gIZdZ3qU()f4b!9T)@8@;%sQrwzNFW4EZb$W*5ESVd+JapPsx+=ge6a@ z<2Xj(eqz#lTfcfsk7K2VUtz8xc+N`I$Yb)T ztg+-VC3;k0jZ)5Kn@L2*-IWeQ;mqMl7|dC_J!Q60l&d~FyqgM zo$$tsQG?43!K&c65sPJ|BP)5^CD+CHwXDdJ73u~N z->I*}ALQ?J><1ja{6cqrEIm9Nk51yD-s2a#wf+`Y;`fLJXg9{~x&qYEW+N$9g6TFx z3szH(7~&M7h?Wj>PVK4|F7l{~$jZ?O&bb<{C^c(KTOLq5tx`Qcr0|Hs!#cNGYd{;w z?}#iq{{75+45asimv#YZ?sMcm@*a*hW|H(64M@Ne^1c)rkODlReMk8l7RtSH4_Qsh z-42I8{DomEZvOvp6;d`O(f zGAQ0CH^}vJoh*}UMw0c>NFoze+xj=Oqi1JF zZsh6@C0<8vXkI;8W_0EH6Vj9;*C_|gO^z&MPm_!z*S1M3S#k~MWoh%qC(DKo&E$Km zBUh77|4E+A!3yMV{BciR9<1Qj(7L_F!EK?Eee27D+d~^T**>@ + + + + CFBundleIdentifier + com.alexeyglushkov.LaunchBar.action.EvernoteSearch + CFBundleIconFile + + CFBundleName + Evernote Search + CFBundleVersion + 1.0 + LBTextInputTitle + Options after --:rtm + LBDebugLogEnabled + + LBScripts + + LBDefaultScript + + LBScriptName + default.rb + LBRunInBackground + + LBRequiresArgument + + LBAcceptedArgumentTypes + + string + + LBReturnsResult + + LBLiveFeedbackEnabled + + + + LBDescription + + LBSummary + Search through exported Evernote notes by text + LBAuthor + Glushkov Alexey + LBWebsite + https://medium.com/@sonicCat + LBTwitter + @soniccat + + NSHumanReadableCopyright + Copyright © 2014 Gluhkov Alexey + + diff --git a/EvernoteSearch.lbaction/Contents/Scripts/default.rb b/EvernoteSearch.lbaction/Contents/Scripts/default.rb new file mode 100644 index 0000000..acd1f96 --- /dev/null +++ b/EvernoteSearch.lbaction/Contents/Scripts/default.rb @@ -0,0 +1,120 @@ +#!/usr/bin/env ruby + +require 'json' +require 'CGI' + +#get search folder +homeFolder = `echo ~/` +homeFolder = homeFolder[0..-2] + +exportPath = "" + +containersPath = "#{homeFolder}/Library/Group Containers/" +files = Dir.entries(containersPath) +files.each do |f| + if f.end_with?("com.evernote.Evernote") + exportPath = containersPath + f + "/Evernote/evernoteExport" + end +end + +if exportPath == nil || exportPath.length == 0 + item = {} + item['title'] = "Can't build path to a search folder" + items.push(item) + return item +end + +folderPath = exportPath +searchString = ARGV[0] + +optionIndex = searchString.index('--') +optionsString = "" + +if optionIndex != nil + optionsString = searchString[optionIndex+2..-1] + searchString = searchString[0..optionIndex-1] +end + +$showDebug = optionsString.index('d') != nil + + +#seach +startTime = Time.now +results = [] + + +resultStrings = Dir[folderPath+'/'+'*.html'].inject(Hash.new(0)){ |result, item| result.update(item => File.read(item).scan(/#{searchString}/i).size) } +resultStrings.each do |k, v| + if v > 0 + item = {} + item[:filePath] = k + item[:matches] = v + results << item + end +end + +#p resultStrings + +#p "find \"#{folderPath}\" -name \"*.html\" -exec grep -c \"#{searchString}\" {} +" +#value = `find "#{folderPath}" -name "*.html" -exec grep -c "#{searchString}" {} +` +#resultStrings = value.split("\n") + +#return; + +=begin +resultStrings.each do |str| + + values = str.split(":") + + matches = values[0].to_i + + if matches > 0 + item = {} + item[:filePath] = values[0] + item[:matches] = matches + results << item + end +end +=end + + +#sort by matches count +results = results.sort do |dict1, dict2| + numberOfMatchies1 = dict1[:matches] + numberOfMatchies2 = dict2[:matches] + + numberOfMatchies2 - numberOfMatchies1 +end + +finishTime = Time.now +timeIntervale = finishTime - startTime + +#convert to response +items = [] + +if ($showDebug) + item = {} + item['title'] = "scanning takes #{timeIntervale} seconds" + items.push(item) +end + +results.each do | dict | + + item = {} + item['title'] = File.basename(dict[:filePath]) + item['subtitle'] = dict[:matches].to_s + " matches" + item['path'] = dict[:filePath] + + items.push(item) +end + +if items.count == 0 + item = {} + item['title'] = "no matches" + items.push(item) +end + +puts items.to_json + + + diff --git a/EvernoteSearch.lbaction/Contents/Scripts/pick.rb b/EvernoteSearch.lbaction/Contents/Scripts/pick.rb new file mode 100644 index 0000000..b5d6f77 --- /dev/null +++ b/EvernoteSearch.lbaction/Contents/Scripts/pick.rb @@ -0,0 +1,21 @@ +#!/usr/bin/env ruby + +require 'io/console' +require 'CGI' + + +=begin +str = ARGV[0] +args = str.split("||") + +wordsString = args[0] + ", " + args[1] + ", " + args[2] +selectedIndex = args[3] +selectedWord = args[selectedIndex.to_i] + +#copy selected word +IO.popen('pbcopy', 'w') { |f| f << selectedWord } + +#show all words +wordsString = CGI::escape(wordsString) +value = `open \"x-launchbar:large-type?string=#{wordsString}\"` +=end diff --git a/IrregularVerbs.lbaction/Contents/Info.plist b/IrregularVerbs.lbaction/Contents/Info.plist new file mode 100644 index 0000000..5abf9b9 --- /dev/null +++ b/IrregularVerbs.lbaction/Contents/Info.plist @@ -0,0 +1,51 @@ + + + + + CFBundleIdentifier + com.alexeyglushkov.LaunchBar.action.IrregularVerbs + CFBundleIconFile + + CFBundleName + Irregular Verb List + CFBundleVersion + 1.0 + LBDebugLogEnabled + + LBTextInputTitle + Word: + LBScripts + + LBDefaultScript + + LBScriptName + default.rb + LBRunInBackground + + LBRequiresArgument + + LBAcceptedArgumentTypes + + string + + LBReturnsResult + + LBLiveFeedbackEnabled + + + + LBDescription + + LBSummary + Show all forms of a typed irregular verbs + LBAuthor + Glushkov Alexey + LBWebsite + https://medium.com/@sonicCat + LBTwitter + @soniccat + + NSHumanReadableCopyright + Copyright © 2014 Gluhkov Alexey + + diff --git a/IrregularVerbs.lbaction/Contents/Scripts/default.rb b/IrregularVerbs.lbaction/Contents/Scripts/default.rb new file mode 100644 index 0000000..3b91fd1 --- /dev/null +++ b/IrregularVerbs.lbaction/Contents/Scripts/default.rb @@ -0,0 +1,60 @@ +#!/usr/bin/env ruby + +require 'json' + +$allWords = [["abide", "abided / abode", "abided"],["alight", "alighted / alit", "alighted / alit"],["arise", "arose", "arisen"],["awake", "awakened / awoke", "awakened / awoken"],["backbite", "backbit", "backbitten"],["backslide", "backslid", "backslidden / backslid"],["be [ am, is, are]", "was, were", "been"],["bear", "bore", "born / borne"],["beat", "beat", "beaten / beat"],["become", "became", "become"],["befall", "befell", "befallen"],["beget", "begat / begot", "begotten"],["begin", "began", "begun"],["behold", "beheld", "beheld"],["bend", "bent", "bent"],["bereave", "bereaved / bereft", "bereaved / bereft"],["beseech", "besought / beseeched", "besought / beseeched"],["beset", "beset", "beset"],["bestrew", "bestrewed", "bestrewn / bestrewed"],["bet", "bet / betted", "bet / betted"],["betake", "betook", "betaken"],["bethink", "bethought", "bethought"],["bid (farewell)", "bid / bade", "bidden"],["bid (offer amount)", "bid", "bid"],["bind", "bound", "bound"],["bite", "bit", "bitten"],["bleed", "bled", "bled"],["blow", "blew", "blown"],["break", "broke", "broken"],["breed", "bred", "bred"],["bring", "brought", "brought"],["broadcast", "broadcast / broadcasted", "broadcast / broadcasted"],["browbeat", "browbeat", "browbeaten / browbeat"],["build", "built", "built"],["burn", "burned / burnt", "burned / burnt"],["burst", "burst", "burst"],["bust", "busted / bust", "busted / bust"],["buy", "bought", "bought"],["cast", "cast", "cast"],["catch", "caught", "caught"],["chide", "chided / chid", "chided / chidden"],["choose", "chose", "chosen"],["clap", "clapped / clapt", "clapped / clapt"],["cling", "clung", "clung"],["clothe", "clothed / clad", "clothed / clad"],["colorbreed", "colorbred", "colorbred"],["come", "came", "come"],["cost", "cost", "cost"],["creep", "crept", "crept"],["crossbreed", "crossbred", "crossbred"],["cut", "cut", "cut"],["dare", "dared / durst", "dared / durst"],["daydream", "daydreamed / daydreamt", "daydreamed / daydreamt"],["deal", "dealt", "dealt"],["dig", "dug", "dug"],["dight", "dighted / dight", "dighted / dight"],["disprove", "disproved", "disproved / disproven"],["dive (jump head-first)", "dove / dived", "dived"],["dive (scuba diving)", "dived / dove", "dived"],["do", "did", "done"],["draw", "drew", "drawn"],["dream", "dreamed / dreamt", "dreamed / dreamt"],["drink", "drank", "drunk"],["drive", "drove", "driven"],["dwell", "dwelt / dwelled", "dwelt / dwelled"],["eat", "ate", "eaten"],["enwind", "enwound", "enwound"],["fall", "fell", "fallen"],["feed", "fed", "fed"],["feel", "felt", "felt"],["fight", "fought", "fought"],["find", "found", "found"],["fit (tailor, change size)", "fitted / fit", "fitted / fit"],["fit (be right size)", "fit / fitted", "fit / fitted"],["flee", "fled", "fled"],["fling", "flung", "flung"],["fly", "flew", "flown"],["forbear", "forbore", "forborne"],["forbid", "forbade", "forbidden"],["fordo", "fordid", "fordone"],["forecast", "forecast", "forecast"],["forego (also forgo)", "forewent", "foregone"],["foreknow", "foreknew", "foreknown"],["forerun", "foreran", "forerun"],["foresee", "foresaw", "foreseen"],["foreshow", "foreshowed", "foreshown / foreshowed"],["forespeak", "forespoke", "forespoken"],["foretell", "foretold", "foretold"],["forget", "forgot", "forgotten / forgot"],["forgive", "forgave", "forgiven"],["forsake", "forsook", "forsaken"],["forswear", "forswore", "forsworn"],["fraught", "fraught", "fraught"],["freeze", "froze", "frozen"],["gainsay", "gainsaid", "gainsaid"],["get", "got", "gotten / got"],["gild", "gilded / gilt", "gilded / gilt"],["give", "gave", "given"],["go", "went", "gone"],["grind", "ground", "ground"],["grow", "grew", "grown"],["hagride", "hagrode", "hagridden"],["halterbreak", "halterbroke", "halterbroken"],["hamstring", "hamstrung", "hamstrung"],["hand-feed", "hand-fed", "hand-fed"],["handwrite", "handwrote", "handwritten"],["hang", "hung", "hung"],["hang (kill by hanging)", "hanged / hung", "hanged / hung"],["have", "had", "had"],["hear", "heard", "heard"],["heave", "heaved / hove", "heaved / hove"],["hew", "hewed", "hewn / hewed"],["hide", "hid", "hidden"],["hit", "hit", "hit"],["hold", "held", "held"],["hurt", "hurt", "hurt"],["inbreed", "inbred", "inbred"],["inlay", "inlaid", "inlaid"],["input", "input / inputted", "input / inputted"],["inset", "inset", "inset"],["interbreed", "interbred", "interbred"],["intercut", "intercut", "intercut"],["interlay", "interlaid", "interlaid"],["interset", "interset", "interset"],["interweave", "interwove / interweaved", "interwoven / interweaved"],["interwind", "interwound", "interwound"],["inweave", "inwove / inweaved", "inwoven / inweaved"],["jerry-build", "jerry-built", "jerry-built"],["keep", "kept", "kept"],["kneel", "knelt / kneeled", "knelt / kneeled"],["knit", "knitted / knit", "knitted / knit"],["know", "knew", "known"],["lade", "laded", "laden / laded"],["landslide", "landslid", "landslid"],["lay", "laid", "laid"],["lead", "led", "led"],["lean", "leaned / leant", "leaned / leant"],["leap", "leaped / leapt", "leaped / leapt"],["learn", "learned / learnt", "learned / learnt"],["leave", "left", "left"],["lend", "lent", "lent"],["let", "let", "let"],["lie", "lay", "lain"],["lie (not tell truth) REGULAR", "lied", "lied"],["light", "lit / lighted", "lit / lighted"],["lip-read", "lip-read", "lip-read"],["lose", "lost", "lost"],["make", "made", "made"],["mean", "meant", "meant"],["meet", "met", "met"],["misbecome", "misbecame", "misbecome"],["miscast", "miscast", "miscast"],["miscut", "miscut", "miscut"],["misdeal", "misdealt", "misdealt"],["misdo", "misdid", "misdone"],["mishear", "misheard", "misheard"],["mishit", "mishit", "mishit"],["mislay", "mislaid", "mislaid"],["mislead", "misled", "misled"],["mislearn", "mislearned / mislearnt", "mislearned / mislearnt"],["misread", "misread", "misread"],["missay", "missaid", "missaid"],["missend", "missent", "missent"],["misset", "misset", "misset"],["misspeak", "misspoke", "misspoken"],["misspell", "misspelled / misspelt", "misspelled / misspelt"],["misspend", "misspent", "misspent"],["misswear", "misswore", "missworn"],["mistake", "mistook", "mistaken"],["misteach", "mistaught", "mistaught"],["mistell", "mistold", "mistold"],["misthink", "misthought", "misthought"],["misunderstand", "misunderstood", "misunderstood"],["miswear", "miswore", "misworn"],["miswed", "miswed / miswedded", "miswed / miswedded"],["miswrite", "miswrote", "miswritten"],["mow", "mowed", "mowed / mown"],["offset", "offset", "offset"],["outbid", "outbid", "outbid"],["outbreed", "outbred", "outbred"],["outdo", "outdid", "outdone"],["outdraw", "outdrew", "outdrawn"],["outdrink", "outdrank", "outdrunk"],["outdrive", "outdrove", "outdriven"],["outfight", "outfought", "outfought"],["outfly", "outflew", "outflown"],["outgrow", "outgrew", "outgrown"],["outlay", "outlaid", "outlaid"],["outleap", "outleaped / outleapt", "outleaped / outleapt"],["outlie (not tell truth) REGULAR", "outlied", "outlied"],["output", "output / outputted", "output / outputted"],["outride", "outrode", "outridden"],["outrun", "outran", "outrun"],["outsee", "outsaw", "outseen"],["outsell", "outsold", "outsold"],["outshine", "outshined / outshone", "outshined / outshone"],["outshoot", "outshot", "outshot"],["outsing", "outsang", "outsung"],["outsit", "outsat", "outsat"],["outsleep", "outslept", "outslept"],["outsmell", "outsmelled / outsmelt", "outsmelled / outsmelt"],["outspeak", "outspoke", "outspoken"],["outspeed", "outsped", "outsped"],["outspend", "outspent", "outspent"],["outspin", "outspun", "outspun"],["outspring", "outsprang / outsprung", "outsprung"],["outstand", "outstood", "outstood"],["outswear", "outswore", "outsworn"],["outswim", "outswam", "outswum"],["outtell", "outtold", "outtold"],["outthink", "outthought", "outthought"],["outthrow", "outthrew", "outthrown"],["outwear", "outwore", "outworn"],["outwind", "outwound", "outwound"],["outwrite", "outwrote", "outwritten"],["overbear", "overbore", "overborne / overborn"],["overbid", "overbid", "overbid"],["overbreed", "overbred", "overbred"],["overbuild", "overbuilt", "overbuilt"],["overbuy", "overbought", "overbought"],["overcast", "overcast", "overcast"],["overcome", "overcame", "overcome"],["overcut", "overcut", "overcut"],["overdo", "overdid", "overdone"],["overdraw", "overdrew", "overdrawn"],["overdrink", "overdrank", "overdrunk"],["overeat", "overate", "overeaten"],["overfeed", "overfed", "overfed"],["overhang", "overhung", "overhung"],["overhear", "overheard", "overheard"],["overlay", "overlaid", "overlaid"],["overleap", "overleaped / overleapt", "overleaped / overleapt"],["overlie", "overlay", "overlain"],["overpay", "overpaid", "overpaid"],["override", "overrode", "overridden"],["overrun", "overran", "overrun"],["oversee", "oversaw", "overseen"],["oversell", "oversold", "oversold"],["overset", "overset", "overset"],["oversew", "oversewed", "oversewn / oversewed"],["overshoot", "overshot", "overshot"],["oversleep", "overslept", "overslept"],["oversow", "oversowed", "oversown / oversowed"],["overspeak", "overspoke", "overspoken"],["overspend", "overspent", "overspent"],["overspill", "overspilled / overspilt", "overspilled / overspilt"],["overspin", "overspun", "overspun"],["overspread", "overspread", "overspread"],["overspring", "oversprang / oversprung /", "oversprung"],["overstand", "overstood", "overstood"],["overstrew", "overstrewed", "overstrewn / overstrewed"],["overstride", "overstrode", "overstridden"],["overstrike", "overstruck", "overstruck"],["overtake", "overtook", "overtaken"],["overthink", "overthought", "overthought"],["overthrow", "overthrew", "overthrown"],["overwear", "overwore", "overworn"],["overwind", "overwound", "overwound"],["overwrite", "overwrote", "overwritten"],["partake", "partook", "partaken"],["pay", "paid", "paid"],["plead", "pleaded / pled", "pleaded / pled"],["prebuild", "prebuilt", "prebuilt"],["predo", "predid", "predone"],["premake", "premade", "premade"],["prepay", "prepaid", "prepaid"],["presell", "presold", "presold"],["preset", "preset", "preset"],["preshrink", "preshrank", "preshrunk"],["presplit", "presplit", "presplit"],["proofread", "proofread", "proofread"],["prove", "proved", "proven / proved"],["put", "put", "put"],["quick-freeze", "quick-froze", "quick-frozen"],["quit", "quit / quitted", "quit / quitted"],["read", "read (sounds like \"red\")", " read (sounds like \"red\")"],["reawake", "reawoke", "reawaken"],["rebid", "rebid", "rebid"],["rebind", "rebound", "rebound"],["rebroadcast", "rebroadcast / rebroadcasted", "rebroadcast / rebroadcasted"],["rebuild", "rebuilt", "rebuilt"],["recast", "recast", "recast"],["recut", "recut", "recut"],["redeal", "redealt", "redealt"],["redo", "redid", "redone"],["redraw", "redrew", "redrawn"],["reeve", "reeved / rove", "reeved / rove"],["refit (replace parts)", "refit / refitted", "refit / refitted"],["refit (retailor)", "refitted / refit", "refitted / refit"],["regrind", "reground", "reground"],["regrow", "regrew", "regrown"],["rehang", "rehung", "rehung"],["rehear", "reheard", "reheard"],["reknit", "reknitted / reknit", "reknitted / reknit"],["relay (for example tiles)", "relaid", "relaid"],["relay (pass along) REGULAR", "relayed", "relayed"],["relearn", "relearned / relearnt", "relearned / relearnt"],["relight", "relit / relighted", "relit / relighted"],["remake", "remade", "remade"],["rend", "rent / rended", "rent / rended"],["repay", "repaid", "repaid"],["reread", "reread", "reread"],["rerun", "reran", "rerun"],["resell", "resold", "resold"],["resend", "resent", "resent"],["reset", "reset", "reset"],["resew", "resewed", "resewn / resewed"],["retake", "retook", "retaken"],["reteach", "retaught", "retaught"],["retear", "retore", "retorn"],["retell", "retold", "retold"],["rethink", "rethought", "rethought"],["retread", "retread", "retread"],["retrofit", "retrofitted / retrofit", "retrofitted / retrofit"],["rewake", "rewoke / rewaked", "rewaken / rewaked"],["rewear", "rewore", "reworn"],["reweave", "rewove / reweaved", "rewoven / reweaved"],["rewed", "rewed / rewedded", "rewed / rewedded"],["rewet", "rewet / rewetted", "rewet / rewetted"],["rewin", "rewon", "rewon"],["rewind", "rewound", "rewound"],["rewrite", "rewrote", "rewritten"],["rid", "rid", "rid"],["ride", "rode", "ridden"],["ring", "rang", "rung"],["rise", "rose", "risen"],["rive", "rived", "riven / rived"],["roughcast", "roughcast", "roughcast"],["run", "ran", "run"],["sand-cast", "sand-cast", "sand-cast"],["saw", "sawed", "sawed / sawn"],["say", "said", "said"],["see", "saw", "seen"],["seek", "sought", "sought"],["self-feed", "self-fed", "self-fed"],["self-sow", "self-sowed", "self-sown / self-sowed"],["sell", "sold", "sold"],["send", "sent", "sent"],["set", "set", "set"],["sew", "sewed", "sewn / sewed"],["shake", "shook", "shaken"],["shave", "shaved", "shaved / shaven"],["shear", "sheared", "sheared / shorn"],["shed", "shed", "shed"],["shine", "shined / shone", "shined / shone"],["shit", "shit / shat / shitted", "shit / shat / shitted"],["shoe", "shoed / shod", "shoed / shod"],["shoot", "shot", "shot"],["show", "showed", "shown / showed"],["shrink", "shrank / shrunk", "shrunk"],["shrive", "shrived / shrove", "shriven"],["shut", "shut", "shut"],["sight-read", "sight-read", "sight-read"],["sing", "sang", "sung"],["sink", "sank / sunk", "sunk"],["sit", "sat", "sat"],["skywrite", "skywrote", "skywritten"],["slay (kill)", "slew / slayed", "slain / slayed"],["slay (amuse) REGULAR", "slayed", "slayed"],["sleep", "slept", "slept"],["slide", "slid", "slid"],["sling", "slung", "slung"],["slink", "slinked / slunk", "slinked / slunk"],["slit", "slit", "slit"],["smell", "smelled / smelt", "smelled / smelt"],["smite", "smote", "smitten / smote"],["sneak", "sneaked / snuck", "sneaked / snuck"],["sow", "sowed", "sown / sowed"],["speak", "spoke", "spoken"],["speed", "sped / speeded", "sped / speeded"],["spell", "spelled / spelt", "spelled / spelt"],["spend", "spent", "spent"],["spill", "spilled / spilt", "spilled / spilt"],["spin", "spun", "spun"],["spit", "spit / spat", "spit / spat"],["split", "split", "split"],["spoil", "spoiled / spoilt", "spoiled / spoilt"],["spoon-feed", "spoon-fed", "spoon-fed"],["spread", "spread", "spread"],["spring", "sprang / sprung", "sprung"],["stall-feed", "stall-fed", "stall-fed"],["stand", "stood", "stood"],["stave", "staved / stove", "staved / stove"],["steal", "stole", "stolen"],["stick", "stuck", "stuck"],["sting", "stung", "stung"],["stink", "stunk / stank", "stunk"],["strew", "strewed", "strewn / strewed"],["stride", "strode", "stridden"],["strike (delete)", "struck", "stricken"],["strike (hit)", "struck", "struck / stricken"],["string", "strung", "strung"],["strip", "stripped / stript", "stripped / stript"],["strive", "strove / strived", "striven / strived"],["sublet", "sublet", "sublet"],["sunburn", "sunburned / sunburnt", "sunburned / sunburnt"],["swear", "swore", "sworn"],["sweat", "sweat / sweated", "sweat / sweated"],["sweep", "swept", "swept"],["swell", "swelled", "swollen / swelled"],["swim", "swam", "swum"],["swing", "swung", "swung"],["take", "took", "taken"],["teach", "taught", "taught"],["tear", "tore", "torn"],["telecast", "telecast", "telecast"],["tell", "told", "told"],["test-drive", "test-drove", "test-driven"],["test-fly", "test-flew", "test-flown"],["think", "thought", "thought"],["thrive", "thrived / throve", "thrived / thriven"],["throw", "threw", "thrown"],["thrust", "thrust", "thrust"],["tread", "trod", "trodden / trod"],["troubleshoot", "troubleshot", "troubleshot"],["typecast", "typecast", "typecast"],["typeset", "typeset", "typeset"],["typewrite", "typewrote", "typewritten"],["unbear", "unbore", "unborn / unborne"],["unbend", "unbent", "unbent"],["unbind", "unbound", "unbound"],["unbuild", "unbuilt", "unbuilt"],["unclothe", "unclothed / unclad", "unclothed / unclad"],["underbid", "underbid", "underbid"],["underbuy", "underbought", "underbought"],["undercut", "undercut", "undercut"],["underfeed", "underfed", "underfed"],["undergo", "underwent", "undergone"],["underlay", "underlaid", "underlaid"],["underlet", "underlet", "underlet"],["underlie", "underlay", "underlain"],["underrun", "underran", "underrun"],["undersell", "undersold", "undersold"],["undershoot", "undershot", "undershot"],["underspend", "underspent", "underspent"],["understand", "understood", "understood"],["undertake", "undertook", "undertaken"],["underthrust", "underthrust", "underthrust"],["underwrite", "underwrote", "underwritten"],["undo", "undid", "undone"],["undraw", "undrew", "undrawn"],["unfreeze", "unfroze", "unfrozen"],["unhang", "unhung", "unhung"],["unhide", "unhid", "unhidden"],["unhold", "unheld", "unheld"],["unknit", "unknitted / unknit", "unknitted / unknit"],["unlade", "unladed", "unladen / unladed"],["unlay", "unlaid", "unlaid"],["unlead REGULAR", "unleaded", "unleaded"],["unlearn", "unlearned / unlearnt", "unlearned / unlearnt"],["unmake", "unmade", "unmade"],["unreeve", "unreeved / unrove", "unreeved / unrove"],["unsay", "unsaid", "unsaid"],["unsew", "unsewed", "unsewn / unsewed"],["unsling", "unslung", "unslung"],["unspin", "unspun", "unspun"],["unstick", "unstuck", "unstuck"],["unstring", "unstrung", "unstrung"],["unswear", "unswore", "unsworn"],["unteach", "untaught", "untaught"],["unthink", "unthought", "unthought"],["unweave", "unwove / unweaved", "unwoven / unweaved"],["unwind", "unwound", "unwound"],["unwrite", "unwrote", "unwritten"],["uphold", "upheld", "upheld"],["upset", "upset", "upset"],["vex", "vexed / vext", "vexed / vext"],["wake", "woke / waked", "woken / waked"],["waylay", "waylaid", "waylaid"],["wear", "wore", "worn"],["weave", "wove / weaved", "woven / weaved"],["wed", "wed / wedded", "wed / wedded"],["weep", "wept", "wept"],["wet", "wet / wetted", "wet / wetted"],["whet REGULAR", "whetted", "whetted"],["win", "won", "won"],["wind", "wound", "wound"],["withdraw", "withdrew", "withdrawn"],["withhold", "withheld", "withheld"],["withstand", "withstood", "withstood"],["wring", "wrung", "wrung"],["write", "wrote", "written"]] +items = [] + +def wordSetForWord(searchWord, exactMatch) + setOfFords = [] + + for words in $allWords + for word in words + if(exactMatch) + if (word == searchWord) + setOfFords += [words] + end + else + if (word[searchWord]) + setOfFords += [words] + break + end + end + end + end + + return setOfFords +end + +ARGV.each do | argument | + + needExcactMatch = false + + if (argument[-1] == '-') + needExcactMatch = true + argument = argument[0..-2] + end + + wordsSet = wordSetForWord(argument, needExcactMatch) + + for words in wordsSet + i = 0 + for word in words + item = {} + item['title'] = word + item['action'] = 'pick.rb' + item['actionArgument'] = (words + [i]).join("||") + items.push(item) + + i += 1 + end + end +end + +if (items.count == 0) + item = {} + item['title'] = "Hmm, it doesn't look like an irregular verb" + items.push(item) +end + +puts items.to_json diff --git a/IrregularVerbs.lbaction/Contents/Scripts/pick.rb b/IrregularVerbs.lbaction/Contents/Scripts/pick.rb new file mode 100644 index 0000000..822343c --- /dev/null +++ b/IrregularVerbs.lbaction/Contents/Scripts/pick.rb @@ -0,0 +1,18 @@ +#!/usr/bin/env ruby + +require 'io/console' +require 'CGI' + +str = ARGV[0] +args = str.split("||") + +wordsString = args[0] + ", " + args[1] + ", " + args[2] +selectedIndex = args[3] +selectedWord = args[selectedIndex.to_i] + +#copy selected word +IO.popen('pbcopy', 'w') { |f| f << selectedWord } + +#show all words +wordsString = CGI::escape(wordsString) +value = `open \"x-launchbar:large-type?string=#{wordsString}\"`