# File lib/stringex/string_extensions.rb, line 165
165:     def convert_misc_characters(options = {})
166:       dummy = dup.gsub(/\.{3,}/, " dot dot dot ") # Catch ellipses before single dot rule!
167:       # Special rules for money
168:       {
169:         /(\s|^)\$(\d+)\.(\d+)(\s|$)/ => '\2 dollars \3 cents',
170:         /(\s|^)£(\d+)\.(\d+)(\s|$)/u => '\2 pounds \3 pence',
171:       }.each do |found, replaced|
172:         replaced = " #{replaced} " unless replaced =~ /\\1/
173:         dummy.gsub!(found, replaced)
174:       end
175:       # Back to normal rules
176:       misc_characters = 
177:       {
178:         /\s*&\s*/ => "and",
179:         /\s*#/ => "number",
180:         /\s*@\s*/ => "at",
181:         /(\S|^)\.(\S)/ => '\1 dot \2',
182:         /(\s|^)\$(\d*)(\s|$)/ => '\2 dollars',
183:         /(\s|^)£(\d*)(\s|$)/u => '\2 pounds',
184:         /(\s|^)¥(\d*)(\s|$)/u => '\2 yen',
185:         /\s*\*\s*/ => "star",
186:         /\s*%\s*/ => "percent",
187:         /(\s*=\s*)/ => " equals ",
188:         /\s*\+\s*/ => "plus",
189:         /\s*°\s*/ => "degrees"
190:       }
191:       misc_characters[/\s*(\\|\/)\s*/] = 'slash' unless options[:allow_slash]
192:       misc_characters.each do |found, replaced|
193:         replaced = " #{replaced} " unless replaced =~ /\\1/
194:         dummy.gsub!(found, replaced)
195:       end
196:       dummy = dummy.gsub(/(^|[[:alpha:]])'([[:alpha:]]|$)/, '\1\2').gsub(/[\.,:;()\[\]\/\?!\^'ʼ"_]/, " ").strip
197:     end