169 похожих чатов

Подскажите, сейчас что то есть (JS модуль какой-нибудь), что можно

использовать для:
1) переваривания javascript codа из html fileа, т.е. разбивки, на переменные, команды, блоки и т.п. Например каким нибудь модулем находится блок JavaScript и выдёргивается из html кода, а потом JavaScript обработчиком (parserом), выдернутый JavaScript кусок, разбивается на части (наверно tockenы). А я уже эти части перебираю, чтобы найти переменную, в корой есть json, например.
2) Выполнять JS code, с учётом окружения, в котором он находится. Например, если этот JS обрабатывает какие-то куски кода в HTML/CSS или AJAX какой-нибудь выполнить, например, чтобы этот JS модуль мог сделать так же, как настоящий JS.
???

32 ответов

32 просмотра

Вам не в этот чат.

selenium

Стикер

Iar-De Автор вопроса
Warstone
Вам не в этот чат.

Как это не в этот?

Iar De
Как это не в этот?

В вашем вопросе нету ничего про Perl

Iar-De Автор вопроса
Warstone
В вашем вопросе нету ничего про Perl

Я спрашивал про существование модуля(ей) и про возможность делать это на perlе

Iar-De Автор вопроса
Anton Petrusevich
selenium

Это модуль такой есть на perlе?

Iar-De Автор вопроса
Anton Petrusevich
selenium

Это что такое?

Iar De
Это что такое?

Это из Менделеева что-то, "Чистый селениум".

Iar De
Это что такое?

https://metacpan.org/pod/Selenium::Remote::Driver

Iar-De Автор вопроса
Anton Petrusevich
https://metacpan.org/pod/Selenium::Remote::Driver

"control any supported browser" - Это же дистанционное управление обозревателем, а я говорю JS, написанный на perl, или, хотя бы библиотека, которая может разбить JS code на куски, чтобы по этим кускам легче было находить нужные части, как PPI, например, разбивает perl code или как HTML::DOM, который разбивает HTML code, только для JS.

WWW::Mechanize::Chrome

Iar De
"control any supported browser" - Это же дистанцио...

"дистанционное" громко сказано. у меня один сервис только так и работает, локально поднят селениум с браузером и к нему коннектится скрипт. на тему интерпретации жс самому -- я однажды со сгенерированным жсом так обошёлся. регекспами приводил сгенерированную функцию к перловому коду и через сейф исполнял его

Iar-De Автор вопроса
Anton Petrusevich
"дистанционное" громко сказано. у меня один сервис...

"дистанционно" - это я не имел ввиду, что на другом адресе каком то, а то, что это управление и получение данных с другой программы. Громоздкой, при чём.

JE парсит код js5 в perl и может его выполнять. То есть он не сможет распарсить классы (class A { a() {} }), лямбды a => a+1, строки с интерполяцией и прочие нововведения в современном js. Ну а DOM из HTML может построить HTML::TreeBuilder. Узнать как по нему искать можно посмотрев код Htmlquery.pm и тесты к нему

Iar-De Автор вопроса

замыкание, closure

Это функция без имени, чтобы её можно было использовать в выражении: my $add1 = sub { $_[0]+1 }; print $add1->(5)

Iar-De Автор вопроса
Ярослав 🧞 Косьмина
Это функция без имени, чтобы её можно было использ...

Ааа, самое понятное объяснение. Т.е., это анонимная функция.

Iar De
Ааа, самое понятное объяснение. Т.е., это анонимна...

Это sub {}. В переменную можно поместить на неё ссылку

Iar De
Ааа, самое понятное объяснение. Т.е., это анонимна...

это упрощенное объяснение. Главная суть замыканий в том, что они захватывают ("замыкают", не знаю почему такое слово) окружающий их контекст по использованным переменным

Iar-De Автор вопроса
Ярослав 🧞 Косьмина
Это sub {}. В переменную можно поместить на неё сс...

я не знал, что это lambdaми называли. В С++ постоянно слышал их упоминали, но раздражало, потому что я С++ не доучил до того уровня, где про lambdы объяснялось

Iar De
Ну да, я это и понял.

Можно сразу выполнить лямбду никакой переменной её не присваивая, что используется в замыканиях и каррировании: (sub { my ($x, $y) = @_; sub { my ($z) = @_; $x*$z - $y } })->(10, 15)->(20)

Iar De
я не знал, что это lambdaми называли. В С++ постоя...

в плюсы их совсем недавно завезли, потому что до того в Питоне или подобном просто кейворд lambda был использован

Ярослав 🧞 Косьмина
Можно сразу выполнить лямбду никакой переменной её...

постоянно забываю, что такое каррирование... оно есть у нас в перле?

Vadim Goncharov
постоянно забываю, что такое каррирование... оно е...

понижение к-ва аргументов ф-ции, "заморозка" аргумента и создание "новой ф-ции" с меньшим к-вом параметров

basiliscos
понижение к-ва аргументов ф-ции, "заморозка" аргум...

то есть вот это sub with_readline_vars { my ($app, $cb) = @_; my $term = $app->{_readline}; if (defined $term) { return $cb->( ReadLine => $term->ReadLine, Attribs => $term->Attribs, Features => $term->Features, IN => $term->IN, OUT => $term->OUT, ); } else { $app->{_readline_initcb} = $cb; return undef; } } sub _cmd_request_completions { my ($app) = @_; my $term = $app->{_readline}; my $attribs = $term->Attribs; return sub { my ($text, $line, $start, $end) = @_; # TRP will not set $end, avoid it my @matches; ... chop $prefix if $attribs->{completion_quote_character}; # FIXME if "\s ... @userret = $term->completion_matches($text, $userret[0]); каррирования?

Vadim Goncharov
постоянно забываю, что такое каррирование... оно е...

Вообще-то каррирование в примере выше ) Каррирование – разбивка функции с несколькими аргументами на несколько функций с меньшим числом аргументов. То есть можно было сразу написать (sub { my ($x, $y, $z) = @_; $x*$z - $y })->(10, 15, 20) Но мы не ищем лёгких путей и заменили на `->(10, 15)->(20)` $)

Похожие вопросы

Обсуждают сегодня

Кто нибудь из участников чата пишет на ассемблере под GNU/Linux?
Spiker01
24
анрей С какой целью зашёл?
КТ315
42
я часов 15 назад начал пытаться написать хоть что-то напоминающее ос и у меня есть проблема, которую я пытаюсь решить последние часов 5: есть крч 2 исходника с минимальным код...
Al1to
15
Я не очень много работал с потоками, тут возник вопрос - если будет одновременный доступ к памяти из двух разных потоков, это само по себе приведет к ошибке?
The Bird of Hermes
25
Слушайте, никак не могу заставить работать сортировку в TClientDataSet! Вроде все делаю правильно, создаю индекс, присваиваю его название ClientDataSet1.IndexName, первый раз...
Ivan Burnatov
7
а вот интересный вопрос появляется: допустим у нас есть приложение с системой модулей. Будет ли считаться система модуль+прога ассемблерной программой если: а) Прога на Си, м...
Mixail Frolov
29
я в заголовке имплементировал функцию. В заголовке стоят гарды. Но я все равно получаю multiple definitions. Как это может происходить?
Павλо 🇺🇦
15
как можно вывести первые 100 символов поля content на странице?
Artem
10
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
Может кто встречал такое? Один набор данных, но в одном столбце кодировка нормальная, а в другом ироглифы. Как такое может быть?
Alexander
23
Карта сайта