parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ну опираясь на то, почему я впервые как и многие споткнулся в понимании...

Watcher 25.10.2019 15:58

...то путаница в бОльшей степени состоит не в исчерпывающем наборе возможностей про "виды красок". А именно в семантике терминов, операторов. И с ходом времени я "отдебажил" именно то на чем происходит спотыкание и вычленил именно 2 ключевых момента:

1= Taint/Untaint - очень условно противополжны, а технически они про разное, и т.к. это "разное" применяется не в противоположных случаях - это сбивает с толку в начале.

2= Грязные были названы Tainted :) Что успешно добивает с ходу, по инерции хочется думать, что факт "покрашенности" или "чистоты" - это tainted или не-tainted, а на самом деле это вид краски, а не факт ее наличия.

При этом, если прочитать документацию с пониманием механизма, то как бы все непротиворечиво. Но семантика вещь суровая, да.

Поэтому, топил бы за "инновационный" оператор в будущих версиях, не ломающий обратной совместимости.

а-ля
попытка в семантику и приоритетность параметров

^paint[string][to][what][when]

to - в какой цвет? по-умолчанию (dirty/tainted)
what - что  красим? по-умолчанию (all) или выбранный цвет
when - когда применить? instant/defer, по умолчанию defer


тогда ходовые операции будут выражены так же коротко:
^paint[строка]                  - эквивалент ^taint[строка]
^paint[строка][as-is]           - эквивалент ^taint[as-is][строка]
^paint[строка][as-is][dirty]    - эквивалент ^untaint[строка] 

^paint[строка][as-is][url][instant]  - очень классно когда можно в уже смешанных 
                                       данных перекрашивать помеченные куски.
                                       

P.S.: В этом плане (а чего терять то Парсеру, кроме своих оков?) - я бы предложил еще десяток
кастомных красок, которые можно ввести на уровне @conf файла например.

Ведь наверняка это всё хранится как "дублированные строки", и наверное есть по меньшей мере
около байта на все виды красок? Стало быть десяточек-другой докинуть никакого оверхеда не принесет.
legacy-операторы спокойно живут своей back-compatible жизнью, делая что делают
а новый paint более понятен и сподручен, делает всё то же самое и даже больше.