def test_context_expands_scalar_value():
    data = {
        'single': 'first',
        'wrapped': '{single}',
        'double-wrapped': '{wrapped}'
    }
    contexts = [context for context in Context.create_context(data, keys_to_expand=('expanded-list', 'expanded-dict'))]
    assert len(contexts) == 1
    expected = {'double-wrapped': 'first', 'single': 'first', 'wrapped': 'first'}
    to_expand = {'single': '{single}', 'wrapped': '{wrapped}', 'double-wrapped': '{double-wrapped}'}
    assert contexts[0].expand_placeholders(to_expand) == expected
 def _gen_item_json_with_context(self, items, result_list):
     # TODO add check for dictionary
     for (item_type, item_data) in items.items():
         if item_type not in self.component_item_types:
             # this is named component with context
             for context in Context.create_context(item_data, get_placeholders(item_type)):
                 result_list += self.registry.get_component(type(self), item_type).gen_json(context)
         else:
             # this is inplace defined component
             item = self.registry.create_component(item_type, {item_type: item_data}).gen_json()
             if isinstance(item, list):
                 result_list += item
             else:
                 result_list.append(item)
def test_context_expands_list_value():
    data = {
        'single': 'first',
        'expanded-list': [
            'list0',
            'list1'
        ]
    }
    contexts = [context for context in Context.create_context(data, keys_to_expand=('expanded-list', 'expanded-dict'))]
    assert len(contexts) == 2
    expected0 = {'single': 'first', 'expanded-list': 'list0'}
    expected1 = {'single': 'first', 'expanded-list': 'list1'}
    to_expand = {'single': '{single}', 'expanded-list': '{expanded-list}'}
    assert contexts[0].expand_placeholders(to_expand) == expected0
    assert contexts[1].expand_placeholders(to_expand) == expected1
Esempio n. 4
0
 def gen_json_from_data(self, data, context):
     super(JsonListGenerator, self).gen_json_from_data(data, context)
     result_list = []
     for items in data:
         if isinstance(items, str):
             # this is component without context
             result_list += self.registry.get_component(type(self), items).gen_json()
         else:
             # TODO add check for dictionary
             for (item_type, item_data) in items.iteritems():
                 if item_type not in self.component_item_types:
                     # this is named component with context
                     for context in Context.create_context(item_data, get_placeholders(item_type)):
                         result_list += self.registry.get_component(type(self), item_type).gen_json(context)
                 else:
                     # this is inplace defined component
                     item = self.registry.create_component(item_type, {item_type: item_data}).gen_json()
                     if isinstance(item, list):
                         result_list += item
                     else:
                         result_list.append(item)
     return result_list
 def get_contexts(self, context=None):
     if context is None:
         context = {}
     data = self.data.copy()
     data.update(context)
     return Context.create_context(data, self._placeholders)
 def get_contexts(self, context=None):
     if context is None:
         context = {}
     data = self.data.copy()
     data.update(context)
     return Context.create_context(data, self._placeholders)
 def gen_json(self, context=Context()):
     return self.gen_json_from_data(context.expand_placeholders(self.data), context)