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

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

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

32 ответов

62 просмотра

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

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)` $)

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта