Module: RailsGuides::TextileExtensions

Defined in:
lib/textile_extensions.rb

Instance Method Summary collapse

Instance Method Details

#brush_for(code_type) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/textile_extensions.rb', line 36

def brush_for(code_type)
  case code_type
    when 'ruby', 'sql', 'plain'
      code_type
    when 'erb'
      'ruby; html-script: true'
    when 'html'
      'xml' # html is understood, but there are .xml rules in the CSS
    else
      'plain'
  end
end

#code(body) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/textile_extensions.rb', line 49

def code(body)
  body.gsub!(%r{<(yaml|shell|ruby|erb|html|sql|plain)>(.*?)</\1>}m) do |m|
    <<HTML
<notextile>
<div class="code_container">
<pre class="brush: #{brush_for($1)}; gutter: false; toolbar: false">
#{ERB::Util.h($2).strip}
</pre>
</div>
</notextile>
HTML
  end
end

#notestuff(body) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/textile_extensions.rb', line 5

def notestuff(body)
  # The following regexp detects special labels followed by a
  # paragraph, perhaps at the end of the document.
  #
  # It is important that we do not eat more than one newline
  # because formatting may be wrong otherwise. For example,
  # if a bulleted list follows the first item is not rendered
  # as a list item, but as a paragraph starting with a plain
  # asterisk.
  body.gsub!(/^(TIP|IMPORTANT|CAUTION|WARNING|NOTE|INFO)[.:](.*?)(\n(?=\n)|\Z)/m) do |m|
    css_class = case $1
                when 'CAUTION', 'IMPORTANT'
                  'warning'
                when 'TIP'
                  'info'
                else
                  $1.downcase
                end
    %Q(<div class="#{css_class}"><p>#{$2.strip}</p></div>)
  end
end

#plusplus(body) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/textile_extensions.rb', line 27

def plusplus(body)
  body.gsub!(/\+(.*?)\+/) do |m|
    "<notextile><tt>#{$1}</tt></notextile>"
  end

  # The real plus sign
  body.gsub!('<plus>', '+')
end