Browse files

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.
  • Loading branch information...
1 parent ba19ddf commit 81789b79614dc144dd31f5b1b9c206c3a6749476 @fxn fxn committed Jul 25, 2011
Showing with 19 additions and 18 deletions.
  1. +1 −1 railties/guides/rails_guides/generator.rb
  2. +18 −17 railties/guides/rails_guides/textile_extensions.rb
View
2 railties/guides/rails_guides/generator.rb
@@ -204,7 +204,7 @@ def textile(body, lite_mode=false)
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
35 railties/guides/rails_guides/textile_extensions.rb
@@ -3,23 +3,24 @@
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

0 comments on commit 81789b7

Please sign in to comment.