Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Подсветка синтаксиса Ruby


Автор: Cr@$h 21.9.2006, 01:48
На форуме ещё не реализована подсветка кода Ruby. Предлагаю ввести её. Программистов, использующих среды программирования и соответствующие редакторы с подсветкой синтаксиса, прошу составить ключевые слова и правила подcветки. После введения подсветки, можно будет использовать тег [code=ruby], который сейчас не окрашивает код Ruby.

За примерами оформления заявки можно обращаться к аналогичным темам других форумов, где уже обсуждалась подсветка (подцветка) синтаксиса. Например, http://forum.vingrad.ru/index.php?showtopic=80363, http://forum.vingrad.ru/index.php?showtopic=80959.

Автор: skalex 21.9.2006, 12:14
Вот, набросал тут "на коленке" ... И пока без указания цветов ... Давайте вместе дорабатывать.

Язык регистро-зависимый.

1. Комментарии - цвет: #008000, italic

Однострочный:
Код
# comment

Многострочный:
Код
=begin
comment
=end


2. Строки - цвет: #996600

Код
"text"
'text'

%(text)
%q(text)
%Q(text)

%{text}
%q{text}
%Q{text}

%[text]
%q[text]
%Q[text]

%<text>
%q<text>
%Q<text>

%$text$
%q$text$
%Q$text$

%w(array of strings)
%W(array of strings)

%w{array of strings}
%W{array of strings}

%w[array of strings]
%W[array of strings]

%w<array of strings>
%W<array of strings>

%w@array of strings@
%W$array of strings$

<<FOO
heredoc
FOO

<<-FOO
heredoc
FOO

<<"FOO"
heredoc
FOO

<<-"FOO"
heredoc
FOO

<<'FOO'
heredoc
FOO

<<-'FOO'
heredoc
FOO

`command`

%x(command)

%x{command}

%x[command]

%x<command>

%x$command$

%r(regexp)

%r{regexp}

%r[regexp]

%r<regexp>

%r$regexp$

(/regexp/)


3. Ключевые сова

Цвет - #9966CC, bold
Код
BEGIN
END
alias
begin
break
case
class
def
do
else
elsif
end
ensure
for
if
in
module
next
redo
rescue
retry
return
then
undef
unless
until
when
while
yield
load
require
include


Цвет - #9900CC
Код
and
not
or


Цвет - #0000FF, bold
Код
false
nil
self
super
true


Цвет - #000060
Код
$defout
$deferr
$stderr
$stdin
$stdout
$DEBUG
$FILENAME
$LOAD_PATH
$SAFE
$VERBOSE
__FILE__
__LINE__
ARGF
ARGV
ENV
DATA
FALSE
NIL
RUBY_PLATFORM
RUBY_RELEASE_DATE
RUBY_VERSION
STDERR
STDIN
STDOUT
SCRIPT_LINES__
TOPLEVEL_BINDING
TRUE

Автор: Cr@$h 23.9.2006, 05:35
Спасибо, skalex, очень неплохо. Хорошо бы ещё указать чувствительность к регистру (нам то всё понятно, но не всем же).

Для разных ключевых слов могут быть разные подсветки. То же касается и строк. За основу можно взять какой-нибудь популярный/официальный редактор/IDE.

Может пригодиться работа в Photoshop для извлечения цвета. Во-первых, не везде можно посмотреть цвет даже в привычном формате RGB, а, во-вторых, так удобнее -- сразу в HEX-формате (16-ричном). Делаем в редакторе/IDE снимок экрана -- Alt+Print Screen. Запускаем Photoshop. File > New > Ok. Вставляем снимок Ctrl+V. Берём пипетку (Eyedropper Tool) и выбираем ею на рисунке нужный цвет. Новый цвет установлен как текущий, щёлкаем по нему дважды. Всё, необходимое поле -- #.

Автор: skalex 23.9.2006, 12:19
Цитата(Cr@$h @ 23.9.2006,  06:35)
Может пригодиться работа в Photoshop для извлечения цвета. Во-первых, не везде можно посмотреть цвет даже в привычном формате RGB, а, во-вторых, так удобнее -- сразу в HEX-формате (16-ричном). Делаем в редакторе/IDE снимок экрана -- Alt+Print Screen. Запускаем Photoshop. File > New > Ok. Вставляем снимок Ctrl+V. Берём пипетку (Eyedropper Tool) и выбираем ею на рисунке нужный цвет. Новый цвет установлен как текущий, щёлкаем по нему дважды. Всё, необходимое поле -- #.

Cr@$h, есть для этого есть очень простой инстрУмент: http://www.nattyware.com/pixie.html.

Автор: umup 23.9.2006, 14:07
 Можно взять из Programmer's notepad (www.pnotepad.org), в меню /tools/options/schemes есть настройки для параметров и список ключевых слов, а в папке pn/schemes стили в формате xml. Думаю, в других редакторах также существует что-то подобное.
 Конкретно для Руби регистр слов имеет значение.

Автор: Cr@$h 23.9.2006, 19:51
Цитата(skalex @  23.9.2006,  13:19 Найти цитируемый пост)
Cr@$h, есть для этого есть очень простой инстрУмент: pixie.

Просто не люблю изменять, дело привычки.
Цитата(umup @  23.9.2006,  15:07 Найти цитируемый пост)
Можно взять из Programmer's notepad (www.pnotepad.org), в меню /tools/options/schemes есть настройки для параметров и список ключевых слов, а в папке pn/schemes стили в формате xml. Думаю, в других редакторах также существует что-то подобное.

skalex или umup, действуйте. smile 
Цитата(umup @  23.9.2006,  15:07 Найти цитируемый пост)
Конкретно для Руби регистр слов имеет значение.

Мы знаем, да. Я про то, что, skalex, редактируй регулярно свой пост, наверное пока.

Автор: Cr@$h 2.10.2006, 22:30
Почему никто не активничает, неужели не нужная фича...

Автор: skalex 6.10.2006, 16:20
Я отредактировал свой пост - указал цвета для разных групп.

Автор: skalex 6.10.2006, 16:47
Ну а посмотреть можно тут: http://www.skalex.org/others/ruby_highlight_vingrad/.

Автор: Bikutoru 6.10.2006, 17:03
может имеет смысл подсвечивать также attr_reader, attr_writer, attr_accessor? Мне кажется, это лишним не будет. А пример выглядит очень неплохо

Добавлено @ 17:03 
P.S. include забыли...

Автор: skalex 6.10.2006, 17:08
Bikutoruinclude добавил. Насчет подсветки дополнительных "слов", я только за. Все обсуждаемо.

Автор: Cr@$h 7.10.2006, 05:09
Здорово, и пример хороший. Правда со строками не всё понятно, мне кажется: text, array of strings, command, regexp должны проверяться на что-то или подсвечиваются в любом случае, чтобы там ни было написано? В примере не подсвечиваются %r</\z>, например. В общем, со строками не совсем ясно.
Цитата(Bikutoru @  6.10.2006,  18:03 Найти цитируемый пост)
может имеет смысл подсвечивать также attr_reader, attr_writer, attr_accessor? Мне кажется, это лишним не будет

Цитата(skalex @  6.10.2006,  18:08 Найти цитируемый пост)
Насчет подсветки дополнительных "слов", я только за. Все обсуждаемо. 

Конечно, и лучше использовать IDE, где подсвечивается по максимуму или наиболее популярную IDE. Тот же http://www.pnotepad.org ...

Автор: skalex 7.10.2006, 09:05
Cr@$h, в моем примере просто ориентировочный пример, как могла бы выглядеть подстветка синтаксиса Ruby. Реально там все раскрашивается движком geshi. И там нет возможности задавать правила подсветки строк, кроме как кавычек.

Автор: Cr@$h 7.10.2006, 18:17
Ок, пока думай над этим, как лучше подсветить (чем, точнее):
Цитата(Bikutoru @  6.10.2006,  18:03 Найти цитируемый пост)
может имеет смысл подсвечивать также attr_reader, attr_writer, attr_accessor? Мне кажется, это лишним не будет.

Опять же, можно посмотреть, как это сделано в продвинутых средах/редакторах.

В приведённых правилах все символы лексем должны подсвечиваться? Если нет, то подсвечиваемые лучше выделить жирным. Для этого это правило надо будет оформить как цитату, иначе жирные теги не будут действовать.

Автор: skalex 9.10.2006, 08:38
Cr@$h, вообще хорошо бы знать какими возможностями обладает винградовский движок подсветки ...

Автор: Cr@$h 9.10.2006, 23:09
Тут у sergeyzr спросить надо. Вообще, возможности довольно таки гибкие -- столько языков уже введено (Fortran остался только, но там свои сложности). Лучше чётко правила описать, дать Сергею, а потом он сам скажет, что real, а что unreal.

Автор: skalex 10.10.2006, 08:24
Еще к обсуждению:
  •  Подсветка имен встроенных классов и модулей
  •  Подстветка имен методов

Автор: skalex 22.2.2007, 12:24
Может поставим точку в этом деле?  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)