"""Injectors."""
from .log_summarizer import LogSummarizer
from .log_parser import make_log_parser_class, Summary
from .location_mapper import LocationMapper
from .start_counter import StartCounter
from .crud_lister import CrudLister
from .conflict_reporter import ConflictReporter
from .renderer import Renderer, EmailRenderer, SummaryRenderer, \
LocationMappingCsvRenderer, make_jinja2_env
from .suppressed_event_tracker import SuppressedEventTracker
import datetime
[docs]def inject_log_summarizer(application_scope):
"""Return a log summarizer configured by an application scope."""
return LogSummarizer(
inject_input_stream(application_scope),
inject_output_stream(application_scope),
inject_summary(),
inject_log_parser(),
inject_renderer(application_scope)
)
[docs]def inject_summary():
"""Return a summary."""
return Summary(
inject_start_counter(),
inject_crud_lister(),
inject_conflict_reporter(),
inject_location_mapper(),
inject_suppressed_event_tracker())
[docs]def inject_output_stream(application_scope):
"""Return the output stream."""
return application_scope.outfile
[docs]def inject_start_counter():
"""Return an empty program start counter."""
return StartCounter()
[docs]def inject_crud_lister():
"""Return an empty event CRUD lister."""
return CrudLister()
[docs]def inject_conflict_reporter():
"""Return an empty conflict reporter."""
return ConflictReporter(inject_date_today())
[docs]def inject_date_today():
"""Return today's date as a string formated as YYYY-MM-DD."""
return datetime.date.today().isoformat()
[docs]def inject_location_mapper():
"""Return a location mapper."""
return LocationMapper()
[docs]def inject_suppressed_event_tracker():
"""Return a suppressed event tracker."""
return SuppressedEventTracker()
[docs]def inject_log_parser():
"""Return a function that provides a
log parser for some text."""
return make_log_parser_class()
[docs]def inject_renderer(application_scope):
"""Inject a renderer."""
return Renderer(
application_scope.mappings,
inject_email_renderer(application_scope),
inject_summary_renderer(),
inject_location_mapping_csv_renderer())
[docs]def inject_email_renderer(application_scope):
"""Inject an email renderer."""
return EmailRenderer(
application_scope.email_to,
application_scope.email_subject)
[docs]def inject_summary_renderer():
"""Inject a log summary renderer."""
return SummaryRenderer(
inject_jinja2_env(),
"summary.html")
[docs]def inject_jinja2_env():
"""Returns a Jinja2 environment for templates in this package."""
return make_jinja2_env(__package__)
[docs]def inject_location_mapping_csv_renderer():
"""Return a location mapping CSV renderer."""
return LocationMappingCsvRenderer()
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 autoindent