Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
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...
commit 598eab90ffb60638a578b5b205388cb755485280 1 parent 50ca6f0
@fxn fxn authored
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
Please sign in to comment.
Something went wrong with that request. Please try again.