aozora2html 0.9.0 → 0.9.1
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 +5 -5
- data/.github/workflows/ruby.yml +25 -0
- data/.rubocop.yml +227 -0
- data/CHANGELOG.md +33 -0
- data/LICENSE +116 -0
- data/README.md +6 -1
- data/aozora2html.gemspec +6 -8
- data/bin/aozora2html +1 -0
- data/lib/aozora2html/accent_parser.rb +2 -2
- data/lib/aozora2html/error.rb +3 -3
- data/lib/aozora2html/header.rb +2 -2
- data/lib/aozora2html/i18n.rb +12 -1
- data/lib/aozora2html/ruby_buffer.rb +2 -2
- data/lib/aozora2html/tag_parser.rb +1 -1
- data/lib/aozora2html/utils.rb +11 -0
- data/lib/aozora2html/version.rb +1 -1
- data/lib/extensions.rb +4 -0
- data/lib/t2hs.rb +536 -459
- data/test/test_aozora2html.rb +164 -7
- data/test/test_font_size_tag.rb +7 -0
- data/test/test_ruby_parse.rb +14 -0
- metadata +12 -39
- data/appveyor.yml +0 -23
data/test/test_aozora2html.rb
CHANGED
@@ -177,19 +177,19 @@ class Aozora2HtmlTest < Test::Unit::TestCase
|
|
177
177
|
|
178
178
|
def test_convert_japanese_number
|
179
179
|
assert_equal "3字下げ",
|
180
|
-
|
180
|
+
Aozora2Html::Utils.convert_japanese_number("三字下げ".encode("shift_jis")).encode("utf-8")
|
181
181
|
assert_equal "10字下げ",
|
182
|
-
|
182
|
+
Aozora2Html::Utils.convert_japanese_number("十字下げ".encode("shift_jis")).encode("utf-8")
|
183
183
|
assert_equal "12字下げ",
|
184
|
-
|
184
|
+
Aozora2Html::Utils.convert_japanese_number("十二字下げ".encode("shift_jis")).encode("utf-8")
|
185
185
|
assert_equal "20字下げ",
|
186
|
-
|
186
|
+
Aozora2Html::Utils.convert_japanese_number("二十字下げ".encode("shift_jis")).encode("utf-8")
|
187
187
|
assert_equal "20字下げ",
|
188
|
-
|
188
|
+
Aozora2Html::Utils.convert_japanese_number("二〇字下げ".encode("shift_jis")).encode("utf-8")
|
189
189
|
assert_equal "23字下げ",
|
190
|
-
|
190
|
+
Aozora2Html::Utils.convert_japanese_number("二十三字下げ".encode("shift_jis")).encode("utf-8")
|
191
191
|
assert_equal "2字下げ",
|
192
|
-
|
192
|
+
Aozora2Html::Utils.convert_japanese_number("2字下げ".encode("shift_jis")).encode("utf-8")
|
193
193
|
|
194
194
|
end
|
195
195
|
|
@@ -217,6 +217,163 @@ class Aozora2HtmlTest < Test::Unit::TestCase
|
|
217
217
|
assert_equal true, @parser.terpri?(["a",tag])
|
218
218
|
end
|
219
219
|
|
220
|
+
def test_new_midashi_id
|
221
|
+
midashi_id = @parser.new_midashi_id(1)
|
222
|
+
assert_equal midashi_id + 1, @parser.new_midashi_id(1)
|
223
|
+
assert_equal midashi_id + 2, @parser.new_midashi_id("小".encode("shift_jis"))
|
224
|
+
assert_equal midashi_id + 12, @parser.new_midashi_id("中".encode("shift_jis"))
|
225
|
+
assert_equal midashi_id + 112, @parser.new_midashi_id("大".encode("shift_jis"))
|
226
|
+
assert_raise(Aozora2Html::Error) do
|
227
|
+
@parser.new_midashi_id("?".encode("shift_jis"))
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
def test_multiply
|
232
|
+
bouki = @parser.multiply("x", 5)
|
233
|
+
assert_equal "x x x x x", bouki
|
234
|
+
end
|
235
|
+
|
236
|
+
def test_apply_midashi
|
237
|
+
midashi = @parser.apply_midashi("中見出し".encode("shift_jis"))
|
238
|
+
assert_equal %Q|<h4 class="naka-midashi"><a class="midashi_anchor" id="midashi10">|, midashi.to_s
|
239
|
+
midashi = @parser.apply_midashi("大見出し".encode("shift_jis"))
|
240
|
+
assert_equal %Q|<h3 class="o-midashi"><a class="midashi_anchor" id="midashi110">|, midashi.to_s
|
241
|
+
end
|
242
|
+
|
243
|
+
def test_detect_command_mode
|
244
|
+
command = "字下げ終わり".encode("shift_jis")
|
245
|
+
assert_equal :jisage, @parser.detect_command_mode(command)
|
246
|
+
command = "地付き終わり".encode("shift_jis")
|
247
|
+
assert_equal :chitsuki, @parser.detect_command_mode(command)
|
248
|
+
command = "中見出し終わり".encode("shift_jis")
|
249
|
+
assert_equal :midashi, @parser.detect_command_mode(command)
|
250
|
+
command = "ここで太字終わり".encode("shift_jis")
|
251
|
+
assert_equal :futoji, @parser.detect_command_mode(command)
|
252
|
+
end
|
253
|
+
|
254
|
+
def test_tcy
|
255
|
+
input = StringIO.new("[#縦中横](※[#ローマ数字1、1-13-21])\r\n".encode("shift_jis"))
|
256
|
+
output = StringIO.new
|
257
|
+
parser = Aozora2Html.new(input, output)
|
258
|
+
out = StringIO.new
|
259
|
+
$stdout = out
|
260
|
+
message = nil
|
261
|
+
begin
|
262
|
+
parser.parse_body
|
263
|
+
parser.general_output
|
264
|
+
rescue Aozora2Html::Error => e
|
265
|
+
message = e.message.encode("utf-8")
|
266
|
+
ensure
|
267
|
+
$stdout = STDOUT
|
268
|
+
assert_equal "エラー(0行目):縦中横中に改行されました。改行をまたぐ要素にはブロック表記を用いてください. \r\n処理を停止します", message
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
272
|
+
def test_ensure_close
|
273
|
+
input = StringIO.new("[#ここから5字下げ]\r\n底本: test\r\n".encode("shift_jis"))
|
274
|
+
output = StringIO.new
|
275
|
+
parser = Aozora2Html.new(input, output)
|
276
|
+
out = StringIO.new
|
277
|
+
$stdout = out
|
278
|
+
message = nil
|
279
|
+
begin
|
280
|
+
parser.parse_body
|
281
|
+
parser.parse_body
|
282
|
+
parser.parse_body
|
283
|
+
parser.general_output
|
284
|
+
rescue Aozora2Html::Error => e
|
285
|
+
message = e.message.encode("utf-8")
|
286
|
+
ensure
|
287
|
+
$stdout = STDOUT
|
288
|
+
assert_equal "エラー(0行目):字下げ中に本文が終了しました. \r\n処理を停止します", message
|
289
|
+
end
|
290
|
+
end
|
291
|
+
|
292
|
+
def test_ending_check
|
293
|
+
input = StringIO.new("本文\r\n\r\n底本:test\r\n".encode("shift_jis"))
|
294
|
+
output = StringIO.new
|
295
|
+
parser = Aozora2Html.new(input, output)
|
296
|
+
out = StringIO.new
|
297
|
+
$stdout = out
|
298
|
+
_message = nil
|
299
|
+
begin
|
300
|
+
parser.parse_body
|
301
|
+
parser.parse_body
|
302
|
+
parser.parse_body
|
303
|
+
parser.parse_body
|
304
|
+
parser.parse_body
|
305
|
+
rescue Aozora2Html::Error => e
|
306
|
+
_message = e.message.encode("utf-8")
|
307
|
+
ensure
|
308
|
+
$stdout = STDOUT
|
309
|
+
output.seek(0)
|
310
|
+
out_text = output.read
|
311
|
+
assert_equal "本文<br />\r\n<br />\r\n</div>\r\n<div class=\"bibliographical_information\">\r\n<hr />\r\n<br />\r\n", out_text
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
def test_invalid_closing
|
316
|
+
input = StringIO.new("[#ここで太字終わり]\r\n".encode("shift_jis"))
|
317
|
+
output = StringIO.new
|
318
|
+
parser = Aozora2Html.new(input, output)
|
319
|
+
out = StringIO.new
|
320
|
+
$stdout = out
|
321
|
+
message = nil
|
322
|
+
begin
|
323
|
+
parser.parse_body
|
324
|
+
rescue Aozora2Html::Error => e
|
325
|
+
message = e.message.encode("utf-8")
|
326
|
+
ensure
|
327
|
+
$stdout = STDOUT
|
328
|
+
assert_equal "エラー(0行目):太字を閉じようとしましたが、太字中ではありません. \r\n処理を停止します", message
|
329
|
+
end
|
330
|
+
end
|
331
|
+
|
332
|
+
def test_invalid_nest
|
333
|
+
input = StringIO.new("[#太字][#傍線]あ[#太字終わり]\r\n".encode("shift_jis"))
|
334
|
+
output = StringIO.new
|
335
|
+
parser = Aozora2Html.new(input, output)
|
336
|
+
out = StringIO.new
|
337
|
+
$stdout = out
|
338
|
+
message = nil
|
339
|
+
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
|
347
|
+
rescue Aozora2Html::Error => e
|
348
|
+
message = e.message.encode("utf-8")
|
349
|
+
ensure
|
350
|
+
$stdout = STDOUT
|
351
|
+
assert_equal "エラー(0行目):太字を終了しようとしましたが、傍線中です. \r\n処理を停止します", message
|
352
|
+
end
|
353
|
+
end
|
354
|
+
|
355
|
+
def test_command_do
|
356
|
+
input = StringIO.new("[#ここから太字]\r\nテスト。\r\n[#ここで太字終わり]\r\n".encode("shift_jis"))
|
357
|
+
output = StringIO.new
|
358
|
+
parser = Aozora2Html.new(input, output)
|
359
|
+
out = StringIO.new
|
360
|
+
$stdout = out
|
361
|
+
_message = nil
|
362
|
+
begin
|
363
|
+
9.times do
|
364
|
+
parser.parse_body
|
365
|
+
end
|
366
|
+
rescue Aozora2Html::Error => e
|
367
|
+
_message = e.message.encode("utf-8")
|
368
|
+
ensure
|
369
|
+
$stdout = STDOUT
|
370
|
+
output.seek(0)
|
371
|
+
out_text = output.read
|
372
|
+
assert_equal "<div class=\"futoji\">\r\nテスト。<br />\r\n</div>\r\n", out_text
|
373
|
+
end
|
374
|
+
end
|
375
|
+
|
376
|
+
|
220
377
|
def teardown
|
221
378
|
end
|
222
379
|
end
|
data/test/test_font_size_tag.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- coding:utf-8 -*-
|
1
2
|
require 'test_helper'
|
2
3
|
require 'aozora2html'
|
3
4
|
|
@@ -29,6 +30,12 @@ class FontSizeTagTest < Test::Unit::TestCase
|
|
29
30
|
assert_equal "<div class=\"sho3\" style=\"font-size: xx-small;\">", tag.to_s.encode("utf-8")
|
30
31
|
end
|
31
32
|
|
33
|
+
def test_to_s0
|
34
|
+
assert_raise(Aozora2Html::Error.new("文字サイズの指定が不正です".to_sjis)) do
|
35
|
+
_tag = Aozora2Html::Tag::FontSize.new(@parser,0,:sho)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
32
39
|
def teardown
|
33
40
|
end
|
34
41
|
end
|
data/test/test_ruby_parse.rb
CHANGED
@@ -97,6 +97,20 @@ class RubyParseTest < Test::Unit::TestCase
|
|
97
97
|
assert_equal expected, parsed
|
98
98
|
end
|
99
99
|
|
100
|
+
def test_parse_ruby12
|
101
|
+
src = "大空文庫《あおぞらぶんこ》[#「大空文庫」に「ママ」の注記]\r\n"
|
102
|
+
assert_raise(Aozora2Html::Error.new("同じ箇所に2つのルビはつけられません".encode("shift_jis"))) do
|
103
|
+
_parsed = parse_text(src)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_parse_ruby13
|
108
|
+
src = "[#注記付き]名※[#二の字点、1-2-22][#「(銘々)」の注記付き終わり]\r\n"
|
109
|
+
parsed = parse_text(src)
|
110
|
+
expected = %Q|<ruby><rb>名<img src="../../../gaiji/1-02/1-02-22.png" alt="※(二の字点、1-2-22)" class="gaiji" /></rb><rp>(</rp><rt>(銘々)</rt><rp>)</rp></ruby><br />\r\n|
|
111
|
+
assert_equal expected, parsed
|
112
|
+
end
|
113
|
+
|
100
114
|
def parse_text(input_text)
|
101
115
|
input = StringIO.new(input_text.encode("shift_jis"))
|
102
116
|
output = StringIO.new
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aozora2html
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- aozorahack team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '2.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '12.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '12.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: test-unit
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,34 +80,6 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: guard
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: guard-test
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
83
|
description: converter from Aozora Bunko format into xhtml. It's based of t2hs.rb
|
112
84
|
from kumihan.aozora.gr.jp.
|
113
85
|
email:
|
@@ -117,15 +89,17 @@ executables:
|
|
117
89
|
extensions: []
|
118
90
|
extra_rdoc_files: []
|
119
91
|
files:
|
92
|
+
- ".github/workflows/ruby.yml"
|
120
93
|
- ".gitignore"
|
94
|
+
- ".rubocop.yml"
|
121
95
|
- ".travis.yml"
|
122
96
|
- CHANGELOG.md
|
123
97
|
- Gemfile
|
124
98
|
- Guardfile
|
99
|
+
- LICENSE
|
125
100
|
- README.md
|
126
101
|
- Rakefile
|
127
102
|
- aozora2html.gemspec
|
128
|
-
- appveyor.yml
|
129
103
|
- bin/aozora2html
|
130
104
|
- lib/aozora2html.rb
|
131
105
|
- lib/aozora2html/accent_parser.rb
|
@@ -238,8 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
238
212
|
- !ruby/object:Gem::Version
|
239
213
|
version: '0'
|
240
214
|
requirements: []
|
241
|
-
|
242
|
-
rubygems_version: 2.6.8
|
215
|
+
rubygems_version: 3.1.2
|
243
216
|
signing_key:
|
244
217
|
specification_version: 4
|
245
218
|
summary: converter from Aozora Bunko format into xhtml. It's based of t2hs.rb from
|
data/appveyor.yml
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
---
|
2
|
-
install:
|
3
|
-
- SET PATH=C:\Ruby%ruby_version%\bin;%PATH%
|
4
|
-
- ruby --version
|
5
|
-
- gem --version
|
6
|
-
- bundle install
|
7
|
-
build_script:
|
8
|
-
- bundle exec rake test
|
9
|
-
|
10
|
-
branches:
|
11
|
-
only:
|
12
|
-
- master
|
13
|
-
|
14
|
-
environment:
|
15
|
-
matrix:
|
16
|
-
- ruby_version: "200"
|
17
|
-
- ruby_version: "200-x64"
|
18
|
-
- ruby_version: "21"
|
19
|
-
- ruby_version: "21-x64"
|
20
|
-
- ruby_version: "22"
|
21
|
-
- ruby_version: "22-x64"
|
22
|
-
- ruby_version: "23"
|
23
|
-
- ruby_version: "23-x64"
|