narou 1.5.11 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of narou might be problematic. Click here for more details.

Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/ChangeLog.md +619 -432
  4. data/Gemfile +9 -0
  5. data/README.md +101 -76
  6. data/lib/color.rb +62 -22
  7. data/lib/command.rb +21 -19
  8. data/lib/command/alias.rb +9 -9
  9. data/lib/command/backup.rb +11 -4
  10. data/lib/command/browser.rb +8 -7
  11. data/lib/command/convert.rb +25 -77
  12. data/lib/command/diff.rb +67 -36
  13. data/lib/command/download.rb +5 -4
  14. data/lib/command/flag.rb +32 -6
  15. data/lib/command/folder.rb +7 -5
  16. data/lib/command/freeze.rb +21 -11
  17. data/lib/command/help.rb +29 -17
  18. data/lib/command/init.rb +7 -7
  19. data/lib/command/inspect.rb +6 -5
  20. data/lib/command/list.rb +106 -25
  21. data/lib/command/mail.rb +6 -7
  22. data/lib/command/remove.rb +9 -7
  23. data/lib/command/send.rb +6 -5
  24. data/lib/command/setting.rb +51 -16
  25. data/lib/command/tag.rb +179 -0
  26. data/lib/command/update.rb +9 -8
  27. data/lib/command/version.rb +4 -4
  28. data/lib/commandbase.rb +79 -8
  29. data/lib/commandline.rb +14 -8
  30. data/lib/converterbase.rb +78 -28
  31. data/lib/database.rb +3 -3
  32. data/lib/device.rb +26 -13
  33. data/lib/device/ibooks.rb +116 -0
  34. data/lib/device/ibunko.rb +45 -0
  35. data/lib/device/kindle.rb +4 -0
  36. data/lib/device/kobo.rb +4 -0
  37. data/lib/device/library/windows.rb +12 -4
  38. data/lib/device/reader.rb +9 -0
  39. data/lib/diffviewer.rb +147 -0
  40. data/lib/downloader.rb +195 -80
  41. data/lib/extensions/jruby.rb +33 -0
  42. data/lib/extensions/windows.rb +8 -9
  43. data/lib/helper.rb +79 -37
  44. data/lib/illustration.rb +1 -1
  45. data/lib/inspector.rb +2 -2
  46. data/lib/inventory.rb +48 -0
  47. data/lib/logger.rb +28 -4
  48. data/lib/narou.rb +9 -7
  49. data/lib/narou/api.rb +7 -2
  50. data/lib/novelconverter.rb +46 -19
  51. data/lib/novelinfo.rb +13 -3
  52. data/lib/novelsetting.rb +17 -9
  53. data/lib/version.rb +1 -1
  54. data/narou.gemspec +106 -27
  55. data/narou.rb +2 -2
  56. data/spec/convert_spec.rb +102 -0
  57. data/spec/data/convert_test/auto_indent/correct_test_auto_indent.txt +18 -0
  58. data/spec/data/convert_test/auto_indent/test_auto_indent.txt +21 -0
  59. data/spec/data/convert_test/auto_join_bracket/correct_test_auto_join_bracket.txt +12 -0
  60. data/spec/data/convert_test/auto_join_bracket/test_auto_join_bracket.txt +16 -0
  61. data/spec/data/convert_test/auto_join_line/correct_test_auto_join_line.txt +36 -0
  62. data/spec/data/convert_test/auto_join_line/test_auto_join_line.txt +51 -0
  63. data/spec/data/convert_test/convert_page_break/correct_test_convert_page_break.txt +21 -0
  64. data/spec/data/convert_test/convert_page_break/setting.ini +5 -0
  65. data/spec/data/convert_test/convert_page_break/test_convert_page_break.txt +60 -0
  66. data/spec/data/convert_test/force_indent_special_chapter/correct_test_force_indent_special_chapter.txt +64 -0
  67. data/spec/data/convert_test/force_indent_special_chapter/test_force_indent_special_chapter.txt +61 -0
  68. data/spec/data/convert_test/horizontal_ellipsis/correct_test_horizontal_ellipsis.txt +52 -0
  69. data/spec/data/convert_test/horizontal_ellipsis/test_horizontal_ellipsis.txt +57 -0
  70. data/spec/data/convert_test/kanji_num/correct_test_kanji_num.txt +49 -0
  71. data/spec/data/convert_test/kanji_num/test_kanji_num.txt +56 -0
  72. data/spec/data/convert_test/nonokagi/correct_test_nonokagi.txt +29 -0
  73. data/spec/data/convert_test/nonokagi/test_nonokagi.txt +34 -0
  74. data/spec/data/convert_test/replace/correct_test_replace.txt +12 -0
  75. data/spec/data/convert_test/replace/replace.txt +7 -0
  76. data/spec/data/convert_test/replace/test_replace.txt +14 -0
  77. data/spec/data/convert_test/ruby/correct_test_ruby.txt +131 -0
  78. data/spec/data/convert_test/ruby/test_ruby.txt +170 -0
  79. data/spec/data/convert_test/ruby_youon/correct_test_ruby_youon.txt +12 -0
  80. data/spec/data/convert_test/ruby_youon/setting.ini +2 -0
  81. data/spec/data/convert_test/ruby_youon/test_ruby_youon.txt +14 -0
  82. data/spec/data/convert_test/sesame/correct_test_sesame.txt +40 -0
  83. data/spec/data/convert_test/sesame/test_sesame.txt +52 -0
  84. data/spec/data/convert_test/to_odd_leader/correct_test_to_odd_leader.txt +20 -0
  85. data/spec/data/convert_test/to_odd_leader/test_to_odd_leader.txt +21 -0
  86. data/spec/device_spec.rb +3 -3
  87. data/spec/generator/convert_spec_gen.rb +95 -0
  88. data/spec/html_spec.rb +9 -8
  89. data/spec/ini_spec.rb +31 -31
  90. data/spec/novelinfo_spec.rb +2 -2
  91. data/spec/num_to_kanji_spec.rb +2 -2
  92. data/template/diff.txt.erb +5 -2
  93. data/template/ibunko_novel.txt.erb +2 -1
  94. data/template/novel.txt.erb +16 -3
  95. data/template/setting.ini.erb +1 -1
  96. data/webnovel/ncode.syosetu.com.yaml +7 -7
  97. data/webnovel/novel18.syosetu.com.yaml +7 -7
  98. data/webnovel/syosetu.org.yaml +8 -11
  99. metadata +193 -23
  100. data/lib/globalsetting.rb +0 -64
  101. data/lib/localsetting.rb +0 -63
@@ -0,0 +1,18 @@
1
+ test_auto_indent
2
+ whiteleaf
3
+
4
+ [#改ページ]
5
+ [#3字下げ][#ここから中見出し]オートインデントテスト[#ここで中見出し終わり]
6
+
7
+
8
+ [#二分アキ]「おはようございます、先輩♪」
9
+  朝から元気に挨拶をしてきたのは、一つしたの後輩、光坂瑞穂である。
10
+  こいつは昔から近所同士の付き合いをしてきた、いわゆる幼馴染という奴だ。
11
+  ……というのは嘘だ。
12
+  ・・これはインデントされる
13
+
14
+ ・提案一
15
+  ああしろ、こうしろ
16
+
17
+ ・提案二
18
+  どうしろ、さあしろ
@@ -0,0 +1,21 @@
1
+ test_auto_indent
2
+ whiteleaf
3
+
4
+ [#改ページ]
5
+ オートインデントテスト
6
+
7
+
8
+ 「おはようございます、先輩♪」
9
+ 朝から元気に挨拶をしてきたのは、一つしたの後輩、光坂瑞穂である。
10
+ こいつは昔から近所同士の付き合いをしてきた、いわゆる幼馴染という奴だ。
11
+ ・・・というのは嘘だ。
12
+
13
+ ・・これはインデントされる
14
+
15
+
16
+ ・提案1
17
+ ああしろ、こうしろ
18
+
19
+
20
+ ・提案2
21
+ どうしろ、さあしろ
@@ -0,0 +1,12 @@
1
+ test_auto_join_bracket
2
+ whiteleaf
3
+
4
+ [#改ページ]
5
+ [#3字下げ][#ここから中見出し]カギ括弧連結テスト[#ここで中見出し終わり]
6
+
7
+
8
+ [#二分アキ]「あいうえお? 二かきくけこ! 三さしすせそ[#縦中横]!?[#縦中横終わり]」たちつてと。
9
+
10
+ [#二分アキ]「そういえば、それはミツキも同じだろ? ミツキは大丈夫なのか?」
11
+ [#二分アキ]「私ですか? 一週間程度なら、連戦も問題ありません」
12
+ [#二分アキ]「そ、そうか……」
@@ -0,0 +1,16 @@
1
+ test_auto_join_bracket
2
+ whiteleaf
3
+
4
+ [#改ページ]
5
+ カギ括弧連結テスト
6
+
7
+ 「あいうえお?
8
+  二かきくけこ!
9
+  三さしすせそ!?」たちつてと。
10
+
11
+
12
+ 「そういえば、それはミツキも同じだろ?
13
+  ミツキは大丈夫なのか?」
14
+ 「私ですか?
15
+  一週間程度なら、連戦も問題ありません」
16
+ 「そ、そうか……」
@@ -0,0 +1,36 @@
1
+ test_auto_join_line
2
+ whiteleaf
3
+
4
+ [#改ページ]
5
+ [#3字下げ][#ここから中見出し]作者による折り返しを強制連結テスト[#ここで中見出し終わり]
6
+
7
+
8
+ ○前後の文がつながって欲しい表現
9
+  悲痛な叫び声が背中に突き刺さっていたが、明日香は無視して走り続けた。
10
+
11
+  悲痛な叫び声が背中に突き刺さっていたが、明日香は無視して走り続けた。
12
+
13
+
14
+ ×前後の文はつながって欲しくない表現
15
+  悲痛な叫び声が背中に突き刺さっていたが、
16
+
17
+  明日香は無視して走り続けた。
18
+
19
+  次の行が字下げなしの場合は、箇条書きの説明等の可能性があるため連結して欲しくない。
20
+  悲痛な叫び声が背中に突き刺さっていたが、
21
+ 明日香は無視して走り続けた。
22
+
23
+  悲痛な叫び声が背中に突き刺さっていたが、
24
+  ……明日香は無視して走り続けた。
25
+
26
+  悲痛な叫び声が背中に突き刺さっていたが、
27
+  ――明日香は無視して走り続けた。
28
+
29
+  悲痛な叫び声が背中に突き刺さっていたが、
30
+ [#二分アキ]「私が行かなければ彼の犠牲は無駄になる……!」
31
+
32
+  悲痛な叫び声が背中に突き刺さっていたが、
33
+ [#二分アキ]「私が行かなければ彼の犠牲は無駄になる……!」
34
+
35
+  悲痛な叫び声が背中に突き刺さっていたが、
36
+ [#二分アキ](私が行かなければ彼の犠牲は無駄になる……!)
@@ -0,0 +1,51 @@
1
+ test_auto_join_line
2
+ whiteleaf
3
+
4
+ [#改ページ]
5
+ 作者による折り返しを強制連結テスト
6
+
7
+
8
+ ○前後の文がつながって欲しい表現
9
+
10
+  悲痛な叫び声が背中に突き刺さっていたが、
11
+  明日香は無視して走り続けた。
12
+
13
+
14
+  悲痛な叫び声が背中に突き刺さっていたが、
15
+
16
+  明日香は無視して走り続けた。
17
+
18
+
19
+
20
+
21
+ ×前後の文はつながって欲しくない表現
22
+
23
+  悲痛な叫び声が背中に突き刺さっていたが、
24
+
25
+
26
+  明日香は無視して走り続けた。
27
+
28
+
29
+  次の行が字下げなしの場合は、箇条書きの説明等の可能性があるため連結して欲しくない。
30
+  悲痛な叫び声が背中に突き刺さっていたが、
31
+ 明日香は無視して走り続けた。
32
+
33
+
34
+  悲痛な叫び声が背中に突き刺さっていたが、
35
+  ……明日香は無視して走り続けた。
36
+
37
+
38
+  悲痛な叫び声が背中に突き刺さっていたが、
39
+  ――明日香は無視して走り続けた。
40
+
41
+
42
+  悲痛な叫び声が背中に突き刺さっていたが、
43
+ 「私が行かなければ彼の犠牲は無駄になる……!」
44
+
45
+
46
+  悲痛な叫び声が背中に突き刺さっていたが、
47
+  「私が行かなければ彼の犠牲は無駄になる……!」
48
+
49
+
50
+  悲痛な叫び声が背中に突き刺さっていたが、
51
+ (私が行かなければ彼の犠牲は無駄になる……!)
@@ -0,0 +1,21 @@
1
+ test_convert_page_break
2
+ whiteleaf
3
+
4
+ [#改ページ]
5
+ [#3字下げ][#ここから中見出し]改ページ変換テスト[#ここで中見出し終わり]
6
+
7
+
8
+  一般的な空行一(改ページに変換されない)
9
+
10
+  一般的な空行二(改ページに変換されない)
11
+
12
+
13
+  空行九個(改ページに変換されない)
14
+
15
+
16
+
17
+  空行一〇個(改ページに変換される)
18
+ [#改頁]
19
+  一〇個よりも多い空行(改ページに変換される)
20
+ [#改頁]
21
+  終わり
@@ -0,0 +1,5 @@
1
+ ; `to_page_break_threshold` で設定した個数以上連続する空行を改ページに変換する
2
+ enable_convert_page_break = true
3
+
4
+ ; ここで設定した値が `enable_convert_page_break` に反映される
5
+ to_page_break_threshold = 10
@@ -0,0 +1,60 @@
1
+ test_convert_page_break
2
+ whiteleaf
3
+
4
+ [#改ページ]
5
+ 改ページ変換テスト
6
+
7
+  一般的な空行1(改ページに変換されない)
8
+
9
+
10
+  一般的な空行2(改ページに変換されない)
11
+
12
+
13
+
14
+
15
+  空行9個(改ページに変換されない)
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+  空行10個(改ページに変換される)
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+  10個よりも多い空行(改ページに変換される)
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+  終わり
@@ -0,0 +1,64 @@
1
+ test_force_indent_special_chapter
2
+ whiteleaf
3
+
4
+  数字章見出しの自動インデント
5
+
6
+    [#ゴシック体]― [#縦中横]10[#縦中横終わり] ―[#ゴシック体終わり]
7
+
8
+  ほげほげ
9
+
10
+    [#ゴシック体]― 1 ―[#ゴシック体終わり]
11
+
12
+  ほげほげ
13
+
14
+    [#ゴシック体]〈[#縦中横]23[#縦中横終わり]〉[#ゴシック体終わり]
15
+
16
+  ほげほげ
17
+
18
+    [#ゴシック体]― 200 ―[#ゴシック体終わり]
19
+
20
+    [#ゴシック体]― 100 ―[#ゴシック体終わり]
21
+
22
+    [#ゴシック体]〈350〉[#ゴシック体終わり]
23
+
24
+    [#ゴシック体]〈[#縦中横]31[#縦中横終わり]〉[#ゴシック体終わり]
25
+
26
+    [#ゴシック体]5[#ゴシック体終わり]
27
+
28
+    [#ゴシック体][#縦中横]40[#縦中横終わり][#ゴシック体終わり]
29
+
30
+    [#ゴシック体]100[#ゴシック体終わり]
31
+
32
+ 四桁以上は対象外
33
+
34
+ 二万
35
+
36
+    [#ゴシック体]五[#ゴシック体終わり]
37
+
38
+    [#ゴシック体]三五[#ゴシック体終わり]
39
+
40
+    [#ゴシック体]一〇〇[#ゴシック体終わり]
41
+
42
+ 六七八九
43
+ 三百
44
+
45
+  第一〇章
46
+  これは変換してほしくない
47
+ [#改頁]
48
+
49
+    [#ゴシック体]1[#ゴシック体終わり]
50
+
51
+  窓の外から小鳥のさえずる声が聞こえる。窓から差し込む淡い光が部屋の中に広がっている。
52
+  また今日も新しい朝が来た。
53
+
54
+    [#ゴシック体]2[#ゴシック体終わり]
55
+
56
+  仕事支度を整えた私は、時間を気にしつつもゆっくりとした気持ちで玄関の扉を開けた。
57
+  朝もやの漂う空気は静謐さを感じさせる。
58
+  まだ周囲には人はまばらにしかいない。
59
+  それも当然だろう。現在の時刻は午前六時。出勤するというにはまだ若干早いといえる時間だ。
60
+
61
+    [#ゴシック体]3[#ゴシック体終わり]
62
+
63
+  私は出勤したらまずデスク周りの掃除からはじめる。
64
+  ゴミひとつないキレイな環境で、今日もまた気持ちのいい心で仕事に励めるだろう。
@@ -0,0 +1,61 @@
1
+ test_force_indent_special_chapter
2
+ whiteleaf
3
+
4
+  数字章見出しの自動インデント
5
+
6
+
7
+  ―10―
8
+
9
+  ほげほげ
10
+
11
+
12
+  -1-
13
+  ほげほげ
14
+
15
+
16
+  <23>
17
+
18
+  ほげほげ
19
+
20
+
21
+ -200
22
+
23
+
24
+ -100-
25
+ <350>
26
+ <31>
27
+ 5
28
+ 40
29
+ 100
30
+
31
+ 四桁以上は対象外
32
+ 1000
33
+ 20000
34
+
35
+ 三五
36
+ 一〇〇
37
+ 六七八九
38
+ 三百
39
+
40
+
41
+  第10章
42
+
43
+  これは変換してほしくない
44
+ [#改頁]
45
+  1
46
+
47
+  窓の外から小鳥のさえずる声が聞こえる。窓から差し込む淡い光が部屋の中に広がっている。
48
+  また今日も新しい朝が来た。
49
+
50
+
51
+  2
52
+
53
+  仕事支度を整えた私は、時間を気にしつつもゆっくりとした気持ちで玄関の扉を開けた。
54
+  朝もやの漂う空気は静謐さを感じさせる。
55
+  まだ周囲には人はまばらにしかいない。
56
+  それも当然だろう。現在の時刻は午前六時。出勤するというにはまだ若干早いといえる時間だ。
57
+
58
+  3
59
+
60
+  私は出勤したらまずデスク周りの掃除からはじめる。
61
+  ゴミひとつないキレイな環境で、今日もまた気持ちのいい心で仕事に励めるだろう。
@@ -0,0 +1,52 @@
1
+ test_horizontal_ellipsis
2
+ whiteleaf
3
+
4
+ [#改ページ]
5
+ [#3字下げ][#ここから中見出し]三点リーダー化テスト[#ここで中見出し終わり]
6
+
7
+
8
+  。
9
+  、
10
+
11
+  ……
12
+  ……
13
+  ……
14
+  ……
15
+  …………
16
+  …………
17
+  …………
18
+  …………
19
+  …………
20
+  …………
21
+  ………………
22
+
23
+  ……
24
+  ……
25
+  ……
26
+  ……
27
+  …………
28
+  …………
29
+  …………
30
+  …………
31
+  …………
32
+  …………
33
+  ………………
34
+
35
+  俺はこう尋ねた、
36
+ [#二分アキ]「それは違うんじゃないか?」
37
+  俺としては、もっと溌溂とした姿を見てみたい、
38
+  ……だが。
39
+
40
+  ……
41
+  ……
42
+  ……
43
+  ……
44
+  …………
45
+  …………
46
+  …………
47
+  …………
48
+  …………
49
+  …………
50
+  ………………
51
+
52
+  そうだな……
@@ -0,0 +1,57 @@
1
+ test_horizontal_ellipsis
2
+ whiteleaf
3
+
4
+ [#改ページ]
5
+ 三点リーダー化テスト
6
+
7
+  。。
8
+  、、
9
+
10
+
11
+  ・・・
12
+  ・・・・
13
+  ・・・・・
14
+  ・・・・・・
15
+  ・・・・・・・
16
+  ・・・・・・・・
17
+  ・・・・・・・・・
18
+  ・・・・・・・・・・
19
+  ・・・・・・・・・・・
20
+  ・・・・・・・・・・・・
21
+  ・・・・・・・・・・・・・
22
+
23
+
24
+  、、、
25
+  、、、、
26
+  、、、、、
27
+  、、、、、、
28
+  、、、、、、、
29
+  、、、、、、、、
30
+  、、、、、、、、、
31
+  、、、、、、、、、、
32
+  、、、、、、、、、、、
33
+  、、、、、、、、、、、、
34
+  、、、、、、、、、、、、、
35
+
36
+
37
+  俺はこう尋ねた、
38
+ 「それは違うんじゃないか?」
39
+  俺としては、
40
+  もっと溌溂とした姿を見てみたい、
41
+  ……だが。
42
+
43
+
44
+  。。。
45
+  。。。。
46
+  。。。。。
47
+  。。。。。。
48
+  。。。。。。。
49
+  。。。。。。。。
50
+  。。。。。。。。。
51
+  。。。。。。。。。。
52
+  。。。。。。。。。。。
53
+  。。。。。。。。。。。。
54
+  。。。。。。。。。。。。。
55
+
56
+
57
+  そうだな......