Decode entities in the title
authorTom Hughes <tom@compton.nu>
Wed, 18 Jun 2014 08:25:01 +0000 (09:25 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 18 Jun 2014 08:29:17 +0000 (09:29 +0100)
They will get reencoded (if necessary) when they are output. Fixes #764.

app/helpers/title_helper.rb
test/helpers/title_helper_test.rb

index 8cacdf2..a1a2125 100644 (file)
@@ -1,7 +1,11 @@
+require 'htmlentities'
+
 module TitleHelper
+  @@coder = HTMLEntities.new
+
   def set_title(title = false)
     if title
-      @title = title.gsub("<bdi>", "\u202a").gsub("</bdi>", "\u202c")
+      @title = @@coder.decode(title.gsub("<bdi>", "\u202a").gsub("</bdi>", "\u202c"))
       response.headers["X-Page-Title"] = t('layouts.project_name.title') + ' | ' + @title
     else
       @title = title
index cf7a112..11578cc 100644 (file)
@@ -9,5 +9,9 @@ class TitleHelperTest < ActionView::TestCase
     set_title("Test Title")
     assert_equal "OpenStreetMap | Test Title", response.header["X-Page-Title"]
     assert_equal "Test Title", @title
+
+    set_title("Test & Title")
+    assert_equal "OpenStreetMap | Test & Title", response.header["X-Page-Title"]
+    assert_equal "Test & Title", @title
   end
 end