1
0
Fork 0
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:
Bradley Young 2013-07-14 16:31:37 -07:00
parent ea93a36b10
commit 23557b6e5a

View file

@ -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