mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-05-27 17:39:51 -04:00
move formatted_list to utils
This commit is contained in:
committed by
Chris Hill-Scott
parent
b0a995beb2
commit
a037cd53c8
@@ -30,7 +30,7 @@ from notifications_python_client.errors import HTTPError
|
||||
from notifications_utils import logging, request_id, formatters
|
||||
from notifications_utils.clients.statsd.statsd_client import StatsdClient
|
||||
from notifications_utils.recipients import validate_phone_number, InvalidPhoneError
|
||||
from notifications_utils.field import escape_html
|
||||
from notifications_utils.formatters import formatted_list
|
||||
from pygments import highlight
|
||||
from pygments.formatters.html import HtmlFormatter
|
||||
from pygments.lexers.javascript import JavascriptLexer
|
||||
@@ -359,33 +359,6 @@ def format_notification_status_as_url(status):
|
||||
}.get(status)
|
||||
|
||||
|
||||
def formatted_list(
|
||||
items,
|
||||
conjunction='and',
|
||||
before_each='‘',
|
||||
after_each='’',
|
||||
separator=', ',
|
||||
prefix='',
|
||||
prefix_plural=''
|
||||
):
|
||||
if prefix:
|
||||
prefix += ' '
|
||||
if prefix_plural:
|
||||
prefix_plural += ' '
|
||||
|
||||
items = list(map(escape_html, items))
|
||||
if len(items) == 1:
|
||||
return Markup('{prefix}{before_each}{items[0]}{after_each}'.format(**locals()))
|
||||
elif items:
|
||||
formatted_items = ['{}{}{}'.format(before_each, item, after_each) for item in items]
|
||||
|
||||
first_items = separator.join(formatted_items[:-1])
|
||||
last_item = formatted_items[-1]
|
||||
return Markup((
|
||||
'{prefix_plural}{first_items} {conjunction} {last_item}'
|
||||
).format(**locals()))
|
||||
|
||||
|
||||
def nl2br(value):
|
||||
return formatters.nl2br(value) if value else ''
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ from flask_login import login_required, current_user
|
||||
from flask_weasyprint import HTML, render_pdf
|
||||
from dateutil.parser import parse
|
||||
|
||||
from notifications_utils.field import escape_html
|
||||
from notifications_utils.formatters import escape_html
|
||||
from notifications_utils.template import LetterPreviewTemplate
|
||||
from notifications_utils.recipients import first_column_headings
|
||||
from notifications_python_client.errors import HTTPError
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
import pytest
|
||||
|
||||
from flask import Markup
|
||||
from app import formatted_list
|
||||
|
||||
|
||||
@pytest.mark.parametrize('items, kwargs, expected_output', [
|
||||
([1], {}, '‘1’'),
|
||||
([1, 2], {}, '‘1’ and ‘2’'),
|
||||
([1, 2, 3], {}, '‘1’, ‘2’ and ‘3’'),
|
||||
([1, 2, 3], {'prefix': 'foo', 'prefix_plural': 'bar'}, 'bar ‘1’, ‘2’ and ‘3’'),
|
||||
([1], {'prefix': 'foo', 'prefix_plural': 'bar'}, 'foo ‘1’'),
|
||||
([1, 2, 3], {'before_each': 'a', 'after_each': 'b'}, 'a1b, a2b and a3b'),
|
||||
([1, 2, 3], {'conjunction': 'foo'}, '‘1’, ‘2’ foo ‘3’'),
|
||||
(['&'], {'before_each': '<i>', 'after_each': '</i>'}, '<i>&</i>'),
|
||||
([1, 2, 3], {'before_each': '<i>', 'after_each': '</i>'}, '<i>1</i>, <i>2</i> and <i>3</i>'),
|
||||
])
|
||||
def test_formatted_list(items, kwargs, expected_output):
|
||||
assert formatted_list(items, **kwargs) == expected_output
|
||||
|
||||
|
||||
def test_formatted_list_returns_markup():
|
||||
assert isinstance(formatted_list([0]), Markup)
|
||||
Reference in New Issue
Block a user