#207
12 августа 2010

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

В выпуске я расскажу о трех популярных средствах для подсветки синтаксиса в Rails: CodeRay, Ultraviolet и Pygments.
Скачать (30.7 МБ, 8:47)

Источники

<%= textilize(coderay(@article.content)) %>


# config/environment.rb
config.gem "coderay"

config.gem "RedCloth"

# application_helper.rb
def coderay(text)
text.gsub(/\<code( lang="(.?)")?\>(.?)\<\/code\>/m) do

content_tag("notextile", CodeRay.scan($3, $2).div(:css => :class)) end

end

# syntax_benchmark.rb
require "rubygems"
require "benchmark"
require "coderay"
require "uv"

path = FILE
content = File.read(FILE)

# run it once to initialize
CodeRay.scan("print ‘hello’", "ruby").div(:css => :class)

Uv.parse("print ‘test’", "xhtml", "ruby", true, "amy")

Benchmark.bm(11) do |b|
b.report("coderay") do

50.times { CodeRay.scan(content, "ruby").div(:css => :class) } end b.report("ultraviolet") do 50.times { Uv.parse(content, "xhtml", "ruby", true, "amy") } end b.report("pygments") do 50.times { `pygmentize -f html "#{path}"` } end

end


.CodeRay {
background-color: #232323;
border: 1px solid black;
font-family: ‘Courier New’, ‘Terminal’, monospace;
color: #E6E0DB;
padding: 3px 5px;
overflow: auto;
font-size: 12px;
margin: 12px 0;
}
.CodeRay pre {
margin: 0px;
padding: 0px;
}

.CodeRay .an { color:#E7BE69 } /* html attribute /
.CodeRay .c { color:#BC9358; font-style: italic; } /
comment /
.CodeRay .ch { color:#509E4F } /
escaped character /
.CodeRay .cl { color:#FFF } /
class /
.CodeRay .co { color:#FFF } /
constant /
.CodeRay .fl { color:#A4C260 } /
float /
.CodeRay .fu { color:#FFC56D } /
function /
.CodeRay .gv { color:#D0CFFE } /
global variable /
.CodeRay .i { color:#A4C260 } /
integer /
.CodeRay .il { background:#151515 } /
inline code /
.CodeRay .iv { color:#D0CFFE } /
instance variable /
.CodeRay .pp { color:#E7BE69 } /
doctype /
.CodeRay .r { color:#CB7832 } /
keyword /
.CodeRay .rx { color:#A4C260 } /
regex /
.CodeRay .s { color:#A4C260 } /
string /
.CodeRay .sy { color:#6C9CBD } /
symbol /
.CodeRay .ta { color:#E7BE69 } /
html tag /
.CodeRay .pc { color:#6C9CBD } /
boolean */

RSS Feed for Episode Comments 4 comments

1. Андрей Dec 01, 2010 at 03:30

Голос у девушки прикольный :)


2. Павел Jan 26, 2011 at 01:24

Да я вообще влюбился в неё. Голос приятный, и такие умные вещи говорит. А ещё, наверное, готовить умеет ^_^


3. mainameiz Jan 27, 2011 at 01:22

Неправильный regexp в коде, должно быть:

text.gsub(/\<code( lang="(.*)")?\>(.*)\<\/code\>/m) do


4. newmen Apr 01, 2011 at 05:14

На оригинальных кастах, поправлен регексп... И чтобы всё было ровненько, он должен быть таким:
/<code( lang="(.+?)")?>(.+?)<\/code>/m
Вопросики решают момент, когда в сообщении несколько раз встречаются вставки с кодом.

Оставьте свой комментарий:

(ПРОПУСТИТЕ ЭТО ПОЛЕ)

(необходимо)

(не будет отображаться)


(используйте pastie или gist для вставки кода)



Друзья:
Спонсоры:
Масс-медиа:
Facebook_icon Twitter_icon Vkontakte_icon
Воздай Опенсорсерам