В проектах, ориентированных на IT аудиторию время от времени возникает задача подсветки синтаксиса исходных файлов. Недавно, я захотел посмотреть как эта задача решается в Ruby.
Для Ruby существует решение CodeRay которое позволяет подсвечивать синтаксис на стороне сервера для следующих языков:
Процесс подсветки происходит на стороне сервера, поэтому не загружает клиента (если используются web-технологии, типа Ruby On Rails), а также возможна разработка отдельных утилит (например, консольных), для создания html файлов с подсвеченным кодом.
Рассмотрим небольшой пример работы с CodeRay и напишем небольшое консольное приложение, которое будет создавать подсветку для заданного Ruby файла.
Для начала установим CodeRay простой командой
После этого напишем саму программу (ее придумывал не я сам, поэтому сохраню ее, так сказать, в первозданном, нетронутом виде)
Разберем эту простую программу по порядку: сначала мы подключаем модуль coderay, чтобы иметь доступ к интересующим нас классам. После этого проверяем количесто аргументов командной строки и извлекаем имя файла из первого аргумента. Далее идет самая важная часть нашей программы — использование ф-ии CodeRay.encode, которой мы передаем следующие аргументы:
А теперь попросим созданную нами программу подсветить саму себя. Для этого выполним такую команду
После чего у нас появится файл test.html (который можно открыть любым браузером), содержащий подсвеченный вариант программы codecolor.rb.
Собственно, вот и все, что нужно знать при использовании генератора подсветки кода в Ruby. Для более подробного изучения CodeRay советую посетить официальный сайт
Для Ruby существует решение CodeRay которое позволяет подсвечивать синтаксис на стороне сервера для следующих языков:
- Ruby
- С
- Delphi
- HTML
- RHTML (Rails)
- Nitro-XHTML
- CSS
- Diff
- Java
- JavaScript
- JSON
- YAML
Процесс подсветки происходит на стороне сервера, поэтому не загружает клиента (если используются web-технологии, типа Ruby On Rails), а также возможна разработка отдельных утилит (например, консольных), для создания html файлов с подсвеченным кодом.
Рассмотрим небольшой пример работы с CodeRay и напишем небольшое консольное приложение, которое будет создавать подсветку для заданного Ruby файла.
Для начала установим CodeRay простой командой
gem install coderay
После этого напишем саму программу (ее придумывал не я сам, поэтому сохраню ее, так сказать, в первозданном, нетронутом виде)
#!/usr/bin/env ruby
# courtesy: Helder
# obvio171.wordpress.com/2007/06/03/colorful-ruby-code-for-your-blog
# modified to output to stdout so can be used as a filter
# 2008-09-03 23:22
require 'rubygems'
require 'coderay'
if ARGV.length != 1
puts "Wrong number of arguments. Use: codecolor.rb <source_file>"
exit
end
rb_file = File.expand_path(ARGV[0])
print CodeRay.encode(
File.read(rb_file),
:ruby,
:html,
:line_numbers => :inline,
:hint => :info,
:css => :style,
:wrap => :div
)
Разберем эту простую программу по порядку: сначала мы подключаем модуль coderay, чтобы иметь доступ к интересующим нас классам. После этого проверяем количесто аргументов командной строки и извлекаем имя файла из первого аргумента. Далее идет самая важная часть нашей программы — использование ф-ии CodeRay.encode, которой мы передаем следующие аргументы:
- подсвечиваемый текст
- язык, синтаксис которого мы подсвечиваем
- формат выходных данных
- стиль отображения номеров строк
- формат дополнительных подсказок, к подсвеченному коду
- способ подключения стилей (может быть :class или :style)
- способ обертки элементов
А теперь попросим созданную нами программу подсветить саму себя. Для этого выполним такую команду
ruby codecolor.rb > test.html
После чего у нас появится файл test.html (который можно открыть любым браузером), содержащий подсвеченный вариант программы codecolor.rb.
Собственно, вот и все, что нужно знать при использовании генератора подсветки кода в Ruby. Для более подробного изучения CodeRay советую посетить официальный сайт