fixing support for dicts of lists and lists of dicts
This commit is contained in:
parent
3fbcb57aca
commit
fd917bb59b
|
@ -135,17 +135,23 @@ class RollTable:
|
|||
values.append([option])
|
||||
continue
|
||||
if hasattr(ds.data[option], 'keys'):
|
||||
rand_key = random.choice(list(ds.data[option].keys()))
|
||||
choice = [rand_key, *ds.data[option][rand_key]]
|
||||
k, v = random.choice(list(ds.data[option].items()))
|
||||
choice = [k] + v
|
||||
else:
|
||||
choice = random.choice(ds.data[option])
|
||||
if hasattr(choice, 'keys'):
|
||||
c = [option]
|
||||
for (k, v) in choice.items():
|
||||
c.extend([k, v])
|
||||
if type(v) is list:
|
||||
c.extend([k, *v])
|
||||
else:
|
||||
c.extend([k, v])
|
||||
values.append(c)
|
||||
else:
|
||||
values.append([option, choice])
|
||||
if type(choice) is list:
|
||||
values.append([option, *choice])
|
||||
else:
|
||||
values.append([option, choice])
|
||||
return sorted(values)
|
||||
|
||||
ds_values = [values_from_datasource(t) for t in self._data]
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import pytest
|
||||
|
||||
from rolltable import tables
|
||||
|
||||
fixture_metadata = """
|
||||
|
@ -104,7 +106,7 @@ metadata:
|
|||
- two
|
||||
- three
|
||||
- four
|
||||
Category:
|
||||
list:
|
||||
- foo:
|
||||
- bar
|
||||
- baz
|
||||
|
@ -121,7 +123,7 @@ metadata:
|
|||
- two
|
||||
- three
|
||||
- four
|
||||
Category:
|
||||
dict:
|
||||
foo:
|
||||
- bar
|
||||
- baz
|
||||
|
@ -133,9 +135,10 @@ Category:
|
|||
"""]
|
||||
|
||||
|
||||
def test_lists_and_dicts():
|
||||
t = tables.RollTable(fixture_lists_and_dicts, die=1)
|
||||
assert str(t)
|
||||
@pytest.mark.parametrize('fixture', fixture_lists_and_dicts)
|
||||
def test_lists_and_dicts(fixture):
|
||||
t = tables.RollTable([fixture], die=1)
|
||||
assert(str(t))
|
||||
|
||||
|
||||
def test_combined_tables():
|
||||
|
|
Loading…
Reference in New Issue
Block a user