Aozora2Epub
view release on metacpan or search on metacpan
t/gaiji-replace.t view on Meta::CPAN
use strict;
use warnings;
use utf8;
use Test::More;
use Test::Base;
use Aozora2Epub;
use Aozora2Epub::Gensym;
use lib qw/./;
use t::Util;
plan tests => 1 * blocks;
sub eval_unicode_notation {
my $s = shift;
$s =~ s|\\x\{([0-9a-fA-F]+)\}|chr(hex($1))|esg;
return $s;
}
filters {
html => 'chomp',
expected => ['chomp', 'eval_unicode_notation'],
};
run {
my $block = shift;
Aozora2Epub::Gensym->reset_counter;
my $doc = Aozora2Epub->new($block->html, no_fetch_assets=>1);
my $got = join('', map { $_->as_html } @{$doc->files});
is_deeply($got, $block->expected, $block->name);
};
__DATA__
=== simple unicode
--- html
â»<span class="notes">ï¼»ï¼ãã¦ã¸ãï¼å»ããU+62BEã369-2ï¼½</span>
--- expected
\x{62be}
=== non gaiji note
--- html
ããã<span class="notes">ï¼»ï¼ ãããã¯ããï¼½</span>
--- expected
ããã<span class="notes">ï¼»ï¼ ãããã¯ããï¼½</span>
=== within ruby
--- html
å´<ruby><rb>é¸â»</rb><rp>ï¼</rp><rt>ããã</rt><rp>ï¼</rp></ruby><span class="notes">ï¼»ï¼ãæ¯ï¼é³¥ããU+4CC7ã217-9ï¼½</span>ã®ãã¨ã
--- expected
å´<ruby><rb>é¸\x{4cc7}</rb><rp>ï¼</rp><rt>ããã</rt><rp>ï¼</rp></ruby>ã®ãã¨ã
=== corrupted ruby
--- html
å´<ruby><rb>é¸</rb><rp>ï¼</rp><rt>ããã</rt><rp>ï¼</rp></ruby><span class="notes">ï¼»ï¼ãæ¯ï¼é³¥ããU+4CC7ã217-9ï¼½</span>ã®ãã¨ã
--- expected
å´<ruby><rb>é¸</rb><rp>ï¼</rp><rt>ããã</rt><rp>ï¼</rp></ruby><span class="notes">ï¼»ï¼ãæ¯ï¼é³¥ããU+4CC7ã217-9ï¼½</span>ã®ãã¨ã
=== within ruby 2
--- html
人éã«åºã¦<ruby><rb>â»è
¹</rb><rp>ï¼</rp><rt>ããããµã</rt><rp>ï¼</rp></ruby><span class="notes">ï¼»ï¼ãæ¨ï¼å·ããU+67B5ã532-2ï¼½</span>ãå
ãããã
--- expected
人éã«åºã¦<ruby><rb>\x{67b5}è
¹</rb><rp>ï¼</rp><rt>ããããµã</rt><rp>ï¼</rp></ruby>ãå
ãããã
=== within ruby 3
--- html
人éã«åºã¦<ruby><rb>â»è
¹è
¹</rb><rp>ï¼</rp><rt>ããããµã</rt><rp>ï¼</rp></ruby><span class="notes">ï¼»ï¼ãæ¨ï¼å·ããU+67B5ã532-2ï¼½</span>ãå
ãããã
--- expected
人éã«åºã¦<ruby><rb>\x{67b5}è
¹è
¹</rb><rp>ï¼</rp><rt>ããããµã</rt><rp>ï¼</rp></ruby>ãå
ãããã
=== simple jis
--- html
â»<span class="notes">ï¼»ï¼ãç«ï¼è¯ãã第3æ°´æº1-87-62ï¼½</span>
--- expected
\x{71c1}
=== simple jis 2
--- html
â»<span class="notes">ï¼»ï¼ãããããï¼é¼¾ã®ã¸ããã第4æ°´æº2-79-37ï¼½</span>
--- expected
\x{6fde}
=== corrupted jis
--- html
ãã<span class="notes">ï¼»ï¼ãããããï¼é¼¾ã®ã¸ããã第4æ°´æº2-79-37ï¼½</span>
--- expected
ãã<span class="notes">ï¼»ï¼ãããããï¼é¼¾ã®ã¸ããã第4æ°´æº2-79-37ï¼½</span>
=== image gaiji in rb
--- html
åç©å¦è
ã¯<ruby><rb>â»<img src="../../../gaiji/1-91/1-91-65.png" alt="â»(ãè«ï¼æ¯ãã第3æ°´æº1-91-65)" class="gaiji" /></rb><rp>ï¼</rp><rt>ããã</rt><rp>ï¼</rp></ruby><span class="notes">ï¼»ï¼ãè«ï¼å ããU+86C5ã18-5ï¼½</...
--- expected
åç©å¦è
ã¯<ruby><rb>\x{86c5}\x{87d6}</rb><rp>ï¼</rp><rt>ããã</rt><rp>ï¼</rp></ruby>ã®å¤ã
=== kindle font broken jis
--- html
<img src="../../../gaiji/1-90/1-90-61.png" />
--- expected
<img src="../gaiji/1-90/1-90-61.png" />
=== kindle font broken jis 2
--- html
<img src="../../../gaiji/2-15/2-15-73.png" />
--- expected
<img src="../gaiji/2-15/2-15-73.png" />
=== kindle font broken jis 3
--- html
<img src="../../../gaiji/1-06/1-06-88.png" />
--- expected
<img src="../gaiji/1-06/1-06-88.png" />
=== kindle font broken unicode
--- html
â»<span class="notes">ï¼»ï¼ããããããU+2152ã369-2ï¼½</span>
--- expected
â»<span class="notes">ï¼»ï¼ããããããU+2152ã369-2ï¼½</span>
=== kindle font broken unicode 2
--- html
â»<span class="notes">ï¼»ï¼ããããããU+2189ã369-2ï¼½</span>
--- expected
â»<span class="notes">ï¼»ï¼ããããããU+2189ã369-2ï¼½</span>
=== kindle font broken unicode 3
--- html
â»<span class="notes">ï¼»ï¼ããããããU+26BDã369-2ï¼½</span>
--- expected
â»<span class="notes">ï¼»ï¼ããããããU+26BDã369-2ï¼½</span>
=== kindle font broken unicode 4
--- html
â»<span class="notes">ï¼»ï¼ããããããU+26BEã369-2ï¼½</span>
--- expected
â»<span class="notes">ï¼»ï¼ããããããU+26BEã369-2ï¼½</span>
=== kindle font broken unicode 5
--- html
â»<span class="notes">ï¼»ï¼ããããããU+3244ã369-2ï¼½</span>
--- expected
â»<span class="notes">ï¼»ï¼ããããããU+3244ã369-2ï¼½</span>
=== kindle font broken unicode over 0xffff
--- html
â»<span class="notes">ï¼»ï¼ããããããU+1F130ã369-2ï¼½</span>
--- expected
â»<span class="notes">ï¼»ï¼ããããããU+1F130ã369-2ï¼½</span>
=== kindle font broken unicode over 0xffff but ok
--- html
â»<span class="notes">ï¼»ï¼ããããããU+2a2b2ã369-2ï¼½</span>
--- expected
\x{2a2b2}
( run in 0.767 second using v1.01-cache-2.11-cpan-f56aa216473 )