lib/stepmod/utils/converters/strong.rb in stepmod-utils-0.2.4 vs lib/stepmod/utils/converters/strong.rb in stepmod-utils-0.2.5
- old
+ new
@@ -2,16 +2,36 @@
module Stepmod
module Utils
module Converters
class Strong < ReverseAdoc::Converters::Base
+ BLANK_CHARS = "{blank}".freeze
+
def convert(node, state = {})
content = treat_children(node, state.merge(already_strong: true))
if content.strip.empty? || state[:already_strong]
content
else
- "#{content[/^\s*/]}*#{content.strip}*#{content[/\s*$/]}"
+ handle_express_escape_seq(node, "#{content[/^\s*/]}*#{content.strip}*#{content[/\s*$/]}")
end
+ end
+
+ private
+
+ def handle_express_escape_seq(node, content)
+ res = content
+ if braces_sibling?(node.previous, true)
+ res = "#{BLANK_CHARS}#{res}"
+ end
+ if braces_sibling?(node.next)
+ res = "#{res}#{BLANK_CHARS}"
+ end
+ res
+ end
+
+ def braces_sibling?(sibling, end_of_text = false)
+ match = end_of_text ? /\($/ : /^\)/
+ sibling && sibling.text? && sibling.text =~ match
end
end
ReverseAdoc::Converters.register :strong, Strong.new
ReverseAdoc::Converters.register :b, Strong.new
\ No newline at end of file