1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

let TIP and friends handle a multiline paragraph

Normally I would have done this in master, but there was already
a guide with wrapped content, so worked here. I am going to
cross-merge now.
This commit is contained in:
Xavier Noria 2011-07-25 14:12:12 -07:00
parent 50ca6f06c7
commit 598eab90ff
2 changed files with 19 additions and 18 deletions

View file

@ -204,7 +204,7 @@ module RailsGuides
t = RedCloth.new(body)
t.hard_breaks = false
t.lite_mode = lite_mode
t.to_html(:notestuff, :plusplus, :code, :tip)
t.to_html(:notestuff, :plusplus, :code)
end
end

View file

@ -3,23 +3,24 @@ require 'active_support/core_ext/object/inclusion'
module RailsGuides
module TextileExtensions
def notestuff(body)
body.gsub!(/^(IMPORTANT|CAUTION|WARNING|NOTE|INFO)[.:](.*)$/) do |m|
css_class = $1.downcase
css_class = 'warning' if css_class.in?(['caution', 'important'])
result = "<div class='#{css_class}'><p>"
result << $2.strip
result << '</p></div>'
result
end
end
def tip(body)
body.gsub!(/^TIP[.:](.*)$/) do |m|
result = "<div class='info'><p>"
result << $1.strip
result << '</p></div>'
result
# 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