Skip to content

Instantly share code, notes, and snippets.

@baztian
Created March 15, 2017 12:58
Show Gist options
  • Save baztian/d8e8a897ea6efc06414746074b6939d7 to your computer and use it in GitHub Desktop.
Save baztian/d8e8a897ea6efc06414746074b6939d7 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
"""Formats a CSV string from windows clipboard to JIRA Table markup
(https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=tables)
on windows clipboard.
"""
import csv
def convert(csvfile, delimiter=',', quotechar='"'):
r"""
>>> input = '"HEAD1","HEAD2","HEAD3"\n1,,"a|b"'
>>> import StringIO
>>> csvfile = StringIO.StringIO(input)
>>> convert(csvfile)
'||HEAD1||HEAD2||HEAD3||\n|1| |a\\|b|'
"""
reader = csv.reader(csvfile, delimiter=delimiter, quotechar=quotechar)
jira_markup = []
separator = '||'
for row in reader:
jira_values = []
for i in row:
if not i:
i = ' '
i = i.replace('|', '\\|')
jira_values.append(i)
jira_line = separator.join(jira_values)
jira_markup.append("%s%s%s" % (separator, jira_line, separator))
separator = '|'
return "\n".join(jira_markup)
def main():
# import fileinput
# print convert(fileinput.FileInput())
import win32clipboard
win32clipboard.OpenClipboard()
csv_markup = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
import StringIO
# jira_markup = convert(StringIO.StringIO(csv_markup))
# jira_markup = convert(StringIO.StringIO(csv_markup), '\t')
jira_markup = convert(StringIO.StringIO(csv_markup), ',')
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(jira_markup)
win32clipboard.CloseClipboard()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment