Class: Gilenson::RedClothExtra

Inherits:
RedCloth
  • Object
show all
Defined in:
lib/extras/redcloth_extra.rb,
lib/extras/redcloth_extra.rb

Overview

RedCloth 3 - RuTils выполняет перегрузку Textile Glyphs в RedCloth, перенося форматирование спецсимволов на Gilenson. Применять как стандартный RedCloth

RuTils::Gilenson::RedClothExtra.new(some_text).to_html

Instance Method Summary collapse

Instance Method Details

#htmlesc(text, mode = 0) ⇒ Object

Этот метод в RedCloth при наличии Гиленсона становится заглушкой



27
28
29
# File 'lib/extras/redcloth_extra.rb', line 27

def htmlesc(text, mode=0)
  text
end

#pgl(text) ⇒ Object

А этот метод обрабатывает Textile Glyphs - ту самую типографицу. Вместо того чтобы влезать в чужие таблицы мы просто заменим Textile Glyphs на Gilenson - и все будут рады.



33
34
35
36
37
38
39
40
# File 'lib/extras/redcloth_extra.rb', line 33

def pgl(text) #:nodoc:
  # Подвешиваем пробелы в начале и в конце каждого блока. Тряпка требует чтобы эти пробелы приехали
  # назад нетронутыми.
  spaces =  Array.new(2,'')
  text.gsub!(/\A([\s]+)/) { spaces[0] = $1; '' }
  text.gsub!(/(\s+)\Z/) { spaces[1] = $1; '' }
  text.replace(spaces[0].to_s + ::Gilenson.new(text).to_html + spaces[1].to_s)
end

#to_html(*anything) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/extras/redcloth_extra.rb', line 5

def to_html(*anything)
  suspended = super(*anything)
  
  # Return quotes to original state
  [187, 171, 8220, 8221].map do |e| 
    suspended.gsub!(/&\##{e};/, '"')
  end
  
  # Return spaces to original state
  [160].map do |e| 
    suspended.gsub!(/&\##{e};/, ' ')
  end
  
  suspended.gilensize
end