aozora2html 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/rubocop.yml +19 -0
- data/.github/workflows/ruby.yml +4 -1
- data/.rubocop.yml +36 -152
- data/.rubocop_todo.yml +7 -0
- data/CHANGELOG.md +26 -0
- data/Gemfile +2 -0
- data/Guardfile +3 -1
- data/HACKING.md +45 -0
- data/README.md +14 -6
- data/Rakefile +12 -5
- data/aozora2html.gemspec +24 -22
- data/bin/aozora2html +21 -19
- data/lib/aozora2html/accent_parser.rb +62 -54
- data/lib/aozora2html/error.rb +5 -4
- data/lib/aozora2html/header.rb +20 -18
- data/lib/aozora2html/i18n.rb +40 -20
- data/lib/aozora2html/ruby_buffer.rb +63 -28
- data/lib/aozora2html/string_refinements.rb +36 -0
- data/lib/aozora2html/style_stack.rb +6 -0
- data/lib/aozora2html/tag/accent.rb +10 -12
- data/lib/aozora2html/tag/block.rb +11 -9
- data/lib/aozora2html/tag/chitsuki.rb +6 -2
- data/lib/aozora2html/tag/dakuten_katakana.rb +10 -8
- data/lib/aozora2html/tag/decorate.rb +4 -3
- data/lib/aozora2html/tag/dir.rb +4 -2
- data/lib/aozora2html/tag/editor_note.rb +7 -4
- data/lib/aozora2html/tag/embed_gaiji.rb +15 -11
- data/lib/aozora2html/tag/font_size.rb +5 -2
- data/lib/aozora2html/tag/gaiji.rb +4 -3
- data/lib/aozora2html/tag/img.rb +4 -4
- data/lib/aozora2html/tag/indent.rb +3 -3
- data/lib/aozora2html/tag/inline.rb +10 -7
- data/lib/aozora2html/tag/inline_caption.rb +4 -2
- data/lib/aozora2html/tag/inline_font_size.rb +4 -3
- data/lib/aozora2html/tag/inline_keigakomi.rb +4 -2
- data/lib/aozora2html/tag/inline_yokogumi.rb +4 -3
- data/lib/aozora2html/tag/jisage.rb +3 -1
- data/lib/aozora2html/tag/jizume.rb +3 -0
- data/lib/aozora2html/tag/kaeriten.rb +4 -2
- data/lib/aozora2html/tag/keigakomi.rb +15 -9
- data/lib/aozora2html/tag/kunten.rb +4 -4
- data/lib/aozora2html/tag/midashi.rb +3 -1
- data/lib/aozora2html/tag/multiline.rb +3 -0
- data/lib/aozora2html/tag/multiline_caption.rb +6 -8
- data/lib/aozora2html/tag/multiline_chitsuki.rb +3 -1
- data/lib/aozora2html/tag/multiline_jisage.rb +3 -1
- data/lib/aozora2html/tag/multiline_midashi.rb +6 -3
- data/lib/aozora2html/tag/multiline_style.rb +5 -3
- data/lib/aozora2html/tag/multiline_yokogumi.rb +6 -9
- data/lib/aozora2html/tag/okurigana.rb +4 -2
- data/lib/aozora2html/tag/oneline_chitsuki.rb +3 -2
- data/lib/aozora2html/tag/oneline_indent.rb +8 -1
- data/lib/aozora2html/tag/oneline_jisage.rb +3 -0
- data/lib/aozora2html/tag/reference_mentioned.rb +22 -21
- data/lib/aozora2html/tag/ruby.rb +174 -70
- data/lib/aozora2html/tag/un_embed_gaiji.rb +8 -2
- data/lib/aozora2html/tag.rb +40 -38
- data/lib/aozora2html/tag_parser.rb +23 -16
- data/lib/aozora2html/text_buffer.rb +50 -0
- data/lib/aozora2html/utils.rb +113 -50
- data/lib/aozora2html/version.rb +3 -1
- data/lib/aozora2html/yaml_loader.rb +8 -2
- data/lib/aozora2html/zip.rb +4 -0
- data/lib/aozora2html.rb +1358 -3
- data/lib/extensions.rb +2 -34
- data/lib/jstream.rb +96 -25
- data/sample/chukiichiran_kinyurei.html +15 -2
- data/sample/chukiichiran_kinyurei.txt +15 -2
- data/test/test_aozora2html.rb +137 -148
- data/test/test_aozora_accent_parser.rb +26 -9
- data/test/test_command_parse.rb +25 -22
- data/test/test_compat.rb +3 -4
- data/test/test_dakuten_katakana_tag.rb +10 -12
- data/test/test_decorate_tag.rb +9 -6
- data/test/test_dir_tag.rb +9 -6
- data/test/test_editor_note_tag.rb +8 -5
- data/test/test_exception.rb +10 -8
- data/test/test_font_size_tag.rb +16 -13
- data/test/test_gaiji_tag.rb +15 -14
- data/test/test_header.rb +25 -40
- data/test/test_helper.rb +3 -1
- data/test/test_i18n.rb +22 -6
- data/test/test_img_tag.rb +9 -5
- data/test/test_inline_caption_tag.rb +9 -6
- data/test/test_inline_font_size_tag.rb +13 -10
- data/test/test_inline_keigakomi_tag.rb +9 -6
- data/test/test_inline_yokogumi_tag.rb +9 -6
- data/test/test_jizume_tag.rb +9 -7
- data/test/test_jstream.rb +33 -30
- data/test/test_kaeriten_tag.rb +9 -6
- data/test/test_keigakomi_tag.rb +11 -9
- data/test/test_midashi_tag.rb +15 -14
- data/test/test_multiline_caption_tag.rb +7 -5
- data/test/test_multiline_midashi_tag.rb +24 -25
- data/test/test_multiline_style_tag.rb +9 -7
- data/test/test_multiline_yokogumi_tag.rb +7 -5
- data/test/test_okurigana_tag.rb +9 -6
- data/test/test_ruby_parse.rb +14 -14
- data/test/test_ruby_tag.rb +9 -6
- data/test/test_tag_parser.rb +28 -26
- metadata +60 -14
- data/.travis.yml +0 -12
- data/lib/t2hs.rb +0 -1607
data/test/test_aozora2html.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
2
3
|
require 'test_helper'
|
|
3
4
|
require 'aozora2html'
|
|
4
5
|
require 'fileutils'
|
|
@@ -13,67 +14,67 @@ class Aozora2HtmlTest < Test::Unit::TestCase
|
|
|
13
14
|
|
|
14
15
|
def test_aozora2html_new
|
|
15
16
|
Dir.mktmpdir do |dir|
|
|
16
|
-
input = File.join(dir,'dummy.txt')
|
|
17
|
-
output = File.join(dir,'dummy2.txt')
|
|
17
|
+
input = File.join(dir, 'dummy.txt')
|
|
18
|
+
output = File.join(dir, 'dummy2.txt')
|
|
18
19
|
File.binwrite(input, "テスト\r\n")
|
|
19
20
|
parser = Aozora2Html.new(input, output)
|
|
20
21
|
begin
|
|
21
22
|
assert_equal Aozora2Html, parser.class
|
|
22
23
|
ensure
|
|
23
|
-
parser.close
|
|
24
|
+
parser.__send__(:close)
|
|
24
25
|
end
|
|
25
26
|
end
|
|
26
27
|
end
|
|
27
28
|
|
|
28
29
|
def test_line_number
|
|
29
30
|
Dir.mktmpdir do |dir|
|
|
30
|
-
input = File.join(dir,'dummy.txt')
|
|
31
|
-
output = File.join(dir,'dummy2.txt')
|
|
31
|
+
input = File.join(dir, 'dummy.txt')
|
|
32
|
+
output = File.join(dir, 'dummy2.txt')
|
|
32
33
|
File.binwrite(input, "a\r\nb\r\nc\r\n")
|
|
33
34
|
parser = Aozora2Html.new(input, output)
|
|
34
35
|
|
|
35
36
|
begin
|
|
36
37
|
assert_equal 0, parser.line_number
|
|
37
|
-
ch = parser.read_char
|
|
38
|
-
assert_equal
|
|
38
|
+
ch = parser.__send__(:read_char)
|
|
39
|
+
assert_equal 'a', ch
|
|
39
40
|
assert_equal 1, parser.line_number
|
|
40
|
-
ch = parser.read_char
|
|
41
|
-
assert_equal "\r\n",ch
|
|
41
|
+
ch = parser.__send__(:read_char)
|
|
42
|
+
assert_equal "\r\n", ch
|
|
42
43
|
assert_equal 1, parser.line_number
|
|
43
|
-
ch = parser.read_char
|
|
44
|
-
assert_equal
|
|
44
|
+
ch = parser.__send__(:read_char)
|
|
45
|
+
assert_equal 'b', ch
|
|
45
46
|
assert_equal 2, parser.line_number
|
|
46
|
-
ch = parser.read_char
|
|
47
|
-
assert_equal "\r\n",ch
|
|
47
|
+
ch = parser.__send__(:read_char)
|
|
48
|
+
assert_equal "\r\n", ch
|
|
48
49
|
assert_equal 2, parser.line_number
|
|
49
|
-
ch = parser.read_char
|
|
50
|
-
assert_equal
|
|
50
|
+
ch = parser.__send__(:read_char)
|
|
51
|
+
assert_equal 'c', ch
|
|
51
52
|
assert_equal 3, parser.line_number
|
|
52
53
|
ensure
|
|
53
|
-
parser.close
|
|
54
|
+
parser.__send__(:close)
|
|
54
55
|
end
|
|
55
56
|
end
|
|
56
57
|
end
|
|
57
58
|
|
|
58
|
-
def
|
|
59
|
+
def test_line_number2
|
|
59
60
|
input = StringIO.new("a\r\nb\r\nc\r\n")
|
|
60
61
|
output = StringIO.new
|
|
61
62
|
parser = Aozora2Html.new(input, output)
|
|
62
63
|
assert_equal 0, parser.line_number
|
|
63
|
-
ch = parser.read_char
|
|
64
|
-
assert_equal
|
|
64
|
+
ch = parser.__send__(:read_char)
|
|
65
|
+
assert_equal 'a', ch
|
|
65
66
|
assert_equal 1, parser.line_number
|
|
66
|
-
ch = parser.read_char
|
|
67
|
-
assert_equal "\r\n",ch
|
|
67
|
+
ch = parser.__send__(:read_char)
|
|
68
|
+
assert_equal "\r\n", ch
|
|
68
69
|
assert_equal 1, parser.line_number
|
|
69
|
-
ch = parser.read_char
|
|
70
|
-
assert_equal
|
|
70
|
+
ch = parser.__send__(:read_char)
|
|
71
|
+
assert_equal 'b', ch
|
|
71
72
|
assert_equal 2, parser.line_number
|
|
72
|
-
ch = parser.read_char
|
|
73
|
-
assert_equal "\r\n",ch
|
|
73
|
+
ch = parser.__send__(:read_char)
|
|
74
|
+
assert_equal "\r\n", ch
|
|
74
75
|
assert_equal 2, parser.line_number
|
|
75
|
-
ch = parser.read_char
|
|
76
|
-
assert_equal
|
|
76
|
+
ch = parser.__send__(:read_char)
|
|
77
|
+
assert_equal 'c', ch
|
|
77
78
|
assert_equal 3, parser.line_number
|
|
78
79
|
end
|
|
79
80
|
|
|
@@ -81,188 +82,177 @@ class Aozora2HtmlTest < Test::Unit::TestCase
|
|
|
81
82
|
input = StringIO.new("ab\r\nc\r\n")
|
|
82
83
|
output = StringIO.new
|
|
83
84
|
parser = Aozora2Html.new(input, output)
|
|
84
|
-
parsed = parser.read_line
|
|
85
|
-
assert_equal
|
|
85
|
+
parsed = parser.__send__(:read_line)
|
|
86
|
+
assert_equal 'ab', parsed
|
|
86
87
|
end
|
|
87
88
|
|
|
89
|
+
using Aozora2Html::StringRefinements
|
|
90
|
+
|
|
88
91
|
def test_char_type
|
|
89
|
-
assert_equal :kanji,
|
|
90
|
-
assert_equal :kanji,
|
|
91
|
-
assert_equal :hankaku,
|
|
92
|
-
assert_equal :else,
|
|
93
|
-
assert_equal :else,
|
|
94
|
-
assert_equal :katakana,
|
|
92
|
+
assert_equal :kanji, Aozora2Html::Tag::EmbedGaiji.new(nil, 'foo', '1-2-3', 'name', gaiji_dir: nil).char_type
|
|
93
|
+
assert_equal :kanji, Aozora2Html::Tag::UnEmbedGaiji.new(nil, 'foo').char_type
|
|
94
|
+
assert_equal :hankaku, Aozora2Html::Tag::Accent.new(nil, 123, 'abc', gaiji_dir: nil).char_type
|
|
95
|
+
assert_equal :else, Aozora2Html::Tag::Okurigana.new(nil, 'abc').char_type
|
|
96
|
+
assert_equal :else, Aozora2Html::Tag::InlineKeigakomi.new(nil, 'abc').char_type
|
|
97
|
+
assert_equal :katakana, Aozora2Html::Tag::DakutenKatakana.new(nil, 1, 'abc', gaiji_dir: nil).char_type
|
|
95
98
|
|
|
96
|
-
assert_equal :hiragana,
|
|
97
|
-
assert_equal :hiragana,
|
|
98
|
-
assert_equal :katakana,
|
|
99
|
-
assert_equal :katakana,
|
|
100
|
-
assert_equal :zenkaku,
|
|
101
|
-
assert_equal :zenkaku,
|
|
102
|
-
assert_equal :hankaku,
|
|
103
|
-
assert_equal :kanji,
|
|
104
|
-
assert_equal :hankaku_terminate,
|
|
105
|
-
assert_equal :else,
|
|
106
|
-
assert_equal :else,
|
|
99
|
+
assert_equal :hiragana, 'あ'.to_sjis.char_type
|
|
100
|
+
assert_equal :hiragana, 'っ'.to_sjis.char_type
|
|
101
|
+
assert_equal :katakana, 'ヴ'.to_sjis.char_type
|
|
102
|
+
assert_equal :katakana, 'ー'.to_sjis.char_type
|
|
103
|
+
assert_equal :zenkaku, 'A'.to_sjis.char_type
|
|
104
|
+
assert_equal :zenkaku, 'w'.to_sjis.char_type
|
|
105
|
+
assert_equal :hankaku, 'z'.to_sjis.char_type
|
|
106
|
+
assert_equal :kanji, '漢'.to_sjis.char_type
|
|
107
|
+
assert_equal :hankaku_terminate, '!'.to_sjis.char_type
|
|
108
|
+
assert_equal :else, '?'.to_sjis.char_type
|
|
109
|
+
assert_equal :else, 'Å'.to_sjis.char_type
|
|
107
110
|
end
|
|
108
111
|
|
|
109
112
|
def test_read_char
|
|
110
|
-
input = StringIO.new("/\\r\n".
|
|
113
|
+
input = StringIO.new("/\\r\n".to_sjis)
|
|
111
114
|
output = StringIO.new
|
|
112
115
|
parser = Aozora2Html.new(input, output)
|
|
113
|
-
char = parser.read_char
|
|
114
|
-
assert_equal
|
|
116
|
+
char = parser.__send__(:read_char)
|
|
117
|
+
assert_equal '/'.to_sjis, char
|
|
115
118
|
assert_equal Aozora2Html::KU, char
|
|
116
119
|
end
|
|
117
120
|
|
|
118
121
|
def test_illegal_char_check
|
|
119
|
-
input = StringIO.new("abc\r\n")
|
|
120
|
-
output = StringIO.new
|
|
121
|
-
parser = Aozora2Html.new(input, output)
|
|
122
122
|
out = StringIO.new
|
|
123
123
|
$stdout = out
|
|
124
124
|
begin
|
|
125
|
-
|
|
125
|
+
Aozora2Html::Utils.illegal_char_check('#', 123)
|
|
126
126
|
outstr = out.string
|
|
127
|
-
assert_equal "警告(123行目):1バイトの「#」が使われています\n", outstr.
|
|
127
|
+
assert_equal "警告(123行目):1バイトの「#」が使われています\n", outstr.to_utf8
|
|
128
128
|
ensure
|
|
129
129
|
$stdout = STDOUT
|
|
130
130
|
end
|
|
131
131
|
end
|
|
132
132
|
|
|
133
133
|
def test_illegal_char_check_sharp
|
|
134
|
-
input = StringIO.new("abc\r\n")
|
|
135
|
-
output = StringIO.new
|
|
136
|
-
parser = Aozora2Html.new(input, output)
|
|
137
134
|
out = StringIO.new
|
|
138
135
|
$stdout = out
|
|
139
136
|
begin
|
|
140
|
-
|
|
137
|
+
Aozora2Html::Utils.illegal_char_check('♯'.to_sjis, 123)
|
|
141
138
|
outstr = out.string
|
|
142
|
-
assert_equal "警告(123行目):注記記号の誤用の可能性がある、「♯」が使われています\n", outstr.
|
|
139
|
+
assert_equal "警告(123行目):注記記号の誤用の可能性がある、「♯」が使われています\n", outstr.to_utf8
|
|
143
140
|
ensure
|
|
144
141
|
$stdout = STDOUT
|
|
145
142
|
end
|
|
146
143
|
end
|
|
147
144
|
|
|
148
145
|
def test_illegal_char_check_notjis
|
|
149
|
-
input = StringIO.new("abc\r\n")
|
|
150
|
-
output = StringIO.new
|
|
151
|
-
parser = Aozora2Html.new(input, output)
|
|
152
146
|
out = StringIO.new
|
|
153
147
|
$stdout = out
|
|
154
148
|
begin
|
|
155
|
-
|
|
149
|
+
Aozora2Html::Utils.illegal_char_check('①'.encode('cp932').force_encoding('shift_jis'), 123)
|
|
156
150
|
outstr = out.string
|
|
157
|
-
assert_equal "警告(123行目):JIS外字「①」が使われています\n", outstr.force_encoding(
|
|
151
|
+
assert_equal "警告(123行目):JIS外字「①」が使われています\n", outstr.force_encoding('cp932').to_utf8
|
|
158
152
|
ensure
|
|
159
153
|
$stdout = STDOUT
|
|
160
154
|
end
|
|
161
155
|
end
|
|
162
156
|
|
|
163
157
|
def test_illegal_char_check_ok
|
|
164
|
-
input = StringIO.new("abc\r\n")
|
|
165
|
-
output = StringIO.new
|
|
166
|
-
parser = Aozora2Html.new(input, output)
|
|
167
158
|
out = StringIO.new
|
|
168
159
|
$stdout = out
|
|
169
160
|
begin
|
|
170
|
-
|
|
171
|
-
outstr =
|
|
172
|
-
assert_equal
|
|
161
|
+
Aozora2Html::Utils.illegal_char_check('あ'.to_sjis, 123)
|
|
162
|
+
outstr = out.string
|
|
163
|
+
assert_equal '', outstr
|
|
173
164
|
ensure
|
|
174
165
|
$stdout = STDOUT
|
|
175
166
|
end
|
|
176
167
|
end
|
|
177
168
|
|
|
178
169
|
def test_convert_japanese_number
|
|
179
|
-
assert_equal
|
|
180
|
-
Aozora2Html::Utils.convert_japanese_number(
|
|
181
|
-
assert_equal
|
|
182
|
-
Aozora2Html::Utils.convert_japanese_number(
|
|
183
|
-
assert_equal
|
|
184
|
-
Aozora2Html::Utils.convert_japanese_number(
|
|
185
|
-
assert_equal
|
|
186
|
-
Aozora2Html::Utils.convert_japanese_number(
|
|
187
|
-
assert_equal
|
|
188
|
-
Aozora2Html::Utils.convert_japanese_number(
|
|
189
|
-
assert_equal
|
|
190
|
-
Aozora2Html::Utils.convert_japanese_number(
|
|
191
|
-
assert_equal
|
|
192
|
-
Aozora2Html::Utils.convert_japanese_number(
|
|
193
|
-
|
|
170
|
+
assert_equal '3字下げ',
|
|
171
|
+
Aozora2Html::Utils.convert_japanese_number('三字下げ'.to_sjis).to_utf8
|
|
172
|
+
assert_equal '10字下げ',
|
|
173
|
+
Aozora2Html::Utils.convert_japanese_number('十字下げ'.to_sjis).to_utf8
|
|
174
|
+
assert_equal '12字下げ',
|
|
175
|
+
Aozora2Html::Utils.convert_japanese_number('十二字下げ'.to_sjis).to_utf8
|
|
176
|
+
assert_equal '20字下げ',
|
|
177
|
+
Aozora2Html::Utils.convert_japanese_number('二十字下げ'.to_sjis).to_utf8
|
|
178
|
+
assert_equal '20字下げ',
|
|
179
|
+
Aozora2Html::Utils.convert_japanese_number('二〇字下げ'.to_sjis).to_utf8
|
|
180
|
+
assert_equal '23字下げ',
|
|
181
|
+
Aozora2Html::Utils.convert_japanese_number('二十三字下げ'.to_sjis).to_utf8
|
|
182
|
+
assert_equal '2字下げ',
|
|
183
|
+
Aozora2Html::Utils.convert_japanese_number('2字下げ'.to_sjis).to_utf8
|
|
194
184
|
end
|
|
195
185
|
|
|
196
186
|
def test_kuten2png
|
|
197
187
|
assert_equal %q|<img src="../../../gaiji/1-84/1-84-77.png" alt="※(「てへん+劣」、第3水準1-84-77)" class="gaiji" />|,
|
|
198
|
-
@parser.kuten2png(
|
|
188
|
+
@parser.kuten2png('#「てへん+劣」、第3水準1-84-77'.to_sjis).to_s.to_utf8
|
|
199
189
|
assert_equal %q|<img src="../../../gaiji/1-02/1-02-22.png" alt="※(二の字点、1-2-22)" class="gaiji" />|,
|
|
200
|
-
@parser.kuten2png(
|
|
190
|
+
@parser.kuten2png('#二の字点、1-2-22'.to_sjis).to_s.to_utf8
|
|
201
191
|
assert_equal %q|<img src="../../../gaiji/1-06/1-06-57.png" alt="※(ファイナルシグマ、1-6-57)" class="gaiji" />|,
|
|
202
|
-
@parser.kuten2png(
|
|
203
|
-
assert_equal %q
|
|
204
|
-
@parser.kuten2png(
|
|
192
|
+
@parser.kuten2png('#ファイナルシグマ、1-6-57'.to_sjis).to_s.to_utf8
|
|
193
|
+
assert_equal %q(#「口+世」、151-23),
|
|
194
|
+
@parser.kuten2png('#「口+世」、151-23'.to_sjis).to_s.to_utf8
|
|
205
195
|
end
|
|
206
196
|
|
|
207
197
|
def test_terpri?
|
|
208
|
-
assert_equal true,
|
|
209
|
-
assert_equal true,
|
|
210
|
-
assert_equal true,
|
|
211
|
-
tag = Aozora2Html::Tag::MultilineMidashi.new(@parser,
|
|
212
|
-
assert_equal false,
|
|
213
|
-
assert_equal false,
|
|
214
|
-
assert_equal false,
|
|
215
|
-
assert_equal false,
|
|
216
|
-
assert_equal true,
|
|
217
|
-
assert_equal true,
|
|
198
|
+
assert_equal true, Aozora2Html::TextBuffer.new.terpri?
|
|
199
|
+
assert_equal true, Aozora2Html::TextBuffer.new(['']).terpri?
|
|
200
|
+
assert_equal true, Aozora2Html::TextBuffer.new(['a']).terpri?
|
|
201
|
+
tag = Aozora2Html::Tag::MultilineMidashi.new(@parser, '小'.to_sjis, :normal)
|
|
202
|
+
assert_equal false, Aozora2Html::TextBuffer.new([tag]).terpri?
|
|
203
|
+
assert_equal false, Aozora2Html::TextBuffer.new([tag, tag]).terpri?
|
|
204
|
+
assert_equal false, Aozora2Html::TextBuffer.new([tag, '', '']).terpri?
|
|
205
|
+
assert_equal false, Aozora2Html::TextBuffer.new(['', tag, '']).terpri?
|
|
206
|
+
assert_equal true, Aozora2Html::TextBuffer.new([tag, 'a']).terpri?
|
|
207
|
+
assert_equal true, Aozora2Html::TextBuffer.new(['a', tag]).terpri?
|
|
218
208
|
end
|
|
219
209
|
|
|
220
210
|
def test_new_midashi_id
|
|
221
211
|
midashi_id = @parser.new_midashi_id(1)
|
|
222
212
|
assert_equal midashi_id + 1, @parser.new_midashi_id(1)
|
|
223
|
-
assert_equal midashi_id + 2, @parser.new_midashi_id(
|
|
224
|
-
assert_equal midashi_id + 12, @parser.new_midashi_id(
|
|
225
|
-
assert_equal midashi_id + 112, @parser.new_midashi_id(
|
|
213
|
+
assert_equal midashi_id + 2, @parser.new_midashi_id('小'.to_sjis)
|
|
214
|
+
assert_equal midashi_id + 12, @parser.new_midashi_id('中'.to_sjis)
|
|
215
|
+
assert_equal midashi_id + 112, @parser.new_midashi_id('大'.to_sjis)
|
|
226
216
|
assert_raise(Aozora2Html::Error) do
|
|
227
|
-
@parser.new_midashi_id(
|
|
217
|
+
@parser.new_midashi_id('?'.to_sjis)
|
|
228
218
|
end
|
|
229
219
|
end
|
|
230
220
|
|
|
231
221
|
def test_multiply
|
|
232
|
-
bouki = @parser.multiply
|
|
233
|
-
assert_equal
|
|
222
|
+
bouki = @parser.__send__(:multiply, 'x', 5)
|
|
223
|
+
assert_equal 'x x x x x', bouki
|
|
234
224
|
end
|
|
235
225
|
|
|
236
226
|
def test_apply_midashi
|
|
237
|
-
midashi = @parser.apply_midashi
|
|
238
|
-
assert_equal %Q
|
|
239
|
-
midashi = @parser.apply_midashi
|
|
240
|
-
assert_equal %Q
|
|
227
|
+
midashi = @parser.__send__(:apply_midashi, '中見出し'.to_sjis)
|
|
228
|
+
assert_equal %Q(<h4 class="naka-midashi"><a class="midashi_anchor" id="midashi10">), midashi.to_s
|
|
229
|
+
midashi = @parser.__send__(:apply_midashi, '大見出し'.to_sjis)
|
|
230
|
+
assert_equal %Q(<h3 class="o-midashi"><a class="midashi_anchor" id="midashi110">), midashi.to_s
|
|
241
231
|
end
|
|
242
232
|
|
|
243
233
|
def test_detect_command_mode
|
|
244
|
-
command =
|
|
234
|
+
command = '字下げ終わり'.to_sjis
|
|
245
235
|
assert_equal :jisage, @parser.detect_command_mode(command)
|
|
246
|
-
command =
|
|
236
|
+
command = '地付き終わり'.to_sjis
|
|
247
237
|
assert_equal :chitsuki, @parser.detect_command_mode(command)
|
|
248
|
-
command =
|
|
238
|
+
command = '中見出し終わり'.to_sjis
|
|
249
239
|
assert_equal :midashi, @parser.detect_command_mode(command)
|
|
250
|
-
command =
|
|
240
|
+
command = 'ここで太字終わり'.to_sjis
|
|
251
241
|
assert_equal :futoji, @parser.detect_command_mode(command)
|
|
252
242
|
end
|
|
253
243
|
|
|
254
244
|
def test_tcy
|
|
255
|
-
input = StringIO.new("[#縦中横](※[#ローマ数字1、1-13-21])\r\n".
|
|
245
|
+
input = StringIO.new("[#縦中横](※[#ローマ数字1、1-13-21])\r\n".to_sjis)
|
|
256
246
|
output = StringIO.new
|
|
257
247
|
parser = Aozora2Html.new(input, output)
|
|
258
248
|
out = StringIO.new
|
|
259
249
|
$stdout = out
|
|
260
250
|
message = nil
|
|
261
251
|
begin
|
|
262
|
-
parser.parse_body
|
|
263
|
-
parser.general_output
|
|
252
|
+
parser.__send__(:parse_body)
|
|
253
|
+
parser.__send__(:general_output)
|
|
264
254
|
rescue Aozora2Html::Error => e
|
|
265
|
-
message = e.message.
|
|
255
|
+
message = e.message.to_utf8
|
|
266
256
|
ensure
|
|
267
257
|
$stdout = STDOUT
|
|
268
258
|
assert_equal "エラー(0行目):縦中横中に改行されました。改行をまたぐ要素にはブロック表記を用いてください. \r\n処理を停止します", message
|
|
@@ -270,19 +260,19 @@ class Aozora2HtmlTest < Test::Unit::TestCase
|
|
|
270
260
|
end
|
|
271
261
|
|
|
272
262
|
def test_ensure_close
|
|
273
|
-
input = StringIO.new("[#ここから5字下げ]\r\n底本: test\r\n".
|
|
263
|
+
input = StringIO.new("[#ここから5字下げ]\r\n底本: test\r\n".to_sjis)
|
|
274
264
|
output = StringIO.new
|
|
275
265
|
parser = Aozora2Html.new(input, output)
|
|
276
266
|
out = StringIO.new
|
|
277
267
|
$stdout = out
|
|
278
268
|
message = nil
|
|
279
269
|
begin
|
|
280
|
-
parser.parse_body
|
|
281
|
-
parser.parse_body
|
|
282
|
-
parser.parse_body
|
|
283
|
-
parser.general_output
|
|
270
|
+
parser.__send__(:parse_body)
|
|
271
|
+
parser.__send__(:parse_body)
|
|
272
|
+
parser.__send__(:parse_body)
|
|
273
|
+
parser.__send__(:general_output)
|
|
284
274
|
rescue Aozora2Html::Error => e
|
|
285
|
-
message = e.message.
|
|
275
|
+
message = e.message.to_utf8
|
|
286
276
|
ensure
|
|
287
277
|
$stdout = STDOUT
|
|
288
278
|
assert_equal "エラー(0行目):字下げ中に本文が終了しました. \r\n処理を停止します", message
|
|
@@ -290,20 +280,20 @@ class Aozora2HtmlTest < Test::Unit::TestCase
|
|
|
290
280
|
end
|
|
291
281
|
|
|
292
282
|
def test_ending_check
|
|
293
|
-
input = StringIO.new("本文\r\n\r\n底本:test\r\n".
|
|
283
|
+
input = StringIO.new("本文\r\n\r\n底本:test\r\n".to_sjis)
|
|
294
284
|
output = StringIO.new
|
|
295
285
|
parser = Aozora2Html.new(input, output)
|
|
296
286
|
out = StringIO.new
|
|
297
287
|
$stdout = out
|
|
298
288
|
_message = nil
|
|
299
289
|
begin
|
|
300
|
-
parser.parse_body
|
|
301
|
-
parser.parse_body
|
|
302
|
-
parser.parse_body
|
|
303
|
-
parser.parse_body
|
|
304
|
-
parser.parse_body
|
|
290
|
+
parser.__send__(:parse_body)
|
|
291
|
+
parser.__send__(:parse_body)
|
|
292
|
+
parser.__send__(:parse_body)
|
|
293
|
+
parser.__send__(:parse_body)
|
|
294
|
+
parser.__send__(:parse_body)
|
|
305
295
|
rescue Aozora2Html::Error => e
|
|
306
|
-
_message = e.message.
|
|
296
|
+
_message = e.message.to_utf8
|
|
307
297
|
ensure
|
|
308
298
|
$stdout = STDOUT
|
|
309
299
|
output.seek(0)
|
|
@@ -313,16 +303,16 @@ class Aozora2HtmlTest < Test::Unit::TestCase
|
|
|
313
303
|
end
|
|
314
304
|
|
|
315
305
|
def test_invalid_closing
|
|
316
|
-
input = StringIO.new("[#ここで太字終わり]\r\n".
|
|
306
|
+
input = StringIO.new("[#ここで太字終わり]\r\n".to_sjis)
|
|
317
307
|
output = StringIO.new
|
|
318
308
|
parser = Aozora2Html.new(input, output)
|
|
319
309
|
out = StringIO.new
|
|
320
310
|
$stdout = out
|
|
321
311
|
message = nil
|
|
322
312
|
begin
|
|
323
|
-
parser.parse_body
|
|
313
|
+
parser.__send__(:parse_body)
|
|
324
314
|
rescue Aozora2Html::Error => e
|
|
325
|
-
message = e.message.
|
|
315
|
+
message = e.message.to_utf8
|
|
326
316
|
ensure
|
|
327
317
|
$stdout = STDOUT
|
|
328
318
|
assert_equal "エラー(0行目):太字を閉じようとしましたが、太字中ではありません. \r\n処理を停止します", message
|
|
@@ -330,22 +320,22 @@ class Aozora2HtmlTest < Test::Unit::TestCase
|
|
|
330
320
|
end
|
|
331
321
|
|
|
332
322
|
def test_invalid_nest
|
|
333
|
-
input = StringIO.new("[#太字][#傍線]あ[#太字終わり]\r\n".
|
|
323
|
+
input = StringIO.new("[#太字][#傍線]あ[#太字終わり]\r\n".to_sjis)
|
|
334
324
|
output = StringIO.new
|
|
335
325
|
parser = Aozora2Html.new(input, output)
|
|
336
326
|
out = StringIO.new
|
|
337
327
|
$stdout = out
|
|
338
328
|
message = nil
|
|
339
329
|
begin
|
|
340
|
-
parser.parse_body
|
|
341
|
-
parser.parse_body
|
|
342
|
-
parser.parse_body
|
|
343
|
-
parser.parse_body
|
|
344
|
-
parser.parse_body
|
|
345
|
-
parser.parse_body
|
|
346
|
-
parser.parse_body
|
|
330
|
+
parser.__send__(:parse_body)
|
|
331
|
+
parser.__send__(:parse_body)
|
|
332
|
+
parser.__send__(:parse_body)
|
|
333
|
+
parser.__send__(:parse_body)
|
|
334
|
+
parser.__send__(:parse_body)
|
|
335
|
+
parser.__send__(:parse_body)
|
|
336
|
+
parser.__send__(:parse_body)
|
|
347
337
|
rescue Aozora2Html::Error => e
|
|
348
|
-
message = e.message.
|
|
338
|
+
message = e.message.to_utf8
|
|
349
339
|
ensure
|
|
350
340
|
$stdout = STDOUT
|
|
351
341
|
assert_equal "エラー(0行目):太字を終了しようとしましたが、傍線中です. \r\n処理を停止します", message
|
|
@@ -353,7 +343,7 @@ class Aozora2HtmlTest < Test::Unit::TestCase
|
|
|
353
343
|
end
|
|
354
344
|
|
|
355
345
|
def test_command_do
|
|
356
|
-
input = StringIO.new("[#ここから太字]\r\nテスト。\r\n[#ここで太字終わり]\r\n".
|
|
346
|
+
input = StringIO.new("[#ここから太字]\r\nテスト。\r\n[#ここで太字終わり]\r\n".to_sjis)
|
|
357
347
|
output = StringIO.new
|
|
358
348
|
parser = Aozora2Html.new(input, output)
|
|
359
349
|
out = StringIO.new
|
|
@@ -361,10 +351,10 @@ class Aozora2HtmlTest < Test::Unit::TestCase
|
|
|
361
351
|
_message = nil
|
|
362
352
|
begin
|
|
363
353
|
9.times do
|
|
364
|
-
parser.parse_body
|
|
354
|
+
parser.__send__(:parse_body)
|
|
365
355
|
end
|
|
366
356
|
rescue Aozora2Html::Error => e
|
|
367
|
-
_message = e.message.
|
|
357
|
+
_message = e.message.to_utf8
|
|
368
358
|
ensure
|
|
369
359
|
$stdout = STDOUT
|
|
370
360
|
output.seek(0)
|
|
@@ -373,7 +363,6 @@ class Aozora2HtmlTest < Test::Unit::TestCase
|
|
|
373
363
|
end
|
|
374
364
|
end
|
|
375
365
|
|
|
376
|
-
|
|
377
366
|
def teardown
|
|
378
367
|
end
|
|
379
368
|
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
2
3
|
require 'test_helper'
|
|
3
4
|
require 'aozora2html'
|
|
4
5
|
|
|
@@ -6,23 +7,39 @@ class Aozora2HtmlAccentParserTest < Test::Unit::TestCase
|
|
|
6
7
|
def setup
|
|
7
8
|
end
|
|
8
9
|
|
|
10
|
+
using Aozora2Html::StringRefinements
|
|
11
|
+
|
|
9
12
|
def test_new
|
|
10
|
-
str = "〔e'tiquette〕\r\n".
|
|
13
|
+
str = "〔e'tiquette〕\r\n".to_sjis
|
|
14
|
+
strio = StringIO.new(str)
|
|
15
|
+
stream = Jstream.new(strio)
|
|
16
|
+
parsed = Aozora2Html::AccentParser.new(stream, '〕'.to_sjis, {}, [], gaiji_dir: 'g_dir/').process
|
|
17
|
+
expected = '〔<img src="g_dir/1-09/1-09-63.png" alt="※(アキュートアクセント付きE小文字)" class="gaiji" />tiquette'
|
|
18
|
+
assert_equal expected, parsed.to_s.to_utf8
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_invalid
|
|
22
|
+
str = "〔e'tiquette\r\n".to_sjis
|
|
11
23
|
strio = StringIO.new(str)
|
|
12
24
|
stream = Jstream.new(strio)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
25
|
+
$stdout = StringIO.new
|
|
26
|
+
begin
|
|
27
|
+
_parsed = Aozora2Html::AccentParser.new(stream, '〕'.to_sjis, {}, [], gaiji_dir: 'g_dir/').process
|
|
28
|
+
out_str = $stdout.string
|
|
29
|
+
assert_equal "警告(1行目):アクセント分解の亀甲括弧の始めと終わりが、行中で揃っていません\n", out_str.to_utf8
|
|
30
|
+
ensure
|
|
31
|
+
$stdout = STDOUT
|
|
32
|
+
end
|
|
16
33
|
end
|
|
17
34
|
|
|
18
35
|
def test_use_jisx0213
|
|
19
36
|
Aozora2Html::Tag::Accent.use_jisx0213 = true
|
|
20
|
-
str = "〔e'tiquette〕\r\n".
|
|
37
|
+
str = "〔e'tiquette〕\r\n".to_sjis
|
|
21
38
|
strio = StringIO.new(str)
|
|
22
39
|
stream = Jstream.new(strio)
|
|
23
|
-
parsed = Aozora2Html::AccentParser.new(stream,
|
|
24
|
-
expected =
|
|
25
|
-
assert_equal expected, parsed.to_s.
|
|
40
|
+
parsed = Aozora2Html::AccentParser.new(stream, '〕'.to_sjis, {}, [], gaiji_dir: 'g_dir/').process
|
|
41
|
+
expected = '〔étiquette'
|
|
42
|
+
assert_equal expected, parsed.to_s.to_utf8
|
|
26
43
|
end
|
|
27
44
|
|
|
28
45
|
def teardown
|