Добавлен фильтр cut

master
parent f963900f93
commit 606d7bde0e

@ -41,13 +41,14 @@ from calculate.variables.datavars import (
)
from calculate.variables.loader import Datavars
import calculate.templates.template_filters as template_filters
# Типы шаблона: директория или файл.
DIR, FILE, LINK = range(3)
# Словарь, в котором можно регистрировать фильтры.
CALCULATE_FILTERS = {}
CALCULATE_FILTERS = {"cut": template_filters.cut}
class IncorrectParameter(Exception):

@ -0,0 +1,10 @@
def cut(instr: str, field_num: int = 0, delimiter: str = "-") -> str:
"""
Разделить входную строку `instr` разделительем `delimiter`
и вернуть поле `field_num`.
"""
parts = instr.split(delimiter)
if field_num < len(parts):
return parts[field_num]
else:
return ""

@ -27,6 +27,7 @@ markers =
gentoo: marker for running tests for utils.gentoo
calculateini: marker for running tests for utils.calculateini
template_filters: marker for running tests for template_filters.
template_engine: marker for running tests for TemplateEngine.
directory_processor: marker for running tests for DirectoryProcessor.
template_executor: marker for running tests for TemplateAction.

@ -0,0 +1,52 @@
import pytest
import calculate.templates.template_filters as filters
@pytest.mark.parametrize('case',
[
{
"name": "empty",
"data": "",
"params": (),
"result": ""
},
{
"name": "default",
"data": "123",
"params": (),
"result": "123"
},
{
"name": "default with delimiter",
"data": "123-456",
"params": (),
"result": "123"
},
{
"name": "second field",
"data": "123-456",
"params": (1,),
"result": "456"
},
{
"name": "second field empty",
"data": "",
"params": (1,),
"result": ""
},
{
"name": "second field but one field",
"data": "123",
"params": (1,),
"result": ""
},
{
"name": "use dilimeter",
"data": "123.456",
"params": (1,"."),
"result": "456"
},
],
ids=lambda x:x["name"])
@pytest.mark.template_filters
def test_filter_cut(case):
assert filters.cut(case["data"], *case["params"]) == case["result"]
Loading…
Cancel
Save