Source code for ck.strings

#
# Collective Knowledge (CK)
#
# See CK LICENSE.txt for licensing details
# See CK COPYRIGHT.txt for copyright details
#
# Developer: Grigori Fursin
#

import sys

##############################################################################


[docs]def dump_json(i): """Dump dictionary (json) to a string Target audience: end users Args: dict (dict) : dictionary to convert to a string (skip_indent) (str): if 'yes', skip indent (sort_keys) (str): if 'yes', sort keys Returns: (dict): Unified CK dictionary: return (int): return code = 0, if successful > 0, if error (error) (str): error text if return > 0 string (str): JSON string """ import json d = i['dict'] si = i.get('skip_indent', '') sk = False if i.get('sort_keys', '') == 'yes': sk = True try: if sys.version_info[0] > 2: if si == 'yes': s = json.dumps(d, ensure_ascii=False, sort_keys=sk) else: s = json.dumps(d, indent=2, ensure_ascii=False, sort_keys=sk) else: if si == 'yes': s = json.dumps(d, ensure_ascii=False, encoding='utf8', sort_keys=sk) else: s = json.dumps(d, indent=2, ensure_ascii=False, encoding='utf8', sort_keys=sk) except Exception as e: return {'return': 1, 'error': 'problem converting dict to json ('+format(e)+')'} return {'return': 0, 'string': s}
##############################################################################
[docs]def copy_to_clipboard(i): # pragma: no cover """Copy string to clipboard if supported by OS (requires Tk or pyperclip) Target audience: end users Args: string (str): string to copy Returns: (dict): Unified CK dictionary: return (int): return code = 0, if successful > 0, if error (error) (str): error text if return > 0 """ s = i['string'] failed = False ee = '' # Try to load pyperclip (seems to work fine on Windows) try: import pyperclip except Exception as e: ee = format(e) failed = True pass if not failed: pyperclip.copy(s) else: failed = False # Try to load Tkinter try: from Tkinter import Tk except ImportError as e: ee = format(e) failed = True pass if failed: failed = False try: from tkinter import Tk except ImportError as e: ee = format(e) failed = True pass if failed: return {'return': 1, 'error': 'none of pyperclip/Tkinter/tkinter packages is installed'} # Copy to clipboard try: r = Tk() r.withdraw() r.clipboard_clear() r.clipboard_append(s) r.destroy() except Exception as e: return {'return': 1, 'error': 'problem copying string to clipboard ('+format(e)+')'} return {'return': 0}
##############################################################################
[docs]def convert_json_str_to_dict(i): """Convert string in a special format to dict (JSON) Target audience: end users Args: str (str): string (use ' instead of ", i.e. {'a':'b'} to avoid issues in CMD in Windows and Linux!) Returns: (dict): Unified CK dictionary: return (int): return code = 0, if successful > 0, if error (error) (str): error text if return > 0 dict (dict): dict from json file """ import json s = i['str'] if i.get('skip_quote_replacement', '') != 'yes': s = s.replace('"', '\\"') s = s.replace('\'', '"') try: d = json.loads(s, encoding='utf8') except Exception as e: return {'return': 1, 'error': 'problem converting text to json ('+format(e)+')'} return {'return': 0, 'dict': d}