Module: RailsGuides::TextileExtensions
- Defined in:
- lib/textile_extensions.rb
Instance Method Summary collapse
- #brush_for(code_type) ⇒ Object
- #code(body) ⇒ Object
- #notestuff(body) ⇒ Object
- #plusplus(body) ⇒ Object
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 |