narou 2.9.5 → 3.0.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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -0
  3. data/.reek +34 -0
  4. data/.rspec +1 -0
  5. data/.rubocop.yml +9 -1
  6. data/ChangeLog.md +90 -0
  7. data/Gemfile +4 -0
  8. data/README.md +85 -8
  9. data/lib/command/convert.rb +1 -1
  10. data/lib/command/list.rb +59 -73
  11. data/lib/command/list/novel_decorator.rb +107 -0
  12. data/lib/command/send.rb +23 -13
  13. data/lib/command/setting.rb +5 -1
  14. data/lib/command/update.rb +104 -138
  15. data/lib/command/update/general_lastup_updater.rb +105 -0
  16. data/lib/command/update/interval.rb +29 -0
  17. data/lib/command/web.rb +1 -1
  18. data/lib/commandbase.rb +24 -17
  19. data/lib/converterbase.rb +10 -5
  20. data/lib/database.rb +16 -5
  21. data/lib/device.rb +5 -1
  22. data/lib/device/library/linux.rb +68 -8
  23. data/lib/downloader.rb +24 -23
  24. data/lib/extension.rb +16 -3
  25. data/lib/helper.rb +26 -3
  26. data/lib/html.rb +1 -1
  27. data/lib/inspector.rb +9 -0
  28. data/lib/inventory.rb +20 -6
  29. data/lib/logger.rb +8 -2
  30. data/lib/mailer.rb +2 -1
  31. data/lib/narou.rb +28 -18
  32. data/lib/narou/api.rb +62 -31
  33. data/lib/novelconverter.rb +8 -1
  34. data/lib/novelinfo.rb +8 -7
  35. data/lib/novelsetting.rb +1 -0
  36. data/lib/progressbar.rb +6 -2
  37. data/lib/sitesetting.rb +2 -1
  38. data/lib/version.rb +1 -1
  39. data/lib/web/appserver.rb +72 -9
  40. data/lib/web/public/resources/narou.library.js +130 -13
  41. data/lib/web/public/resources/narou.ui.js +96 -9
  42. data/lib/web/settingmessages.rb +2 -1
  43. data/lib/web/views/_about.haml +15 -2
  44. data/lib/web/views/index.haml +12 -3
  45. data/lib/web/views/layout.haml +2 -1
  46. data/lib/web/views/style.scss +12 -0
  47. data/narou.gemspec +88 -11
  48. data/narou.rb +7 -1
  49. data/preset/mail_setting.yaml +40 -6
  50. data/webnovel/kakuyomu.jp.yaml +8 -8
  51. metadata +95 -139
  52. data/spec/README.txt +0 -4
  53. data/spec/convert_spec.rb +0 -119
  54. data/spec/converterbase_spec.rb +0 -298
  55. data/spec/data/convert_test/auto_indent/correct_test_auto_indent.txt +0 -28
  56. data/spec/data/convert_test/auto_indent/test_auto_indent.txt +0 -32
  57. data/spec/data/convert_test/auto_join_bracket/correct_test_auto_join_bracket.txt +0 -24
  58. data/spec/data/convert_test/auto_join_bracket/test_auto_join_bracket.txt +0 -28
  59. data/spec/data/convert_test/auto_join_line/correct_test_auto_join_line.txt +0 -43
  60. data/spec/data/convert_test/auto_join_line/test_auto_join_line.txt +0 -59
  61. data/spec/data/convert_test/convert_page_break/correct_test_convert_page_break.txt +0 -22
  62. data/spec/data/convert_test/convert_page_break/setting.ini +0 -5
  63. data/spec/data/convert_test/convert_page_break/test_convert_page_break.txt +0 -60
  64. data/spec/data/convert_test/double_dash_to_image/correct_test_double_dash_to_image.txt +0 -14
  65. data/spec/data/convert_test/double_dash_to_image/setting.ini +0 -1
  66. data/spec/data/convert_test/double_dash_to_image/test_double_dash_to_image.txt +0 -12
  67. data/spec/data/convert_test/english/correct_test_english.txt +0 -27
  68. data/spec/data/convert_test/english/test_english.txt +0 -27
  69. data/spec/data/convert_test/force_indent_special_chapter/correct_test_force_indent_special_chapter.txt +0 -64
  70. data/spec/data/convert_test/force_indent_special_chapter/test_force_indent_special_chapter.txt +0 -61
  71. data/spec/data/convert_test/horizontal_ellipsis/correct_test_horizontal_ellipsis.txt +0 -53
  72. data/spec/data/convert_test/horizontal_ellipsis/test_horizontal_ellipsis.txt +0 -57
  73. data/spec/data/convert_test/insert_separator/correct_test_insert_separator.txt +0 -13
  74. data/spec/data/convert_test/insert_separator/setting.ini +0 -3
  75. data/spec/data/convert_test/insert_separator/test_insert_separator.txt +0 -12
  76. data/spec/data/convert_test/insert_separator_and_replace_txt/correct_test_insert_separator_and_replace_txt.txt +0 -12
  77. data/spec/data/convert_test/insert_separator_and_replace_txt/setting.ini +0 -3
  78. data/spec/data/convert_test/insert_separator_and_replace_txt/test_insert_separator_and_replace_txt.txt +0 -11
  79. data/spec/data/convert_test/kanji_num/correct_test_kanji_num.txt +0 -50
  80. data/spec/data/convert_test/kanji_num/test_kanji_num.txt +0 -56
  81. data/spec/data/convert_test/nonokagi/correct_test_nonokagi.txt +0 -30
  82. data/spec/data/convert_test/nonokagi/test_nonokagi.txt +0 -34
  83. data/spec/data/convert_test/replace/correct_test_replace.txt +0 -13
  84. data/spec/data/convert_test/replace/test_replace.txt +0 -14
  85. data/spec/data/convert_test/ruby/correct_test_ruby.txt +0 -161
  86. data/spec/data/convert_test/ruby/test_ruby.txt +0 -205
  87. data/spec/data/convert_test/ruby_youon/correct_test_ruby_youon.txt +0 -13
  88. data/spec/data/convert_test/ruby_youon/setting.ini +0 -2
  89. data/spec/data/convert_test/ruby_youon/test_ruby_youon.txt +0 -14
  90. data/spec/data/convert_test/sesame/correct_test_sesame.txt +0 -41
  91. data/spec/data/convert_test/sesame/test_sesame.txt +0 -52
  92. data/spec/data/convert_test/to_odd_leader/correct_test_to_odd_leader.txt +0 -21
  93. data/spec/data/convert_test/to_odd_leader/test_to_odd_leader.txt +0 -21
  94. data/spec/data/html_test.html +0 -5
  95. data/spec/data/html_test.txt +0 -4
  96. data/spec/data/test.ini +0 -10
  97. data/spec/device_spec.rb +0 -39
  98. data/spec/downloader_spec.rb +0 -37
  99. data/spec/eventable_spec.rb +0 -172
  100. data/spec/exit_code_spec.rb +0 -67
  101. data/spec/generator/convert_spec_gen.rb +0 -96
  102. data/spec/generator/num_to_kanji_test_gen.rb +0 -33
  103. data/spec/helper_spec.rb +0 -90
  104. data/spec/html_spec.rb +0 -83
  105. data/spec/ini_spec.rb +0 -145
  106. data/spec/input_spec.rb +0 -76
  107. data/spec/logger_spec.rb +0 -92
  108. data/spec/novelinfo_spec.rb +0 -15
  109. data/spec/novelsetting_spec.rb +0 -35
  110. data/spec/num_to_kanji_spec.rb +0 -2482
  111. data/spec/spec_helper.rb +0 -16
  112. data/spec/worker_spec.rb +0 -75
@@ -1,13 +0,0 @@
1
- test_ruby_youon
2
- whiteleaf
3
-
4
- [#改ページ]
5
-
6
- [#3字下げ][#中見出し]拗音巨大化テスト[#中見出し終わり]
7
-
8
-
9
-  僕の好きな言葉に|一日千秋《いちじつせんしゆう》という言葉がある。
10
-
11
-  |東京特許許可局《とうきようとつきよきよかきよく》
12
-
13
-  |東京特許許可局《トウキヨウトツキヨキヨカキヨク》
@@ -1,2 +0,0 @@
1
- ; ルビの拗音(ぁ、ぃ等)を商業書籍のように大きくするかどうか
2
- enable_ruby_youon_to_big = true
@@ -1,14 +0,0 @@
1
- test_ruby_youon
2
- whiteleaf
3
-
4
- [#改ページ]
5
- 拗音巨大化テスト
6
-
7
-
8
- 僕の好きな言葉に一日千秋《いちじつせんしゅう》という言葉がある。
9
-
10
-
11
- 東京特許許可局《とうきょうとっきょきょかきょく》
12
-
13
-
14
- 東京特許許可局《トウキョウトッキョキョカキョク》
@@ -1,41 +0,0 @@
1
- test_sesame
2
- whiteleaf
3
-
4
- [#改ページ]
5
-
6
- [#3字下げ][#中見出し]傍点テスト[#中見出し終わり]
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
-  読点で圏点(、)  NG
36
-  読点で※[#縦線]圏点(、)  NG
37
-  ※[#縦線]読点で圏点(、)  NG
38
-
39
-  読点で[#傍点]圏点[#傍点終わり]
40
-  読点で[#傍点]圏点[#傍点終わり]
41
-  [#傍点]読点で圏点[#傍点終わり]
@@ -1,52 +0,0 @@
1
- test_sesame
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
-  読点で圏点(、、)  NG
46
-  読点で|圏点(、、)  NG
47
-  |読点で圏点(、、)  NG
48
-
49
-
50
-  読点で圏点《、、》
51
-  読点で|圏点《、、》
52
-  |読点で圏点《、、》
@@ -1,21 +0,0 @@
1
- test_to_odd_leader
2
- whiteleaf
3
-
4
- [#改ページ]
5
-
6
- [#3字下げ][#中見出し]三点リーダー偶数化テスト[#中見出し終わり]
7
-
8
-
9
-  ……
10
-  ……
11
-  …………
12
-  …………
13
-  ………………
14
-  ………………
15
-
16
-  ‥‥
17
-  ‥‥
18
-  ‥‥‥‥
19
-  ‥‥‥‥
20
-  ‥‥‥‥‥‥
21
-  ‥‥‥‥‥‥
@@ -1,21 +0,0 @@
1
- test_to_odd_leader
2
- whiteleaf
3
-
4
- [#改ページ]
5
- 三点リーダー偶数化テスト
6
-
7
-
8
- ……
9
- ………
10
- …………
11
- ……………
12
- ………………
13
-
14
-
15
-
16
- ‥‥
17
- ‥‥‥
18
- ‥‥‥‥
19
- ‥‥‥‥‥
20
- ‥‥‥‥‥‥
21
-
@@ -1,5 +0,0 @@
1
- <font size=+1>《今日の晩御飯》</font><br />
2
- 昨日の<ruby><rb>晩御飯</rb><rp>(</rp><rt>ばんごはん</rt><rp>)</rp></ruby>はとても美味しかった。<br>
3
- <b>でも</b>、<i>今日のご飯</i>はもっと<s>美味しいに違いない</s>美味しくなかった。<br />
4
- 挿絵:
5
- <img src="./images/100.jpg">
@@ -1,4 +0,0 @@
1
- ≪今日の晩御飯≫
2
- 昨日の|晩御飯《ばんごはん》はとても美味しかった。
3
- [#太字]でも[#太字終わり]、[#斜体]今日のご飯[#斜体終わり]はもっと[#取消線]美味しいに違いない[#取消線終わり]美味しくなかった。
4
- 挿絵:[#挿絵(./images/100.jpg)入る]
@@ -1,10 +0,0 @@
1
- ; comments
2
- global_string = 文字列
3
-
4
- [sub_section]
5
- true_value = true
6
- false_value = false
7
- nil_value_1 = nil
8
- nil_value_2 =
9
- number = 100
10
- quote_string = "囲まれた文字列"
@@ -1,39 +0,0 @@
1
- # -*- Encoding: utf-8 -*-
2
- #
3
- # Copyright 2013 whiteleaf. All rights reserved.
4
- #
5
-
6
- require_relative "../lib/device"
7
-
8
- if Helper.os_windows?
9
- describe "Windowsの場合" do
10
- describe Device::Library::Windows do
11
- it "Windows7_OSなボリュームネームのドライブは C:/" do
12
- module Dummy
13
- extend Device::Library::Windows
14
- end
15
- expect(Dummy.get_device_root_dir("Windows7_OS")).to eq("C:/")
16
- end
17
- end
18
-
19
- describe "Kindle" do
20
- before do
21
- @device = Device.create("kindle")
22
- end
23
-
24
- it "は存在するべき" do
25
- expect(Device.exists?("kindle")).to be_truthy
26
- end
27
- end
28
-
29
- describe "Kobo" do
30
- before do
31
- @device = Device.create("kobo")
32
- end
33
-
34
- it "は存在するべき" do
35
- expect(Device.exists?("kobo")).to be_truthy
36
- end
37
- end
38
- end
39
- end
@@ -1,37 +0,0 @@
1
- # -*- Encoding: utf-8 -*-
2
- #
3
- # Copyright 2013 whiteleaf. All rights reserved.
4
- #
5
-
6
- require_relative "../lib/downloader"
7
-
8
- describe Downloader do
9
- describe ".create_subdirecotry_name" do
10
- context "小説家になろうのタイトルが渡された場合" do
11
- it do
12
- expect(Downloader.create_subdirecotry_name("n9669bk 無職転生 - 異世界行ったら本気だす -")).to eq "96"
13
- end
14
-
15
- it do
16
- expect(Downloader.create_subdirecotry_name("n8725k ログ・ホライズン")).to eq "87"
17
- end
18
- end
19
-
20
- context "なろう以外のタイトルが渡された場合" do
21
- it do
22
- expect(Downloader.create_subdirecotry_name("15041 とある能力の代償")).to eq "15"
23
- end
24
-
25
- it do
26
- expect(Downloader.create_subdirecotry_name("40151 異界渡りの魔法使い")).to eq "40"
27
- end
28
- end
29
-
30
- context "1文字のタイトルが渡された場合" do
31
- it { expect(Downloader.create_subdirecotry_name("n")).to eq "" }
32
- it { expect(Downloader.create_subdirecotry_name("1")).to eq "1" }
33
- it { expect(Downloader.create_subdirecotry_name("a")).to eq "a" }
34
- end
35
- end
36
- end
37
-
@@ -1,172 +0,0 @@
1
- # -*- Encoding: utf-8 -*-
2
- #
3
- # Copyright 2013 whiteleaf. All rights reserved.
4
- #
5
-
6
- module Narou end
7
- require_relative "../lib/eventable"
8
-
9
- class Dummy
10
- include Narou::Eventable
11
- end
12
-
13
- describe Narou::Eventable do
14
- context "when an event exist" do
15
- before do
16
- @temp1 = 0
17
- Dummy.add_event_listener(:regist_new_book) do
18
- @temp1 = 1
19
- end
20
- end
21
-
22
- it "should triggered event" do
23
- Dummy.trigger_event(:regist_new_book)
24
- expect(@temp1).to eq 1
25
- end
26
- end
27
-
28
- context "when multi events exist" do
29
- before do
30
- @temp1 = 0
31
- Dummy.add_event_listener(:temp_add_event) do
32
- @temp1 += 1
33
- end
34
- Dummy.add_event_listener(:temp_add_event) do
35
- @temp1 += 1
36
- end
37
- end
38
-
39
- it "should be @temp1 eq 2" do
40
- Dummy.trigger_event(:temp_add_event)
41
- expect(@temp1).to eq 2
42
- end
43
- end
44
-
45
- context "when give arguments" do
46
- it do
47
- Dummy.add_event_listener(:give_argument) do |arg|
48
- expect(arg).to eq 0
49
- end
50
- Dummy.trigger_event(:give_arguments, 0)
51
- end
52
-
53
- it do
54
- Dummy.add_event_listener(:give_arguments) do |arg1, arg2|
55
- expect(arg1).to eq 1
56
- expect(arg2).to eq :two
57
- end
58
- Dummy.trigger_event(:give_arguments, 1, :two)
59
- end
60
- end
61
-
62
- context "without block" do
63
- it "should be raise error" do
64
- expect { Dummy.add_event_listener(:test1) }.to raise_error(Narou::Eventable::NonBlockError)
65
- end
66
- end
67
-
68
- context "if do not register events yet" do
69
- it "do nothing" do
70
- expect { Dummy.trigger_event(:dont_registered_event) }.not_to raise_error
71
- end
72
- end
73
-
74
- context "when call #add_event_listener and .add_event_listener" do
75
- before do
76
- @anser = nil
77
- @dummy = Dummy.new
78
- @dummy.add_event_listener(:instance_or_class) do
79
- @anser = :instance
80
- end
81
- Dummy.add_event_listener(:instance_or_class) do
82
- @anser = :class
83
- end
84
- end
85
-
86
- it "instance method is called" do
87
- @dummy.trigger_event(:instance_or_class)
88
- expect(@anser).to eq :instance
89
- end
90
-
91
- it "class method is called" do
92
- Dummy.trigger_event(:instance_or_class)
93
- expect(@anser).to eq :class
94
- end
95
- end
96
-
97
- context "multi call" do
98
- before do
99
- @state = 0
100
- @dummy = Dummy.new
101
- @dummy.add_event_listener(:multi) do
102
- @state += 1
103
- end
104
- end
105
-
106
- it do
107
- @dummy.trigger_event(:multi)
108
- expect(@state).to eq 1
109
- @dummy.trigger_event(:multi)
110
- expect(@state).to eq 2
111
- @dummy.trigger_event(:multi)
112
- expect(@state).to eq 3
113
- end
114
- end
115
-
116
- context "#remove_event_listener" do
117
- before do
118
- @state = 100
119
- @dummy = Dummy.new
120
- end
121
-
122
- context "remove all events" do
123
- before do
124
- @dummy.add_event_listener(:inc_state) do
125
- @state += 200
126
- end
127
- @dummy.add_event_listener(:inc_state) do
128
- @state += 200
129
- end
130
- end
131
-
132
- it "@state should be 100" do
133
- @dummy.remove_event_listener(:inc_state)
134
- @dummy.trigger_event(:inc_state)
135
- expect(@state).to eq 100
136
- end
137
- end
138
-
139
- context "remove specify event" do
140
- before do
141
- @inc_100 = -> { @state += 100 }
142
- @inc_200 = -> { @state += 200 }
143
- @dummy.add_event_listener(:inc_state2, &@inc_100)
144
- @dummy.add_event_listener(:inc_state2, &@inc_200)
145
- end
146
-
147
- it "@state should be 300" do
148
- @dummy.remove_event_listener(:inc_state2, &@inc_100)
149
- @dummy.trigger_event(:inc_state2)
150
- expect(@state).to eq 300
151
- end
152
- end
153
- end
154
-
155
- context "#one" do
156
- before do
157
- @state = 0
158
- @dummy = Dummy.new
159
- @dummy.one(:one_event) do
160
- @state += 1
161
- end
162
- end
163
-
164
- it "@state should be 1" do
165
- @dummy.trigger(:one_event)
166
- expect(@state).to eq 1
167
- @dummy.trigger(:one_event)
168
- expect(@state).to eq 1
169
- end
170
- end
171
- end
172
-