Skip to content

Commit

Permalink
add sort
Browse files Browse the repository at this point in the history
  • Loading branch information
Dozer committed Jan 12, 2016
1 parent 45ac014 commit 8e4c26c
Show file tree
Hide file tree
Showing 10 changed files with 96 additions and 37 deletions.
38 changes: 38 additions & 0 deletions info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,17 @@
<key>connections</key>
<dict>
<key>67849839-76E2-4515-A23B-32672415A27E</key>
<array>
<dict>
<key>destinationuid</key>
<string>6EE3E38A-69CD-49F8-AFA9-7EEB8078F2D3</string>
<key>modifiers</key>
<integer>0</integer>
<key>modifiersubtext</key>
<string></string>
</dict>
</array>
<key>6EE3E38A-69CD-49F8-AFA9-7EEB8078F2D3</key>
<array>
<dict>
<key>destinationuid</key>
Expand All @@ -30,6 +41,28 @@
<string>Hasher</string>
<key>objects</key>
<array>
<dict>
<key>config</key>
<dict>
<key>concurrently</key>
<false/>
<key>escaping</key>
<integer>68</integer>
<key>script</key>
<string>from unified_converter import UnifiedConverter
import sys
sys.stdout.write(UnifiedConverter().cache("{query}"))
sys.stdout.flush()</string>
<key>type</key>
<integer>3</integer>
</dict>
<key>type</key>
<string>alfred.workflow.action.script</string>
<key>uid</key>
<string>6EE3E38A-69CD-49F8-AFA9-7EEB8078F2D3</string>
<key>version</key>
<integer>0</integer>
</dict>
<dict>
<key>config</key>
<dict>
Expand Down Expand Up @@ -89,6 +122,11 @@ UnifiedConverter().convert('''{query}''')</string>
<key>ypos</key>
<real>10</real>
</dict>
<key>6EE3E38A-69CD-49F8-AFA9-7EEB8078F2D3</key>
<dict>
<key>ypos</key>
<real>10</real>
</dict>
<key>BB6D11CF-B55E-4600-B454-EC9E99B3D7D2</key>
<dict>
<key>ypos</key>
Expand Down
6 changes: 2 additions & 4 deletions model/Base64.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,8 @@ def convert(self, query):
result += [
Item(
title=u'Base64 Encode' + ': ' + query,
key=self.name + u'-encode',
subtitle=encode_result,
arg=encode_result,
arg=self.name + u'-encode:' + encode_result,
valid=True
)
]
Expand All @@ -31,9 +30,8 @@ def convert(self, query):
result += [
Item(
title=u'Base64 Decode' + ': ' + query,
key=self.name + u'-decode',
subtitle=decode_result,
arg=decode_result,
arg=self.name + u'-decode:' + decode_result,
valid=True
)
]
Expand Down
6 changes: 2 additions & 4 deletions model/DateTime.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,13 @@ def convert(self, query):
Item(
title=u'TimeStamp to DataTime(Local)' + ': ' + query,
subtitle=str(local_datetime),
key=self.name + u'-timestamp-to-datetime-local',
arg=str(local_datetime),
arg=self.name + u'-timestamp-to-datetime-local:' + str(local_datetime),
valid=True
),
Item(
title=u'TimeStamp to DataTime(UTC)' + ': ' + query,
subtitle=str(utc_datetime),
key=self.name + u'-timestamp-to-datetime-utc',
arg=str(utc_datetime),
arg=self.name + u'-timestamp-to-datetime-utc:' + str(utc_datetime),
valid=True
)
]
Expand Down
6 changes: 2 additions & 4 deletions model/Html.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,13 @@ def convert(self, query):
Item(
title=u'Html Encode' + ': ' + query,
subtitle=saxutils.escape(query),
key=self.name + u'-encode',
arg=saxutils.escape(query),
arg=self.name + u'-encode:' + saxutils.escape(query),
valid=True
),
Item(
title=u'Html Decode' + ': ' + query,
subtitle=saxutils.unescape(query),
key=self.name + u'-decode',
arg=saxutils.unescape(query),
arg=self.name + u'-decode:' + saxutils.unescape(query),
valid=True
)
]
9 changes: 3 additions & 6 deletions model/Javascript.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,19 @@ def convert(self, query):
Item(
title=u'JavaScript encodeURI' + ': ' + query,
subtitle=urllib2.quote(query, "!#$&'()*+,-./:;=?@_~").encode("utf-8"),
key=self.name + u'-encodeURI',
arg=urllib2.quote(query, "!#$&'()*+,-./:;=?@_~").encode("utf-8"),
arg=self.name + u'-encodeURI:' + urllib2.quote(query, "!#$&'()*+,-./:;=?@_~").encode("utf-8"),
valid=True
),
Item(
title=u'JavaScript encodeURIComponent' + ': ' + query,
subtitle=urllib2.quote(query, "!'()*-._~").encode("utf-8"),
key=self.name + u'-encodeURIComponent',
arg=urllib2.quote(query, "!'()*-._~").encode("utf-8"),
arg=self.name + u'-encodeURIComponent:' + urllib2.quote(query, "!'()*-._~").encode("utf-8"),
valid=True
),
Item(
title=u'JavaScript decode' + ': ' + query,
subtitle=urllib2.unquote(query).encode("utf-8"),
key=self.name + u'-decode',
arg=urllib2.unquote(query).encode("utf-8"),
arg=self.name + u'-decode:' + urllib2.unquote(query).encode("utf-8"),
valid=True
)
]
3 changes: 1 addition & 2 deletions model/MD5.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ def convert(self, query):
return [Item(
title=self.name + ': ' + query,
subtitle=v,
key=self.name + u'-md5',
arg=v,
arg=self.name + u'-md5:' + v,
valid=True
)]
15 changes: 5 additions & 10 deletions model/SHA.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,31 +32,26 @@ def convert(self, query):
return [Item(
title="SHA1" + ': ' + query,
subtitle=sha1_result,
key=self.name + u'-sha1',
arg=sha1_result,
arg=self.name + u'-sha1:' + sha1_result,
valid=True
), Item(
title="SHA256" + ': ' + query,
subtitle=sha256_result,
key=self.name + u'-sha256',
arg=sha256_result,
arg=self.name + u'-sha256:' + sha256_result,
valid=True
), Item(
title="SHA512" + ': ' + query,
subtitle=sha512_result,
key=self.name + u'-sha512',
arg=sha512_result,
arg=self.name + u'-sha512:' + sha512_result,
valid=True
), Item(
title="SHA224" + ': ' + query,
subtitle=sha224_result,
key=self.name + u'-sha224',
arg=sha224_result,
arg=self.name + u'-sha224:' + sha224_result,
valid=True
), Item(
title="SHA384" + ': ' + query,
subtitle=sha384_result,
key=self.name + u'-sha384',
arg=sha384_result,
arg=self.name + u'-sha384:' + sha384_result,
valid=True
)]
2 changes: 1 addition & 1 deletion test.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from unified_converter import UnifiedConverter

converter = UnifiedConverter()
converter.convert('sha asdsada')
converter.convert("2222")
44 changes: 40 additions & 4 deletions unified_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,44 @@
class UnifiedConverter:
def __init__(self):
self.wf = Workflow()
self.models = [MD5(), DateTime(), Base64(), Html(), Javascript(), SHA()]
self.models = [
MD5(),
DateTime(),
Base64(),
Html(),
Javascript(),
SHA()
]
self.modelDict = dict()
self.max_age = 60 * 60 * 24 * 365
for m in self.models:
self.modelDict[m.name] = m

def cache(self, query):
if not query:
return ""
result = query.split(":", 1)
key = result[0]
value = result[1]

count = self.wf.cached_data(key, max_age=self.max_age)
if not count:
count = 0
count += 1

self.wf.cache_data(key, count)

return value

def convert(self, query):
if not query:
return

result = []
result += self.autocomplete(query)
result += self.convert_by_type(query)
result += self.convert_all(query)
result += self.sort_items(self.convert_by_type(query))
result += self.sort_items(self.convert_all(query))

# sort
self.add_to_wf(result)
self.wf.send_feedback()

Expand Down Expand Up @@ -61,6 +87,16 @@ def autocomplete(self, query):

return result

def sort_items(self, items):
def sort_by_usage(item):
key = item.arg.split(":", 1)[0]
count = self.wf.cached_data(key, max_age=self.max_age)
if not count:
return 0
return count

return sorted(items, reverse=True, key=sort_by_usage)

def add_to_wf(self, items):
for item in items:
self.wf.add_item(
Expand Down
4 changes: 2 additions & 2 deletions workflow/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -716,11 +716,11 @@ class Item(object):
def __init__(self, title, subtitle='', modifier_subtitles=None,
arg=None, autocomplete=None, valid=False, uid=None,
icon=None, icontype=None, type=None, largetext=None,
key=None, copytext=None):
copytext=None):
"""Arguments the same as for :meth:`Workflow.add_item`.
"""
self.key = key

self.title = title
self.subtitle = subtitle
self.modifier_subtitles = modifier_subtitles or {}
Expand Down

0 comments on commit 8e4c26c

Please sign in to comment.