diff --git a/README.md b/README.md
index fcd3bb3..fa08a1d 100644
--- a/README.md
+++ b/README.md
@@ -36,11 +36,12 @@ Thanks to [Alfred-Workflow](https://github.com/deanishe/alfred-workflow)
* MD5
* Base64
* ASCII
-* DateTime: Timestamp to DateTime, DateTime to Timestamp
+* DateTime: Now, Timestamp to DateTime, DateTime to Timestamp
* Html: Encode, Decode
* JavaScript: JavaScript encodeURI, encodeURIComponent, decode
* SHA: SHA1, SHA223, SHA256, SHA384, SHA512
* Number: Dec, Bin, Oct, Hex
+* UUID: New UUID, Remove dash in UUID, Format UUID with dash
diff --git a/hasher.py b/hasher.py
index c487945..4d66031 100644
--- a/hasher.py
+++ b/hasher.py
@@ -10,9 +10,10 @@
from model.md5 import MD5
from model.number import Number
from model.sha import SHA
+from model.the_uuid import TheUUID
from workflow import Workflow, ICON_INFO
-__version__ = "1.2.5"
+__version__ = "1.2.6"
class Hasher:
@@ -32,7 +33,8 @@ def __init__(self, wf):
Javascript(),
SHA(),
Number(),
- ASCII()
+ ASCII(),
+ TheUUID()
]
self.modelDict = dict()
self.max_age = 60 * 60 * 24 * 365
@@ -61,15 +63,16 @@ def convert_all(self, query):
def convert_by_type(self, query):
query = str(query).strip()
- if query.find(' ') == -1:
- return []
-
- group = query.split(' ', 1)
- type_value = group[0]
- input_value = group[1]
-
- if type_value in self.modelDict:
- return self.modelDict[type_value].convert(input_value)
+ if " " not in query:
+ if query in self.modelDict:
+ return self.modelDict[query].convert("")
+ else:
+ group = query.split(' ', 1)
+ type_value = group[0]
+ input_value = group[1]
+
+ if type_value in self.modelDict:
+ return self.modelDict[type_value].convert(input_value)
def autocomplete(self, query):
result = []
diff --git a/icons/uuid.png b/icons/uuid.png
new file mode 100644
index 0000000..26a0d10
Binary files /dev/null and b/icons/uuid.png differ
diff --git a/info.plist b/info.plist
index 8197f55..dd6947d 100644
--- a/info.plist
+++ b/info.plist
@@ -156,7 +156,7 @@
version
- 1.2.5
+ 1.2.6
webaddress
https://github.com/dozer47528/alfred2-hasher
diff --git a/model/date_time.py b/model/date_time.py
index 99ee537..66e8387 100644
--- a/model/date_time.py
+++ b/model/date_time.py
@@ -1,4 +1,5 @@
import re
+import time
from datetime import datetime
from dateutil.parser import parse
@@ -18,41 +19,70 @@ def totimestamp(self, dt, epoch=datetime(1970, 1, 1)):
def convert(self, query):
result = []
- if re.search('^\d+(\.\d?)?$', query):
- timestamp = float(query)
- local_datetime = datetime.fromtimestamp(timestamp)
- utc_datetime = datetime.utcfromtimestamp(timestamp)
+ if not query:
+ now = int(time.time())
+ local_datetime = datetime.fromtimestamp(now)
+ utc_datetime = datetime.utcfromtimestamp(now)
result += [
Item(
- title=u'TimeStamp to DateTime(Local)' + ': ' + query,
+ title=u'Timestamp',
+ subtitle=str(now),
+ arg=self.name + u'-now-timestamp:' + str(now),
+ valid=True,
+ icon=self.icon_path()
+ ),
+ Item(
+ title=u'Local Datetime',
subtitle=str(local_datetime),
- arg=self.name + u'-timestamp-to-datetime-local:' + str(local_datetime),
+ arg=self.name + u'-now-datetime-local:' + str(local_datetime),
valid=True,
icon=self.icon_path()
),
Item(
- title=u'TimeStamp to DateTime(UTC)' + ': ' + query,
+ title=u'UTC Datetime',
subtitle=str(utc_datetime),
- arg=self.name + u'-timestamp-to-datetime-utc:' + str(utc_datetime),
+ arg=self.name + u'-now-datetime--utc:' + str(utc_datetime),
valid=True,
icon=self.icon_path()
)
]
else:
- try:
- time = parse(query)
- convert_result = str(self.totimestamp(time))
+ if re.search('^\d+(\.\d?)?$', query):
+ timestamp = float(query)
+ local_datetime = datetime.fromtimestamp(timestamp)
+ utc_datetime = datetime.utcfromtimestamp(timestamp)
+
result += [
Item(
- title=u'TimeStamp to DateTime to TimeStamp' + ': ' + query,
- subtitle=convert_result,
- arg=self.name + u'-datetime-to-timestamp:' + convert_result,
+ title=u'TimeStamp to DateTime(Local)' + ': ' + query,
+ subtitle=str(local_datetime),
+ arg=self.name + u'-timestamp-to-datetime-local:' + str(local_datetime),
+ valid=True,
+ icon=self.icon_path()
+ ),
+ Item(
+ title=u'TimeStamp to DateTime(UTC)' + ': ' + query,
+ subtitle=str(utc_datetime),
+ arg=self.name + u'-timestamp-to-datetime-utc:' + str(utc_datetime),
valid=True,
icon=self.icon_path()
)
]
- except:
- pass
+ else:
+ try:
+ parsed_datetime = parse(query)
+ convert_result = str(self.totimestamp(parsed_datetime))
+ result += [
+ Item(
+ title=u'TimeStamp to DateTime to TimeStamp' + ': ' + query,
+ subtitle=convert_result,
+ arg=self.name + u'-datetime-to-timestamp:' + convert_result,
+ valid=True,
+ icon=self.icon_path()
+ )
+ ]
+ except:
+ pass
return result
diff --git a/model/the_uuid.py b/model/the_uuid.py
new file mode 100644
index 0000000..281d007
--- /dev/null
+++ b/model/the_uuid.py
@@ -0,0 +1,51 @@
+import uuid
+
+from model.base_model import BaseModel
+from workflow.workflow import Item
+
+
+class TheUUID(BaseModel):
+ def __init__(self):
+ self.name = u'uuid'
+ self.desc = u'UUID Converter'
+
+ def convert(self, query):
+ result = []
+
+ if not query:
+ new_uuid = str(uuid.uuid4())
+ result += [
+ Item(
+ title=u'New UUID',
+ subtitle=new_uuid,
+ arg=self.name + u'-uuid4:' + new_uuid,
+ valid=True,
+ icon=self.icon_path()
+ )
+ ]
+ else:
+ if "-" in query:
+ no_dash_uuid = query.replace('-', '')
+ result += [
+ Item(
+ title=u'UUID without dash',
+ subtitle=no_dash_uuid,
+ arg=self.name + u'-uuid-without-dash:' + no_dash_uuid,
+ valid=True,
+ icon=self.icon_path()
+ )
+ ]
+
+ if "-" not in query and len(query) == 32:
+ formatted_uuid = "%s-%s-%s-%s-%s" % (query[0:8], query[8:12], query[12:16], query[16:20], query[20:])
+ result += [
+ Item(
+ title=u'Formatted UUID',
+ subtitle=formatted_uuid,
+ arg=self.name + u'-formatted-uuid:' + formatted_uuid,
+ valid=True,
+ icon=self.icon_path()
+ )
+ ]
+
+ return result