Алгоритм раскраски взят из стандартной 1Совской обработки РаскраскаКода.epf, переписан на php, с небольшими доработками по раскраске кода, чего не хватает в обработке. Код для раскрашивания ограничен 30000 символами, так как этого, я думаю, выше крыши. По крайней мере, я не видел статьи, где кода 1С было свыше 3000 строк. Если кому понадобится раскрасить больше, то код для html-страницы можно вручную отредактировать и соединить в один общий код. Онлайн раскраску писал для себя, так как постоянно иметь под рукой обработку раскраски не получалось. Предупреждаю сразу, что код 1С раскрашивается, если он написан синтаксически верно. И не надо проверять ее (онлай раскраску) на незакрытые кавычки, код из других языков и т.п. и потом в комментариях писать про эти ошибки. Ведь в статьи вставляют уже готовый, работающий код. Если же будут существенные ошибки в алгоритме раскраски верного кода, буду рад, если напишите в комментариях, можно здесь, можно на сайте раскраски.
Об раскраске:
На станице раскраски имеются два поля: для кода, который надо раскрасить и для кода который получяется после раскраски, который можно сразу вставлять в html-страницу.
Справа выводится результат раскрашивания, здесь можно стазу посмотреть как раскрасился код.
Ссылка на сайт раскраски http://likion.ru/color1c/index.php
возникшие ошибки раскраски рабочего кода буду исправлять по мере возможности
(1) Было бы удобно на свой сайт скопировать и пользоваться когда нужно и не искать в интернете, где же я встречал онлайн раскраску.
Если не трудно и не жалко, выложите пожалуйста php-скрипт.
Внутри чисел точка красная, а должна быть черная 😉
Символы «#» и «&» красят строку в коричневый, только если они являются первым значащим символом в строке, а у Вас — где угодно.
про «enddo» забыл 😉
все, 3 косячка нашел, пойду покурю.
А вот вопрос еще гложет: по-моему лишнего там span-ов открывается/закрывается. Если одно слово красным, и другое за ним красным — зачем перед пробелом закрывать старый span, а после открывать новый точно такой же, пробел то пофиг каким цветом рисовать.
хехе, а если в строках попадаются спецсимволы HTML (типа «&» или » «) — то ваще беда, да…
+(7) похоже и у Инфостарта та же проблема, я писал &a_m_p; и &n_b_s_p; 😉
с датами в одинарных кавычках беда.
Возьмите CopyPaster1C, там все раскрашено!
http://infostart.ru/public/199364/
(2)Используйте на своем сайте highlight.js он раскрашивает как нужно, без каких либо ограничений(код раскрашивается на клиенте, поэтому серверу наплевать на объем кода). Еще есть питоновская библиотека pygments очень удобная. Если есть необходимость, можно запилить статическую страничку, для раскраски кода. Делов не очень много. Я баловался когда тоже раскраской кода, написал пастебин 1с.
(5) gislink,
Это исправил, лишний пробел был в проверочной строке
(4) gislink,
Если эти символы попадаются и они стоят не в кавычках, то после них все остальное красится в коричневый — так у меня. В 1С — если они стоят с начала. Но если в 1С поставить эти символы в середину строки, то будет ошибка.
Для примера.
Правильно:
а=1;
#Если Клиент Тогда
#КонецЕсли
Неправильно:
а=1;#Если Клиент Тогда
#КонецЕсли
Повторюсь, раскраска выполняется синтаксически верного текста, а не идет проверка его на синтаксис.
(7) gislink,
Можно пример?
(9) gislink,
Исправлено
(3) gislink,
Это косяк 1Совской обработки, который перешел сюда. Позже исправлю.
(11) webester, будет время, разберусь и с JavaScript.
(2) Diversus,
Если не трудно и не жалко, выложите пожалуйста php-скрипт.
Пока выкладывать исходники я не планирую, но можно сделать свою страницу, при открытии которой будет редирект на мою.
http://likion.ru/color1c/color1c.zip , в архиве лежит html файл, его можно запускать хоть с рабочего стола
Можно использовать написанную мной страницу редиректа
(17)Это было не вам. Там разбираться не надо просто подключил библиотеку, она сама раскрасит, код в блоке определенном для этого.
(14)
ну например такой код (символы подчеркивания надо убрать):
а = «<html>&n_b_s_p;</html>»;
переведет как:
а = «<html> </html>»;
что конечно же неправильно.
+(21) и заодно в поле »
Код 1С для раскраски (мах 30000 символов):» текст тоже изменится.
У меня есть код 1С, который формирует HTML текст, и для такого кода Ваш сервис не годится.
(15)
ну может и исправлено, конечно, если такой код
а = «‘20140505′»;
должен раскрашиваться так, как он это делает у Вас.
(22) gislink, это поправил.
И добавил возможность использовать html-код спецсимволов в строках. В «Результат» выводится пока не правильно, а вот если «Код для вставки» вставить в исходную страницу, то будет все норм.
(23)
теперь с переносом строк фигня:
а = «20140505
|»;
точка с запятой черная.
Харе ерундой заниматьсяhttp://26226.selcdn.ru/paint_1c/ буквально пару часов. Включая гугл, чтение документации и тд. Вот тебе и исходники и регулярные выражения(хочешь подсвети к примеру параметры в функции желтеньким или свои копирайты оранжевым). А еще на офсайте 17тем оформления. Спасибо andrewks он дописал правила до идеальных у него там еще для 77 и для запросов есть. Какой смысл велосипеды городить?
(25) webester, Вот тебе и альтернатива. Что же вы раньше это не написали, а то пришлось свое выдумывать.
Мне казалось любой благородный дон, должен провести в гугле какое то время прежде чем начать писать велосипед. Если пошерстить гугл хотя бы полчасика, решение всплывает. Еще есть Pygments и SyntaxHighlighter для последних двух правда синтаксис написан энтузиастами, но он есть.
(27) webester, провел не один час в гугле в поисках истины, но нашел только заготовки, а сидеть и разбираться в чужом коде, да еще на неизвестном мне пока языке, как-то не хотелось, пришлось делать свое. Да и в дальнейшем внести изменения туда будет проще.
(28)странно, очень странно я прям так и написал «подсветка синтаксиса 1с», получил очень много постов как прикрутить расцветку к Notepad++, убрал из выдачи все результаты где есть слово «Notepad++» по третьей ссылке получил нужный результат. Через 15 минут у меня на руках был модуль который раскрашивает код 1С. Результат меня не удовлетворил. Родные правила не раскрашивали скобки и еще какой то был глюк. Через 15минут я нашел сайт где andrewks дает ссылку на свой форк этого проекта. Там все работает как надо, ну или почти как надо. Собственно все. Страничка уже дело техники.
Спасибо. Не слушайте тех, кто выступает против изобретения велосипедов. Как только люди перестанут изобретать велосипеды, почти сразу придётся пересаживаться на самокаты 🙂
Вот бы ещё раскраску для языка запросов…
(30)Ну ну, и вместо 1с у вас самописка, конечно же да? На тему раскраски языка запросов, по ссылкам выше, раскраска языка запросов есть, ее просто надо прикрутить. Сколько потратил бы времени автор, что бы это реализовать? Достаточно много, что бы свести к нулю смысл этого действия.
Параметры в запросах «&Параметр» при раскраске делает «& amp;Параметр».
А так суперская штука, не раз выручала.
(32) dark_wolf, в итоговой странице должно выводится правильно без amp
Автор уже много собрал интересных алгоритмов и решения, которые раскрашивали онлайн?
Поделись, а?
Happy end
Сайт заблокирован хостинг-провайдером.
вот вам и облака!
у знакомых также crm систему облачную рубанули!
не буду говорить какую, чтобы не рекламировать!
К сожалению «бобик сдох»…
https://softonit.ru/free/highlights1c/
пользуюсь этим
Выложил скрипт раскраски. Пользуйтесь кому надо.
(37) Походу еще один «бобик сдох»?
Зашел, вставил код и получил вот это:
Код получил весь синим — по тегам видно что он и не пытался ничего раскрасить. Или я что то не так понял? Кнопка одна, режима 2 — проверил оба — результат все тот же синий текст.
В общем программисты не справились с попыткой упростить жизнь другим программистам через онлайн 🙁 Оффлайн продолжает рулить!
Если у кого есть еще варианты просьба поделится.
Пока что пользуюсь тут вставкой кода для получения текста 🙂
(39) попробуйте вот это:http://www.develplatform.ru/OneC/Online-instruments/1C-Syntax-Highlighter
Баги еще есть, если найдете еще ошибки, то прошу написать сюда
https://github.com/YPermitin/Brush-and-theme-of-1C-Enterprise-for-SyntaxHighlighter/issues
Рано или поздно исправлю =)
Ну или кидайте pull-request’ы со своим решением.