1# coding: utf-8
2
3"""
4Exports the following items:
5
6 - unwrap()
7 - APIException()
8"""
9
10from __future__ import unicode_literals, division, absolute_import, print_function
11
12import re
13import textwrap
14
15
16class APIException(Exception):
17 """
18 An exception indicating an API has been removed from asn1crypto
19 """
20
21 pass
22
23
24def unwrap(string, *params):
25 """
26 Takes a multi-line string and does the following:
27
28 - dedents
29 - converts newlines with text before and after into a single line
30 - strips leading and trailing whitespace
31
32 :param string:
33 The string to format
34
35 :param *params:
36 Params to interpolate into the string
37
38 :return:
39 The formatted string
40 """
41
42 output = textwrap.dedent(string)
43
44 # Unwrap lines, taking into account bulleted lists, ordered lists and
45 # underlines consisting of = signs
46 if output.find('\n') != -1:
47 output = re.sub('(?<=\\S)\n(?=[^ \n\t\\d\\*\\-=])', ' ', output)
48
49 if params:
50 output = output % params
51
52 output = output.strip()
53
54 return output