Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

вложенные html-элементы не попадают под маску #134

Closed
kompolom opened this issue Oct 22, 2015 · 16 comments

Comments

@kompolom
Copy link

вот пример того что хочется получить но никак не могу написать паттерн который бы подошел, хотя проверяю https://regex101.com/#javascript регулярка срабаывает

@eGavr
Copy link
Member

eGavr commented Oct 22, 2015

Ни одна из ссылок не дает требуемой информации :)

На первую меня не пускает, а на второй не показывается регулярка.
Дай права, чтобы я мог перейти на первую ссылку и сюда можешь написать регулярку (я верю, что она корректна)

@kompolom
Copy link
Author

https://gist.github.com/kompolom/19e70ff1c336463a1a71 еще раз ссылка на гист
маска

{{.*}}
{{(.|\n)*}}

ни одна не матчится на произвольный html. Для примера:

<textarea class="textarea textarea_theme_vr textarea_size_l textarea_width_available textarea__control i-bem" id="uniq14455148478992" name="body" placeholder="Ваш комментарий" data-bem="{&quot;textarea&quot;:{}}"></textarea>
<textarea {{(.|\n)*}}></textarea>

@kompolom
Copy link
Author

Может просто совпадение, но заметил что регулярка стабильно не срабатывает на тексте где есть = в дифе она тогда отображается не как регулярка, а как ожидаемый текст (зеленая)

@eGavr
Copy link
Member

eGavr commented Oct 22, 2015

А конкретно с каким HTML ты сравниваешь?

@kompolom
Copy link
Author

выше пример с textarea

@eGavr
Copy link
Member

eGavr commented Oct 22, 2015

Не, я понял какая регулярка у тебя не работает.

Я хочу увидеть два реальных HTML, которые html-differ должен посчитать одинаковыми :)

@kompolom
Copy link
Author

@eGavr как их показать?

@kompolom
Copy link
Author

screen28
Вот скрином сделал

@kompolom
Copy link
Author

Посмотрел в отладчике, насколько я понял, маска применяется только к одному токену.
https://github.com/bem/html-differ/blob/master/lib/utils/mask.js#L42 который в свою очередь заканчивается кавычками. Я правильно понял?

@eGavr
Copy link
Member

eGavr commented Oct 22, 2015

Да, ты все верно понял, только не только кавычками, собственно я и хотел предложить тебе примерно следующее:

<textarea class="{{.*}}" id="{{.*}}" name="{{.*}}" placeholder="{{.*}}" data-bem="{{.*}}"></textarea>

@eGavr
Copy link
Member

eGavr commented Oct 22, 2015

@eGavr как их показать?

У enb-bem-tmpl-specs, я так понял ты эту утилиту используешь, есть переменная среды окружения/опция, которая позволяет сохранять созданный в тесте HTML –> https://github.com/enb-bem/enb-bem-tmpl-specs#Опции

@kompolom
Copy link
Author

@eGavr спасибо за ответ. Тогда хочу попросить добавить фичу, которая будет работать на произвольном количестве токенов. Если это возможно

@eGavr
Copy link
Member

eGavr commented Oct 23, 2015

Очень странно хотеть на столько "не жестко" сравнивать HTML.

Вариант использования такой маски как ты хочешь фактически делает HTML не валидным, поэтому HTML-парсер в диффалке будет отрабатывать неправильно, поэтому и сравнение будет неправильным.

@kompolom
Copy link
Author

@eGavr Вообще ты прав. Спасибо что помог разобраться. Последний вопрос. Как добавить маску на необязательный атрибут. Например, в html может быть required="" может required а может и вообще не быть. Я как понимаю атрибут и его значение будут в разных токенах. Как сделать чтобы все три html посчитались одинаковыми? Или это тоже не стоит хотеть?

@eGavr
Copy link
Member

eGavr commented Oct 23, 2015

Я бы сказал, что тоже не стоит хотеть делать, что у тебя там за тесты ? :)

Ты уверен, что такое хотеть нормально ? :) (с точки зрения сравнения одинаковой работоспособности двух HTML)

Есть у диффалки фича, которая игнорирует значение атрибута, но она обязательно требует наличие атрибута, то есть в случаях, когда есть required="" в одной HTML и required в другой, то они будут считаться одинаковыми, но диффалка ругнется таки, если не будет этого атрибута вообще.

@kompolom
Copy link
Author

Спасибо за разъяснения!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants