Source code for jinete.storers.formatters.hashcode
"""The set of definitions to format the artifact to be stored following the HashCode style."""
from __future__ import (
annotations,
)
from .abc import (
StorerFormatter,
)
[docs]class HashCodeStorerFormatter(StorerFormatter):
"""Format a solution as a readable string following the HashCode style."""
[docs] def __init__(self, remove_empty_routes: bool = True, *args, **kwargs):
"""Construct a new instance.
:param remove_empty_routes: Flag to manage if empty routes should be removed.
:param args: Additional positional parameters.
:param kwargs: Additional named parameters.
"""
kwargs["remove_empty_routes"] = remove_empty_routes
super().__init__(
*args, **kwargs,
)
@staticmethod
def _route_to_str(route) -> str:
trips_str = " ".join(trip.identifier for trip in route.loaded_trips)
return f"{route.loaded_trips_count} {trips_str}"
[docs] def format(self) -> str:
"""Perform a format process."""
result = str()
lines = sorted(self._route_to_str(route) for route in self._routes)
result += "\n".join(lines)
return result