Pull to refresh

Подсветка синтаксиса в Ruby

Reading time2 min
Views1.9K
В проектах, ориентированных на IT аудиторию время от времени возникает задача подсветки синтаксиса исходных файлов. Недавно, я захотел посмотреть как эта задача решается в Ruby.

Для 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 советую посетить официальный сайт
Tags:
Hubs:
Total votes 7: ↑6 and ↓1+5
Comments3

Articles