OSDN Git Service

Plugin::NewslashHelpers: fix journal/submission text formatting problem
authorhylom <hylom@users.sourceforge.jp>
Mon, 6 May 2019 16:40:37 +0000 (01:40 +0900)
committerhylom <hylom@users.sourceforge.jp>
Mon, 6 May 2019 16:40:37 +0000 (01:40 +0900)
src/newslash_web/lib/Newslash/Plugin/NewslashHelpers.pm
src/newslash_web/lib/Newslash/Util/TextFormatter.pm
src/newslash_web/t/plugins/newslash_helpers.t

index be93931..46106d6 100644 (file)
@@ -132,7 +132,7 @@ sub _format_htmltext {
         $c->app->log->warn("NewslashHelper::_format_htmltext: invalid type - '$type'");
         $allowed = $c->app->config->{Editor}->{allowed_tags};
     }
-    return Newslash::Util::TextFormatter::escape_html($allowed, $text);
+    return Newslash::Util::TextFormatter::clean_html($allowed, $text);
 }
 
 =head2 strip_by_mode($html, $post_type)
index 3961672..0a52198 100644 (file)
@@ -552,9 +552,10 @@ sub tidy_html {
     my ($html) = @_;
     my $tidy = HTML::Tidy->new( {
                                  tidy_mark => 0,
+                                 wrap => 0,
                                  doctype => 'omit',
                                  'show-body-only' => 1,
-                     } );
+                                } );
     my $tidyed = $tidy->clean($html);
     chomp($tidyed);
     return $tidyed;
@@ -581,14 +582,7 @@ sub clean_html {
     my ($allowed, $html) = @_;
     my $escaped = escape_html($allowed, $html);
     $escaped = EscapeHTML::blank_line_to_paragraph($escaped);
-
-    my $tidy = HTML::Tidy->new( {
-                                 tidy_mark => 0,
-                                 doctype => 'omit',
-                                 'show-body-only' => 1,
-                     } );
-    my $tidyed = $tidy->clean($escaped);
-    return $tidyed;
+    return tidy_html($escaped);
 }
 
 =head2 escape_plaintext($text)
index 692c0ce..4dc6927 100644 (file)
@@ -28,9 +28,41 @@ EOT
 EOT
 
     my $rs = $t->app->format_htmltext($text, "story");
-    cmp_ok($correct, "eq", $rs, "format_htmltext");
+    cmp_ok($rs, "eq", $correct, "format_htmltext (story)");
 
+    $text = <<EOT;
+<p>insiderman曰く、</p><blockquote
+><p>はやくも来年発表されるとみられているiPhoneの新モデルの噂が出始めている(<a href="https://www.theverge.com/circuitbreaker/2017/11/13/16644266/apple-iphone-x-plus-rumor-two-fullscreen-phones-2018">The Verge</a>、<a href="http://jbpress.ismedia.jp/articles/-/51619">JBPress</a>、<a href="https://hardware.slashdot.org/story/17/11/14/000224/apple-could-launch-two-new-full-screen-iphones-next-year">Slashdot</a>)。</p>
+<p>KGI SecuritiesのアナリストMing-Chi Kuo氏による予想では、6.5インチ有機ELディスプレイを搭載したモデルがiPhone Xの新たなモデル(「Plus」バージョン)として出るのではないか、とされている。また、iPhone 8 Plusと同等のサイズでiPhone Xのようにフルスクリーン化した6.1インチ液晶ディスプレイ搭載モデルも出る可能性があるとも予測されている。これは、「ハイエンド市場」のさまざまな需要を狙ったものになるという。iPhone Xはその価格も話題となったが、液晶ディスプレイの採用で価格を下げることができるようだ。</p>
+</blockquote>
+EOT
+
+    $correct = <<EOT;
+<p>insiderman曰く、</p>
+<blockquote>
+<p>はやくも来年発表されるとみられているiPhoneの新モデルの噂が出始めている(<a href="https://www.theverge.com/circuitbreaker/2017/11/13/16644266/apple-iphone-x-plus-rumor-two-fullscreen-phones-2018">The Verge</a>、<a href="http://jbpress.ismedia.jp/articles/-/51619">JBPress</a>、<a href="https://hardware.slashdot.org/story/17/11/14/000224/apple-could-launch-two-new-full-screen-iphones-next-year">Slashdot</a>)。</p>
+<p>KGI SecuritiesのアナリストMing-Chi Kuo氏による予想では、6.5インチ有機ELディスプレイを搭載したモデルがiPhone Xの新たなモデル(「Plus」バージョン)として出るのではないか、とされている。また、iPhone 8 Plusと同等のサイズでiPhone Xのようにフルスクリーン化した6.1インチ液晶ディスプレイ搭載モデルも出る可能性があるとも予測されている。これは、「ハイエンド市場」のさまざまな需要を狙ったものになるという。iPhone Xはその価格も話題となったが、液晶ディスプレイの採用で価格を下げることができるようだ。</p>
+</blockquote>
+EOT
+
+    $rs = $t->app->format_htmltext($text, "submission");
+    cmp_ok($rs, "eq", $correct, "format_htmltext (submission)");
+
+    $text = <<EOT;
+はやくも来年発表されるとみられているiPhoneの新モデルの噂が出始めている(<a href="https://www.theverge.com/circuitbreaker/2017/11/13/16644266/apple-iphone-x-plus-rumor-two-fullscreen-phones-2018">The Verge</a>、<a href="http://jbpress.ismedia.jp/articles/-/51619">JBPress</a>、<a href="https://hardware.slashdot.org/story/17/11/14/000224/apple-could-launch-two-new-full-screen-iphones-next-year">Slashdot</a>)。
+
+KGI SecuritiesのアナリストMing-Chi Kuo氏による予想では、6.5インチ有機ELディスプレイを搭載したモデルがiPhone Xの新たなモデル(「Plus」バージョン)として出るのではないか、とされている。<p>また、iPhone 8 Plusと同等のサイズでiPhone Xのようにフルスクリーン化した6.1インチ液晶ディスプレイ搭載モデルも出る可能性があるとも予測されている。これは、「ハイエンド市場」のさまざまな需要を狙ったものになるという。iPhone Xはその価格も話題となったが、液晶ディスプレイの採用で価格を下げることができるようだ。
+</blockquote>
+EOT
+
+    $correct = <<EOT;
+<p>はやくも来年発表されるとみられているiPhoneの新モデルの噂が出始めている(<a href="https://www.theverge.com/circuitbreaker/2017/11/13/16644266/apple-iphone-x-plus-rumor-two-fullscreen-phones-2018">The Verge</a>、<a href="http://jbpress.ismedia.jp/articles/-/51619">JBPress</a>、<a href="https://hardware.slashdot.org/story/17/11/14/000224/apple-could-launch-two-new-full-screen-iphones-next-year">Slashdot</a>)。</p>
+<p>KGI SecuritiesのアナリストMing-Chi Kuo氏による予想では、6.5インチ有機ELディスプレイを搭載したモデルがiPhone Xの新たなモデル(「Plus」バージョン)として出るのではないか、とされている。</p>
+<p>また、iPhone 8 Plusと同等のサイズでiPhone Xのようにフルスクリーン化した6.1インチ液晶ディスプレイ搭載モデルも出る可能性があるとも予測されている。これは、「ハイエンド市場」のさまざまな需要を狙ったものになるという。iPhone Xはその価格も話題となったが、液晶ディスプレイの採用で価格を下げることができるようだ。</p>
+EOT
 
+    $rs = $t->app->format_htmltext($text, "submission");
+    cmp_ok($rs, "eq", $correct, "format_htmltext (submission - 2)");
 };
 
 done_testing();