dot/config/vim/plugin/pickachu/processors.py

81 lines
2.3 KiB
Python

import vim
from datetime import datetime
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# name: processors.py
# description: this file contains functions that process data
# from the runapp function (in app.py).
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
DEFAULT_DATE_FORMAT = vim.eval("g:pickachu_default_date_format")
DEFAULT_COLOR_FORMAT = vim.eval("g:pickachu_default_color_format")
def dateProcessor(input, format=DEFAULT_DATE_FORMAT):
try:
dateObj = datetime.strptime(input, '%m/%d/%Y')
except(ValueError):
dateObj = datetime.strptime(input, '%m/%d/%y')
return dateObj.strftime(format)
def colorProcessor(input, format=DEFAULT_COLOR_FORMAT):
# The system color picker returned an rgba value
if 'rgba' in input:
strip = input.strip('rgba)(')
array = strip.split(',')
# Round the alpha value to two decimal placed
array[3] = round(float(array[3]), 2)
rgba_string = "rgba("
values = ",".join(str(x) for x in array)
rgba_string += values + ")"
return rgba_string
# The system color picker returned an rgb value
elif 'rgb' in input:
# RGB as input
if format == 'rgb':
return input
else:
# Strip 'rgb' and parenthesis
strip = input.strip('rgb)(')
array = strip.split(',')
if format == 'hex':
hex = '#%02x%02x%02x' % (int(array[0]), int(array[1]), int(array[2]))
return hex.upper()
elif format == 'rgba':
rgba_string = "rgba("
array.append(1)
values = ",".join(str(x) for x in array)
rgba_string += values + ")"
return rgba_string
return array
# The system olor picker returned a hex
elif '#' in input:
# If there is a '#' in input,
# they are most likely using Qarma instead of Zenity
# or any other program that outputs hex
if format == 'hex':
return input
else:
hex = input.lstrip('#')
rgb_array = tuple(int(hex[i:i+2], 16) for i in (0, 2 ,4))
if format == 'rgb':
rgb_string = "rgb("
for i in range(0, len(rgb_array)):
rgb_string += str(rgb_array[i])
if i < len(rgb_array) - 1:
rgb_string += ", "
else:
rgb_string += ")"
return rgb_string
elif format == 'rgba':
rgba_string = "rgba("
for i in range(0, len(rgb_array)):
rgba_string += str(rgb_array[i])
if i < len(rgb_array) - 1:
rgba_string += ", "
else:
rgba_string += ", 1)"
return rgba_string
return None