OSDN Git Service

TweetFormatterによる半角スペースの   への変換を最小限にする
authorKimura Youichi <kim.upsilon@bucyou.net>
Wed, 1 Jun 2016 01:19:00 +0000 (10:19 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Wed, 1 Jun 2016 01:23:06 +0000 (10:23 +0900)
339e4c25 における string インスタンスの共通化が行われやすくするため

OpenTween.Tests/TweetFormatterTest.cs
OpenTween/TweetFormatter.cs

index 3761200..da68b41 100644 (file)
@@ -249,7 +249,7 @@ namespace OpenTween
                 },
             };
 
-            var expected = "&lt;b&gt;&nbsp;<a class=\"mention\" href=\"https://twitter.com/twitterapi\">@twitterapi</a>&nbsp;&lt;/b&gt;";
+            var expected = "&lt;b&gt; <a class=\"mention\" href=\"https://twitter.com/twitterapi\">@twitterapi</a> &lt;/b&gt;";
             Assert.Equal(expected, TweetFormatter.AutoLinkHtml(text, entities));
         }
 
@@ -269,7 +269,7 @@ namespace OpenTween
                 },
             };
 
-            var expected = "&lt;b&gt;&nbsp;<a class=\"mention\" href=\"https://twitter.com/twitterapi\">@twitterapi</a>&nbsp;&lt;/b&gt;";
+            var expected = "&lt;b&gt; <a class=\"mention\" href=\"https://twitter.com/twitterapi\">@twitterapi</a> &lt;/b&gt;";
             Assert.Equal(expected, TweetFormatter.AutoLinkHtml(text, entities));
         }
 
@@ -307,7 +307,7 @@ namespace OpenTween
                 },
             };
 
-            var expected = "🐬🐬&nbsp;<a class=\"mention\" href=\"https://twitter.com/irucame\">@irucame</a>&nbsp;🐬🐬";
+            var expected = "🐬🐬 <a class=\"mention\" href=\"https://twitter.com/irucame\">@irucame</a> 🐬🐬";
             Assert.Equal(expected, TweetFormatter.AutoLinkHtml(text, entities));
         }
 
@@ -330,8 +330,8 @@ namespace OpenTween
                 },
             };
 
-            var expected = "🐬🐬&nbsp;<a class=\"hashtag\" href=\"https://twitter.com/search?q=%23%F0%9F%90%AC%F0%9F%90%AC\">#🐬🐬</a>&nbsp;" +
-                "🐬🐬&nbsp;<a class=\"hashtag\" href=\"https://twitter.com/search?q=%23%F0%9F%90%AC%F0%9F%90%AC\">#🐬🐬</a>&nbsp;🐬🐬";
+            var expected = "🐬🐬 <a class=\"hashtag\" href=\"https://twitter.com/search?q=%23%F0%9F%90%AC%F0%9F%90%AC\">#🐬🐬</a> " +
+                "🐬🐬 <a class=\"hashtag\" href=\"https://twitter.com/search?q=%23%F0%9F%90%AC%F0%9F%90%AC\">#🐬🐬</a> 🐬🐬";
             Assert.Equal(expected, TweetFormatter.AutoLinkHtml(text, entities));
         }
 
@@ -350,7 +350,7 @@ namespace OpenTween
                 },
             };
 
-            var expected = "Caf\u00e9&nbsp;<a class=\"hashtag\" href=\"https://twitter.com/search?q=%23test\">#test</a>";
+            var expected = "Caf\u00e9 <a class=\"hashtag\" href=\"https://twitter.com/search?q=%23test\">#test</a>";
             Assert.Equal(expected, TweetFormatter.AutoLinkHtml(text, entities));
         }
 
@@ -369,7 +369,7 @@ namespace OpenTween
                 },
             };
 
-            var expected = "Cafe\u0301&nbsp;<a class=\"hashtag\" href=\"https://twitter.com/search?q=%23test\">#test</a>";
+            var expected = "Cafe\u0301 <a class=\"hashtag\" href=\"https://twitter.com/search?q=%23test\">#test</a>";
             Assert.Equal(expected, TweetFormatter.AutoLinkHtml(text, entities));
         }
 
@@ -384,6 +384,16 @@ namespace OpenTween
         }
 
         [Fact]
+        public void AutoLinkHtml_WhitespaceTest()
+        {
+            // 連続する半角スペースを表示するため 1 文字おきに &nbsp; に変換する
+            var text = "a a  a   a    a";
+
+            var expected = "a a &nbsp;a &nbsp; a &nbsp; &nbsp;a";
+            Assert.Equal(expected, TweetFormatter.AutoLinkHtml(text, entities: null));
+        }
+
+        [Fact]
         public void AutoLinkHtml_OverlappedEntitiesTest()
         {
             // extended_entities で追加される、区間が重複したエンティティを考慮
@@ -426,7 +436,7 @@ namespace OpenTween
                 },
             };
 
-            var expected = "&quot;I&nbsp;hope&nbsp;you&#39;ll&nbsp;keep...building&nbsp;bonds&nbsp;of&nbsp;friendship&nbsp;that&nbsp;will&nbsp;enrich&nbsp;your&nbsp;lives&nbsp;&amp;&nbsp;enrich&nbsp;our&nbsp;world&quot;&nbsp;\u2014FLOTUS&nbsp;in&nbsp;China,&nbsp;" +
+            var expected = "&quot;I hope you&#39;ll keep...building bonds of friendship that will enrich your lives &amp; enrich our world&quot; \u2014FLOTUS in China, " +
                 "<a href=\"http://t.co/fxmuQN9JL9\" title=\"http://twitter.com/FLOTUS/status/449660889793581056/photo/1\">pic.twitter.com/fxmuQN9JL9</a>";
             Assert.Equal(expected, TweetFormatter.AutoLinkHtml(text, entities));
         }
index f130d6b..1eb0cb2 100644 (file)
@@ -24,6 +24,7 @@ using System.Collections.Generic;
 using System.Globalization;
 using System.Linq;
 using System.Text;
+using System.Text.RegularExpressions;
 using OpenTween.Api.DataModel;
 
 namespace OpenTween
@@ -209,7 +210,7 @@ namespace OpenTween
         private static string FilterText(string text)
         {
             text = text.Replace("\n", "<br>");
-            text = text.Replace(" ", "&nbsp;");
+            text = Regex.Replace(text, "  ", " &nbsp;");
 
             return text;
         }