Skip to content

Latest commit

 

History

History
106 lines (73 loc) · 9.59 KB

File metadata and controls

106 lines (73 loc) · 9.59 KB

Язык фильтрации позволяет включать задачи только для различных тегов

(строки языка приводятся в кавычках, как они должны вставляться в параметры командной строки)

'someonetag' Включаются только задачи, имеющие тег someonetag

'1 2' Включаются только задачи, имеющие теги "1" или "2" (с любым из них)

'' Все задачи

'?' Все задачи (обратите внимание, при указании символа в командной строке в качестве параметра, его обязательно указывать в кавычках, т.к. иначе операционная система сочтёт его подстановочным символом)

'-1' Все задачи, кроме задач с тегом "1"

'1 -2' Все задачи с тегом "1", кроме задач, у которых стоит ещё и тег "2"

Символ "<число" указывает, что на задачи справа от этого символа дополнительно накладывается ограничением duration <= число Необходимо обратить внимание, что предикат "<" проверяется именно для того тега, который указан (если у задачи есть тег с другой длительностью, то его длительность не будет проверена). Однако, при указании длительности в атрибутах, конструктор TestTask принудительно перезаписывает длительность всех тегов, устанавливая максимальную длительность из указанных на атрибутах. Таким образом, у всех тегов, взятых из атрибутов, будет установлена одна и та же длительность (максимальная). Для тегов, которые добавляются вручную (в программном коде, а не атрибутами над классами задач), контроль duration оставлен за программистом.

'<0 tag' Все задачи с тегом "tag" и параметром длительности duration <= 0 '<2 1' Все задачи с тегом "1" и параметром длительности duration <= 2

Приоритеты при выполнении фильтрации. "+tag" - задача, обязательная для выполнения. Это значит, что задачи с тегом "tag" попадут в выборку (ограничение duration учитывается всегда). "-tag" - задача, исключаемая из выполнения. Даже если она где-то добавлена с положительным упоминанием "tag" (без "+"), то задача будет исключена из выполнения. "tag" - задача будет включена в выполнение, если нет условий на её исключение.

"tag1 tag2 <1 tag3 -tag4 <2 tag5" Это условие можно разделить на 3 части: без условия duration, с условием duration <= 1, и с условием duration <= 2 Параметр duration всегда должен быть 0 или более. Задачи, на которые навешан атрибут без указания duration или с отрицательным duration, считаются с неуказанным duration. Они будут удовлетворять любым условиям duration Таким образом, задачи tag1 и tag2 будут включены в исполнение без условий. Задача tag3 (точнее, все задачи с этим тегом) будут включены в исполнение, если duration <= 1 на этих задачах. Задача -tag4 будет исключена из выполнения, если duration > 1. При этом это касается и задач tag1 и tag2, так как исключение из выполнения является более мощным условием, чем включение. Задачи с тегом tag5 будут включены, если будет соблюдено условие duration <= 2 на эти задачи (и они не подпадают под правило исключения [tag4,duration > 1]).

'1 <2 -1' Все задачи, содержащие тег "1" с длительностью duration <= 2. Читается: Выбираем все задачи, которые содержат тег "1" "<2" - распространяет на право условие duration <= 2 "-1" - Исключаем задачи, содержащие тег "1" с параметром длительности duration > 2

'-1 <0 1' Исключаются задачи с тегом "1", никакие другие задачи не добавляются. То есть все задачи отфильтрованы. Почему так? Так как тег "1" объявлен в положительном смысле, то другие теги по умолчанию не включаются Добавление условия на включение тега "1" при условии duration <= 0 не срабатывает, так как "-1" является исключающим этот тег условием. Исключающие условия всегда более приоритетные. Таким образом, "-1" подавляет "<0 1", так как имеет больший приоритет.

'<0 -1' Все задачи, кроме задач с тегом "1" с duration > 0 Так как здесь не объявлен ни один тег в положительном смысле, то другие теги включаются по умолчанию. Аналогичная запись: '? <0 -1', где символ "?" обозначает все теги.

'<1 -1' Все задачи, кроме задач со следующим условием: задачи, содержащие тег "1" и имеющие параметр duration > 1 Чтение этого условия происходит так: Нет тегов, указанных в положительном ключе. Значит, по умолчанию включаются все задачи. <1 указывает на duration <= 1. -1 указывает на то, что необходимо исключить задачи с тегом "1". Однако, так как перед "-1" указано ограничение времени duration <= 1, то исключаются только те задачи с тегом "1", для которых duration > 1

'? <1 -1' - то же самое условие

'1 <0 -2' Все задачи с тегом "1", исключая задачи (с тегом "2" и временем выполнения duration > 0)

'-2 <0 1' Все задачи с тегом "1" и временем выполнения не более 0, исключая задачи с тегом "2" Читается: "1" - только для задач с тегом "1". Другие задачи не включаются, т.к. один из тегов упомянут в положительном ключе "-2" - исключаем все задачи с тегом "2" "<0" - распространяет на право условие duration <= 0. То есть на задачи "1" установлено условие duration <= 0

'+1 -2 -3' Символ "+" используется как задатчик обязательности при выполнении задач. Это означает, что даже если задача исключается по другим правилам, то эти правила игнорируются. Таким образом, здесь мы включаем все задачи с тегом "1" - все, и больше ничего.

Так как хотя бы один тег упомянут в положительном смысле, то другие явно не упомянутые теги не включаются. "-2" и "-3" поглощаются более приоритетным условием "+1".

'-2 -3 <0 +1' Тег "+1" имеет приоритет даже над более левыми "-2" и "-3". Таким образом, включаются все задачи с тегом "1", но удовлетворяющие условию duration <= 0. Больше никакие задачи не включаются, так как упомянут положительно только один тег. То есть условия "-2" и "-3" попросту игнорируются.

'-1 -2 <1 -4' Здесь в положительном ключе не упомянут ни один тег. Таким образом, по умолчанию, включаются задачи с любыми тегами. Исключаются все задачи с тегами "1" или "2" (с любым из них). Исключаются задачи с тегом "4", при условии, что для них duration > 1