Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Утилита для преобразования исходников (https://javascript.ru/forum/misc/1584-utilita-dlya-preobrazovaniya-iskhodnikov.html)

kodermax 18.08.2008 22:17

Утилита для преобразования исходников
 
Ребята есть ли утилита, которая из исходного текста делает строчку, которую можно вставить в функцию типа eval и выполнить этот код.
Т.е. нужна утилита, которая исходный текст конвертирует в одну строчку.

Kolyaj 18.08.2008 23:18

Цитата:

Сообщение от kodermax
Т.е. нужна утилита, которая исходный текст конвертирует в одну строчку.

В браузере откройте js-файл, все в одну строчку будет.

kodermax 18.08.2008 23:46

Это что-то новое.. в каком таком браузере?

Kolyaj 18.08.2008 23:56

Цитата:

Сообщение от kodermax
в каком таком браузере?

Netscape Navigator конечно же.

Gvozd 23.08.2008 21:52

Цитата:

Сообщение от Kolyaj
Netscape Navigator конечно же.

им что, еще кто-то пользуется?
честно говоря, я думал, он уже давно не поддерживается создателями.
да и пользователей на нем, почти не осталось наверно

Kolyaj 23.08.2008 21:55

Цитата:

Сообщение от Gvozd
им что, еще кто-то пользуется?

Кто-то еще пользуется. Это сарказм был.

Gvozd 27.08.2008 23:19

извини. я затупил)

Autosof 28.08.2008 09:16

Цитата:

Сообщение от kodermax (Сообщение 4702)
Ребята есть ли утилита, которая из исходного текста делает строчку.

Для этого исходный текст нужно на валидность проверить. Если сильно нужно - пишите парсер, а затем уже и перекодить что угодно можно хоть в одну строку хоть в две ;)

Начать можно отсюда http://vlasovskikh.wordpress.com/200...ve_json_parser применив рекурсивный спуск с использованием перебора с возвратом. Там на примере JSON, но можно и на синтаксис Javascript переделать.

Если всётаки за это дело возьмётесь - то, пожалуйста, потом рабочий вариант для Javascript - в студию :)

Kolyaj 28.08.2008 09:20

Цитата:

Сообщение от Autosof
Для этого исходный текст нужно на валидность проверить.

Зачем?

Цитата:

Сообщение от Autosof
Там на примере JSON, но можно и на синтаксис Javascript переделать.

Жжоте :)

ZoNT 28.08.2008 09:28

Не парьтесь, если надо в одну строку с обрезкой пробелов,то:
http://dean.edwards.name/packer/
только галки не ставьте.
Если поставите, то он обрежет длинные имена переменных и сожмёт по алгоритму base62.

Autosof 28.08.2008 09:32

Kolyaj:

Это же очень реальный вариант :)

А парсить нужно – потому что просто убирать '\n' в исходном тексте нельзя. Во всяком случае, не для Javascript. Так как окончанием программной инструкции в этом языке может быть как ';' так и просто '\n'. Потому могут быть сложности.

Autosof 28.08.2008 09:36

ZoNT

Я думаю что для kodermax этот вариант не подойтёт - он с '\n' не работает корректно.

ZoNT 28.08.2008 09:47

ну пусть тогда скачает любой обфускатор и обфусцирует до опупения.

ZoNT 28.08.2008 09:47

Цитата:

Сообщение от Autosof (Сообщение 5064)
ZoNT

Я думаю что для kodermax этот вариант не подойтёт - он с '\n' не работает корректно.

Почему это не работает корректно???
Сколько сжимал - всегда корректно.

Autosof 28.08.2008 09:56

Цитата:

Сообщение от ZoNT (Сообщение 5068)
Почему это не работает корректно???

Пишем:
alert(1)
alert(2)
alert(3)


Получаем:
alert(1)alert(2)alert(3)


Такой код в дальнейшем работать не будет, к сожалению.

Kolyaj 28.08.2008 10:07

Autosof, говнокод не надо писать, и все будет работать. А парсер JS писать -- так может сразу браузер?

З.Ы. Как вы думаете, какая грамматика у языка JavaScript?

Kolyaj 28.08.2008 10:08

Цитата:

Сообщение от ZoNT
по алгоритму base62.

Уж лучше стандартный gzip.

Autosof 28.08.2008 10:15

Цитата:

Сообщение от Kolyaj (Сообщение 5072)
говнокод не надо писать, и все будет работать

Это Javascript, зачем же Вы так...

Цитата:

Сообщение от Kolyaj (Сообщение 5072)
А парсер JS писать -- так может сразу браузер?

Это, если надо будет... Мы люди маленькие... :)

Цитата:

Сообщение от Kolyaj (Сообщение 5072)
З.Ы. Как вы думаете, какая грамматика у языка JavaScript?

Поподробней пожалуйста. Что конкретно Вас интересует?

Kolyaj 28.08.2008 10:26

Цитата:

Сообщение от Autosof
Это Javascript, зачем же Вы так...

Вы думаете на JavaScript нельзя писать говнокод? Пример вы привели несколькими сообщениями выше.

Цитата:

Сообщение от Autosof
Поподробней пожалуйста. Что конкретно Вас интересует?

Мне интересно, вы вообще представляете то, что предлагаете?

Autosof 28.08.2008 10:56

Цитата:

Сообщение от Kolyaj (Сообщение 5076)
Мне интересно, вы вообще представляете то, что предлагаете?

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

Описание грамматики языка сдесь http://www.mozilla.org/js/language/grammar14.html.

О том как написать парсер проше всего - в моих сообщениях выше.

Проблема то в чём?

P.S. По поводу символа ';' - обратите внимание на фразу "the OptionalSemicolon grammar state can sometimes reduce to «empty»". Её полное понимание откроет Вам новые горизонты :)

Kolyaj 28.08.2008 11:10

Цитата:

Сообщение от Autosof
Невижу ничего сложного в том, что можно написать парсер.

Поставим вопрос по другому: что будет делать этот парсер? Какая от него будет польза?

Цитата:

Сообщение от Autosof
Её полное понимание откроет Вам новые горизонты

Не надо мне таких горизонтов. Меня корежит отсутствие ; в коде.

ZoNT 28.08.2008 11:12

Цитата:

Сообщение от Autosof (Сообщение 5077)
Невижу ничего сложного в том, что можно написать парсер.

Описание грамматики языка сдесь http://www.mozilla.org/js/language/grammar14.html.

О том как написать парсер проше всего - в моих сообщениях выше.

Проблема то в чём?

P.S. По поводу символа ';' - обратите внимание на фразу "the OptionalSemicolon grammar state can sometimes reduce to «empty»". Её полное понимание откроет Вам новые горизонты :)

Пипец... Если ты не знаешь английского, то я тебе переведу:
"can sometimes" значит "иногда можно", а это "иногда" - это не "всегда", а "только там, где это ни на что не повлияет".

Autosof 28.08.2008 13:28

Цитата:

Сообщение от ZoNT (Сообщение 5079)
"can sometimes" значит "иногда можно", а это "иногда" - это не "всегда", а "только там, где это ни на что не повлияет".

Молодец! Всё правильно.

В теории вообще непонятно зачем нужен разделитель ';'. Если, к примеру, оператор полностью синтакисчески закончен и дусмысленных толкований уже быть не может. Что, кстати говоря, хорошо видно на примере кода который я показал.

P.S. Ну, а использовать его или нет в таких случаях - дело вкуса. Только эту особенность языка всё равно нужно учитывать.


Часовой пояс GMT +3, время: 15:13.