mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
change the name from transpose to "together". Change to use itertools.izip_longest() rather than method cribbed from nested.py
This commit is contained in:
parent
ea93a36b10
commit
23557b6e5a
1 changed files with 6 additions and 21 deletions
|
@ -1,4 +1,4 @@
|
||||||
# (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
|
# (c) 2013, Bradley Young <young.bradley@gmail.com>
|
||||||
#
|
#
|
||||||
# This file is part of Ansible
|
# This file is part of Ansible
|
||||||
#
|
#
|
||||||
|
@ -18,6 +18,7 @@
|
||||||
import ansible.utils as utils
|
import ansible.utils as utils
|
||||||
from ansible.utils import safe_eval
|
from ansible.utils import safe_eval
|
||||||
import ansible.errors as errors
|
import ansible.errors as errors
|
||||||
|
from itertools import izip_longest
|
||||||
|
|
||||||
def flatten(terms):
|
def flatten(terms):
|
||||||
ret = []
|
ret = []
|
||||||
|
@ -30,20 +31,13 @@ def flatten(terms):
|
||||||
ret.append(term)
|
ret.append(term)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def transpose(a,b):
|
class LookupModule(object):
|
||||||
"""
|
"""
|
||||||
Transpose a list of arrays:
|
Transpose a list of arrays:
|
||||||
[1, 2, 3], [4, 5, 6] -> [1, 4], [2, 5], [3, 6]
|
[1, 2, 3], [4, 5, 6] -> [1, 4], [2, 5], [3, 6]
|
||||||
Replace any empty spots in 2nd array with "":
|
Replace any empty spots in 2nd array with None:
|
||||||
[1, 2], [3] -> [1, 3], [2, ""]
|
[1, 2], [3] -> [1, 3], [2, None]
|
||||||
"""
|
"""
|
||||||
results = []
|
|
||||||
for i in xrange(len(a)):
|
|
||||||
results.append([a[i], (b[i:i+1]+[""])[0]])
|
|
||||||
return results
|
|
||||||
|
|
||||||
|
|
||||||
class LookupModule(object):
|
|
||||||
|
|
||||||
def __init__(self, basedir=None, **kwargs):
|
def __init__(self, basedir=None, **kwargs):
|
||||||
self.basedir = basedir
|
self.basedir = basedir
|
||||||
|
@ -65,17 +59,8 @@ class LookupModule(object):
|
||||||
terms = self.__lookup_injects(terms, inject)
|
terms = self.__lookup_injects(terms, inject)
|
||||||
|
|
||||||
my_list = terms[:]
|
my_list = terms[:]
|
||||||
my_list.reverse()
|
|
||||||
result = []
|
|
||||||
if len(my_list) == 0:
|
if len(my_list) == 0:
|
||||||
raise errors.AnsibleError("with_transpose requires at least one element in each list")
|
raise errors.AnsibleError("with_transpose requires at least one element in each list")
|
||||||
result = my_list.pop()
|
return [flatten(x) for x in izip_longest(*my_list, fillvalue=None)]
|
||||||
while len(my_list) > 0:
|
|
||||||
result2 = transpose(result, my_list.pop())
|
|
||||||
result = result2
|
|
||||||
new_result = []
|
|
||||||
for x in result:
|
|
||||||
new_result.append(flatten(x))
|
|
||||||
return new_result
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue