{% macro paginator(npages, page, url) %}
{{ 'Page' | trans }}
{% if npages > 1 %}
{% set d2top = (npages - page) %}
{% set d2bottom = (page -1 ) %}
{% if d2top < 3 or d2bottom < 3 %}
{% if d2bottom < 3 %}
{% set iteration = 4 %}
{% if 3 > npages %}
{% set iteration = npages %}
{% endif %}
{% for i in 1..iteration %}
{{i}}
{% endfor %}
{% if npages > 3 %}
{{npages}}
{% endif %}
{% else %}
{% set start = npages - 3 %}
{% if start > 0 %}
1
{% else %}
{% set start = 1 %}
{% endif %}
{% for i in start..npages %}
{{i}}
{% endfor %}
{% endif %}
{% else %}
1
{% set l_bound = (page - 2) %}
{% set t_bound = (page + 2) %}
{% for i in l_bound..t_bound %}
{{i}}
{% endfor %}
{{npages}}
{% endif %}
{% else %}
1
{% endif %}
{% endmacro %}