Data corrector section
======================

A data corrector section lets you use context sensitive components (adapters)
to do needed corrections in data generated in previous sections. The data
corrector section blueprint name is ``quintagroup.transmogrifier.datacorrector``.

Data corrector needs next information: the path to the object (context), the
key in item on which is stored contaired with data from previous sections and
sources -  list of keys in this container which points to data, that need to
be corrected. Every key in this list is also a name of adapter to lookup.

Adapter are of two types: ``export`` and ``import``. What to use is controlled
by ``type`` option, ``export`` is default value.

Paths to objects are always interpreted as relative to the context.

>>> datacorrector = """
... [transmogrifier]
... pipeline =
...     source
...     exportcorrector
...     importcorrector
...     printer
...     
... [source]
... blueprint = quintagroup.transmogrifier.tests.datacorrectorsource
... 
... [exportcorrector]
... blueprint = quintagroup.transmogrifier.datacorrector
... sources = marshall
... 
... [importcorrector]
... blueprint = quintagroup.transmogrifier.datacorrector
... type = import
... sources = 
...     manifest
...     unchanged
...     nodata
... 
... [printer]
... blueprint = collective.transmogrifier.sections.tests.pprinter
... 
... """
>>> registerConfig(u'quintagroup.transmogrifier.tests.datacorrector', datacorrector)
>>> transmogrifier(u'quintagroup.transmogrifier.tests.datacorrector') # doctest: +ELLIPSIS, +REPORT_NDIFF
[]
[('_files', [('marshall', "item hasn't path")])]
[('_path', 'spam/eggs/foo')]
[('_path', 'not/existing/bar')]
[('_files', [('marshall', "object isn't adaptable")]),
 ('_path', 'spam/eggs/notadaptable')]
[('_files',
  [('marshall', 'modified export data'),
   ('unchanged', 'this must be unchanged')]),
 ('_path', 'spam/eggs/foo')]
[('_files',
  [('manifest', 'modified import data'),
   ('unchanged', 'this must be unchanged')]),
 ('_path', 'spam/eggs/foo')]
