{% extends 'channel.html' %} {% block title %} {{ log.date }} ← {{ super() }} {% endblock %} {% block heading %} {{ super() }} {{ log.date }} {% endblock %} {% macro autolink(text) -%} {% autoescape false %} {%- filter replace('rel="nofollow"', 'rel="noreferrer"') -%} {{- text|urlize(80, nofollow=True) -}} {%- endfilter %} {% endautoescape %} {%- endmacro %} {% block aside %} {% endblock %} {% block body %}
{% macro messaged_at(msg, msg_id) %} {{- msg.messaged_at.strftime('%H:%M:%S') -}} {% endmacro %} {% macro nick_id(nick, nick_ids) -%} {%- set max_id = nick_ids.itervalues()|sort(reverse=True)|first or 0 -%} {%- set next_id = max_id + 1 -%} {{- nick_ids.setdefault(nick, next_id) -}} {%- endmacro %} {% set nick_ids = {} %} {% for msg in log %} {% set msg_id = 'message-' ~ loop.index %} {% if msg is Message %}

{{ messaged_at(msg, msg_id) }} {{ msg.nick }} {{ autolink(msg.line) }}

{% elif msg is JoinMessage or msg is QuitMessage %}

{{ messaged_at(msg, msg_id) }} {{ msg.nick }} {% if msg is JoinMessage %} has joined {{ msg.channel }}. {% else %} has quit {{ log.channel }}: {{ msg.reason }} {% endif %}

{% elif msg is ModeMessage %}

{{ messaged_at(msg, msg_id) }} mode/{{ log.channel }} [ {{- msg.modelist.split(' ')[0] }} {% for nick in msg.modelist.split(' ')[1:] %} {{ nick }} {%- endfor -%} ] by {{ msg.nick }}

{% elif msg is NickMessage %}

{{ messaged_at(msg, msg_id) }} {{- msg.from_ -}} is now known as {% autoescape false %} {% do nick_ids.update({msg.to: nick_id(msg.from_, nick_ids)|int}) %} {% endautoescape %} {{- msg.to -}}

{% else %} {% endif %} {% if loop.last %} {% if require('datetime:date').today() == log.date %} {% autoescape false %} {% endautoescape %} {% else %} {% set nextday = log.date + require('datetime').timedelta(days=1) %} {{ nextday }} {% endif %} {% endif %} {% endfor %}
{% endblock %}