예제 #1
0
파일: _render.py 프로젝트: cegfdb/eliottree
def _default_value_formatter(
    human_readable,
    field_limit,
    utc_timestamps=True,
    encoding='utf-8',
):
    """
    Create a value formatter based on several user-specified options.
    """
    fields = {}
    if human_readable:
        fields = {
            eliot_ns(u'timestamp'):
            format.timestamp(include_microsecond=False,
                             utc_timestamps=utc_timestamps),
            eliot_ns(u'duration'):
            format.duration(),
        }
    return compose(
        # We want tree-format to handle newlines.
        partial(format.escape_control_characters, overrides={0x0a: u'\n'}),
        partial(format.truncate_value, field_limit)
        if field_limit else identity,
        format.some(format.fields(fields), format.text(),
                    format.binary(encoding), format.anything(encoding)))
예제 #2
0
 def test_mapping(self):
     """
     Values for known field names are passed through their processor.
     """
     fields = {
         u'a': format.binary('utf-8'),
     }
     self.assertThat(
         format.fields(fields)(u'\N{SNOWMAN}'.encode('utf-8'), u'a'),
         ExactlyEquals(u'\N{SNOWMAN}'))
예제 #3
0
 def test_missing_mapping(self):
     """
     Values for unknown field names are ignored.
     """
     self.assertThat(format.fields({})(b'hello', u'a'), Is(None))