mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-08-22 22:11:44 -07:00
Move uses of to_bytes, to_text, to_native to use the module_utils version (#17423)
We couldn't copy to_unicode, to_bytes, to_str into module_utils because of licensing. So once created it we had two sets of functions that did the same things but had different implementations. To remedy that, this change removes the ansible.utils.unicode versions of those functions.
This commit is contained in:
parent
7a9395b5e0
commit
4ed88512e4
89 changed files with 759 additions and 894 deletions
|
@ -23,8 +23,10 @@ import re
|
|||
import codecs
|
||||
|
||||
from ansible.errors import AnsibleParserError
|
||||
from ansible.module_utils._text import to_text
|
||||
from ansible.parsing.quoting import unquote
|
||||
|
||||
|
||||
# Decode escapes adapted from rspeer's answer here:
|
||||
# http://stackoverflow.com/questions/4020539/process-escape-sequences-in-a-string-in-python
|
||||
_HEXCHAR = '[a-fA-F0-9]'
|
||||
|
@ -36,12 +38,14 @@ _ESCAPE_SEQUENCE_RE = re.compile(r'''
|
|||
| \\[\\'"abfnrtv] # Single-character escapes
|
||||
)'''.format(_HEXCHAR*8, _HEXCHAR*4, _HEXCHAR*2), re.UNICODE | re.VERBOSE)
|
||||
|
||||
|
||||
def _decode_escapes(s):
|
||||
def decode_match(match):
|
||||
return codecs.decode(match.group(0), 'unicode-escape')
|
||||
|
||||
return _ESCAPE_SEQUENCE_RE.sub(decode_match, s)
|
||||
|
||||
|
||||
def parse_kv(args, check_raw=False):
|
||||
'''
|
||||
Convert a string of key/value items to a dict. If any free-form params
|
||||
|
@ -50,9 +54,7 @@ def parse_kv(args, check_raw=False):
|
|||
they will simply be ignored.
|
||||
'''
|
||||
|
||||
### FIXME: args should already be a unicode string
|
||||
from ansible.utils.unicode import to_unicode
|
||||
args = to_unicode(args, nonstring='passthru')
|
||||
args = to_text(args, nonstring='passthru')
|
||||
|
||||
options = {}
|
||||
if args is not None:
|
||||
|
@ -60,7 +62,7 @@ def parse_kv(args, check_raw=False):
|
|||
vargs = split_args(args)
|
||||
except ValueError as ve:
|
||||
if 'no closing quotation' in str(ve).lower():
|
||||
raise AnsibleParsingError("error parsing argument string, try quoting the entire line.")
|
||||
raise AnsibleParserError("error parsing argument string, try quoting the entire line.")
|
||||
else:
|
||||
raise
|
||||
|
||||
|
@ -99,6 +101,7 @@ def parse_kv(args, check_raw=False):
|
|||
|
||||
return options
|
||||
|
||||
|
||||
def _get_quote_state(token, quote_char):
|
||||
'''
|
||||
the goal of this block is to determine if the quoted string
|
||||
|
@ -118,6 +121,7 @@ def _get_quote_state(token, quote_char):
|
|||
quote_char = cur_char
|
||||
return quote_char
|
||||
|
||||
|
||||
def _count_jinja2_blocks(token, cur_depth, open_token, close_token):
|
||||
'''
|
||||
this function counts the number of opening/closing blocks for a
|
||||
|
@ -132,6 +136,7 @@ def _count_jinja2_blocks(token, cur_depth, open_token, close_token):
|
|||
cur_depth = 0
|
||||
return cur_depth
|
||||
|
||||
|
||||
def split_args(args):
|
||||
'''
|
||||
Splits args on whitespace, but intelligently reassembles
|
||||
|
@ -166,9 +171,9 @@ def split_args(args):
|
|||
|
||||
quote_char = None
|
||||
inside_quotes = False
|
||||
print_depth = 0 # used to count nested jinja2 {{ }} blocks
|
||||
block_depth = 0 # used to count nested jinja2 {% %} blocks
|
||||
comment_depth = 0 # used to count nested jinja2 {# #} blocks
|
||||
print_depth = 0 # used to count nested jinja2 {{ }} blocks
|
||||
block_depth = 0 # used to count nested jinja2 {% %} blocks
|
||||
comment_depth = 0 # used to count nested jinja2 {# #} blocks
|
||||
|
||||
# now we loop over each split chunk, coalescing tokens if the white space
|
||||
# split occurred within quotes or a jinja2 block of some kind
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue