Source code for meetup2xibo.log_summarizer.injector

"""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_input_stream(application_scope): """Return the input stream.""" return application_scope.infile
[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