narou 1.2.3 → 1.2.4

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.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e416c72bb7d29a365b7bedd7abf4c51a11bb290a
4
- data.tar.gz: d94e24683d27a9a07cfc001ffe51b4c1e4666fe3
3
+ metadata.gz: 2ef2417895cd9b2a56ca5744e07f4d27c44585b8
4
+ data.tar.gz: ecfffc91bf3e5606e56cf94def0e14530906a6e4
5
5
  SHA512:
6
- metadata.gz: d92b78abe399dfa2f57cae822a353371724b3b0d93b0772d7c77caa2e4ebbef21059cb214fe2b7b9a756dbce67b37fed711f43e585ca59cb0c81e19c00e1473a
7
- data.tar.gz: 1779ecade764e653f812b00b5e0db6ead21741eb7ce25a1e95eb9a19e8442f5931899850b9e27a7b8bbd003db583f08af78e78a6e518aa5fb7bd619507197ca8
6
+ metadata.gz: 5eb6d0461a5ca6de23c44c174db83d22b667bb296830f7a988d62cf487ededcb22ce4223c9e38720d3ac8339da250d53219a9170dc562e78c49c7c159e17c125
7
+ data.tar.gz: 9444d31ebacb2df674d59bc7aab3a3de1249063f35d24c24946e972653d6f5bd96ed501a4ee94e7574ce0064271a12e3e6a18b0c5c8928ca421fbb3ba0d45111
data/ChangeLog.md CHANGED
@@ -1,6 +1,23 @@
1
1
  
2
2
  更新履歴 - ChangeLog
3
3
  --------------------
4
+ 2013/04/20 : **1.2.4**
5
+ * Bug Fix
6
+ - 自動行頭字下げの判定方法を調整(括弧等を除いた行に対する割合で計算するように変更)
7
+ - かぎ括弧内自動連結時に、行末が!?で次の行頭が漢数字だった場合に全角空白が入らなかった問題を修正加
8
+ - 更新チェック時にサブタイトルもチェックするようにした
9
+ - サブタイトルの中の2桁以下の半角アラビア数字を強制縦中横化するようにした
10
+ + AozoraEpub3 の仕様で見出し内の自動縦中横化働かないため
11
+ * 追加機能もしくは仕様変更
12
+ - サブタイトルの数字は漢数字化しないように変更
13
+ - 区切り記号にタブを追加(preset/bordersymbols.txt)
14
+ - 手動折り返しの自動連結をしないパターンに、行頭三点リーダーおよび全角ダッシュを追加
15
+ - `download --force` 時に強制上書きする以前の仕様に戻した
16
+ - 連続した句読点を三点リーダーに変換するようにした
17
+ - 一定以上連続する空行を改ページに変換
18
+ + `setting.ini` に `enable_convert_page_break` 及び `to_page_break_threshold` を追加
19
+ - 「Re:ゼロから始める異世界生活」用の変換設定を追加
20
+
4
21
  2013/04/01 : **1.2.3**
5
22
  * 三点(二点)リーダーの偶数化が正常に動いていなかったのを修正
6
23
  * 更新失敗時のエラーメッセージを分かりやすくした
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- Narou.rb ― 小説家になろうダウンローダ&縦書用整形スクリプト
1
+ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンローダ&縦書用整形スクリプト
2
2
  ============================================================
3
3
 
4
4
  概要 - Summary
@@ -20,6 +20,23 @@ Narou.rb ― 小説家になろうダウンローダ&縦書用整形スクリ
20
20
 
21
21
  更新履歴 - ChangeLog
22
22
  --------------------
23
+ 2013/04/20 : **1.2.4**
24
+ * Bug Fix
25
+ - 自動行頭字下げの判定方法を調整(括弧等を除いた行に対する割合で計算するように変更)
26
+ - かぎ括弧内自動連結時に、行末が!?で次の行頭が漢数字だった場合に全角空白が入らなかった問題を修正加
27
+ - 更新チェック時にサブタイトルもチェックするようにした
28
+ - サブタイトルの中の2桁以下の半角アラビア数字を強制縦中横化するようにした
29
+ + AozoraEpub3 の仕様で見出し内の自動縦中横化働かないため
30
+ * 追加機能もしくは仕様変更
31
+ - サブタイトルの数字は漢数字化しないように変更
32
+ - 区切り記号にタブを追加(preset/bordersymbols.txt)
33
+ - 手動折り返しの自動連結をしないパターンに、行頭三点リーダーおよび全角ダッシュを追加
34
+ - `download --force` 時に強制上書きする以前の仕様に戻した
35
+ - 連続した句読点を三点リーダーに変換するようにした
36
+ - 一定以上連続する空行を改ページに変換
37
+ + `setting.ini` に `enable_convert_page_break` 及び `to_page_break_threshold` を追加
38
+ - 「Re:ゼロから始める異世界生活」用の変換設定を追加
39
+
23
40
  2013/04/01 : **1.2.3**
24
41
  * 三点(二点)リーダーの偶数化が正常に動いていなかったのを修正
25
42
  * 更新失敗時のエラーメッセージを分かりやすくした
@@ -30,28 +47,6 @@ Narou.rb ― 小説家になろうダウンローダ&縦書用整形スクリ
30
47
  - 濁点付き文字の処理に不具合があったのを修正
31
48
  - 表紙画像がないときはAozoraEpub3に表紙指定をしないように修正(表紙がなくて挿絵がある場合対策)
32
49
 
33
- 2013/03/23 : **1.2.1**
34
- * Bug Fix
35
- - ノノカギのとじ忘れがあると以降のノノカギのとじ開きが逆になってしまうバグを修正
36
- * この修正によって改行を含んだノノカギでおかしくなるが、仕様とする
37
- - 濁点フォント(DMincho.ttf)に含まれていない文字は縦中横の擬似表現にする
38
- - アラビア数字の漢数字化がちゃんと変換できていなかったのを修正
39
- * 追加機能もしくは仕様変更
40
- - `send` コマンドで管理する全ての小説を送信する機能追加
41
- * `send` を引数なしで実行することで、端末にある書籍データより新しければ送信する
42
- - DMincho.ttfの濁点対応文字を増やした(ι゛ および カタカナに濁点)。 **narou init でAozoraEpub3の再設定が必要です**
43
- - コマンドのデフォルトのオプションを指定できる機能を追加
44
- * `narou setting default_args.コマンド名="オプション"` で設定出来ます。注意:これは、直接コマンドを発行した時のみ有効です。
45
- 他のコマンド経由で呼ばれる場合には有効にはなりません。
46
-
47
- ```
48
- # 使用例
49
- # list コマンドで、「更新日の」「古い順」に表示するオプションを設定(リストが長くなった時に便利)
50
- narou setting default_args.list="-lr"
51
- # オプションを指定しなくても、default_args.listで設定したオプションが使われる
52
- narou list
53
-
54
- # 削除確認メッセージ毎回表示しない
55
- narou setting default_args.remove="-y"
56
- narou remove 0
57
- ```
50
+ ----
51
+
52
+ 「小説家になろう」は株式会社ヒナプロジェクトの登録商標です
@@ -26,7 +26,7 @@ module Command
26
26
 
27
27
  Options:
28
28
  EOS
29
- @opt.on("-f", "--force", "全話を再ダウンロードする。中身が同じなら上書きはしない") {
29
+ @opt.on("-f", "--force", "全話を強制再ダウンロードする") {
30
30
  @options["force"] = true
31
31
  }
32
32
  @opt.on("-n", "--no-convert", "変換をせずダウンロードのみ実行する") {
data/lib/converterbase.rb CHANGED
@@ -15,6 +15,7 @@ class ConverterBase
15
15
 
16
16
  def before(io, text_type)
17
17
  data = io.string
18
+ convert_page_break(data) if @text_type == "body"
18
19
  data.gsub!("\n\n", "\n")
19
20
  data.gsub!("\n\n\n", "\n\n")
20
21
  io
@@ -70,7 +71,7 @@ class ConverterBase
70
71
  def convert_numbers(data)
71
72
  # 小数点を・に
72
73
  data.gsub!(/([\d0-9#{KANJI_NUM}]+?)[\..]([\d0-9#{KANJI_NUM}]+?)/, "\\1・\\2")
73
- if @setting.enable_convert_num_to_kanji
74
+ if @setting.enable_convert_num_to_kanji && @text_type != "subtitle"
74
75
  num_to_kanji(data)
75
76
  else
76
77
  hankaku_num_to_zenkaku_num(data)
@@ -375,11 +376,6 @@ class ConverterBase
375
376
  end
376
377
  end
377
378
  # たまに見かける誤字対策
378
- # MEMO: 。。。 検索結果:355作品
379
- # 、、、 検索結果:171作品
380
- # 上記の三点リーダー的使い方は考慮しない
381
- data.gsub!(/。+/, "。")
382
- data.gsub!(/、+/, "、")
383
379
  data.gsub!(/。 /, "。")
384
380
  data.gsub!(/([?!])。/, "\\1")
385
381
  end
@@ -444,11 +440,18 @@ class ConverterBase
444
440
  end
445
441
 
446
442
  #
447
- # 3桁以上の半角数字を全角アラビア数字に
443
+ # 半角アラビア数字の全角化
444
+ #
445
+ # 3桁以上:全角化
446
+ # 1,2桁:縦中横化
448
447
  #
449
448
  def hankaku_num_to_zenkaku_num(data)
450
- data.gsub!(/\d{3,}/) do |num|
451
- num.tr("0-9", "0-9")
449
+ data.gsub!(/\d+/) do |num|
450
+ if num.length > 2
451
+ num.tr("0-9", "0-9")
452
+ else
453
+ tcy(num)
454
+ end
452
455
  end
453
456
  data
454
457
  end
@@ -475,7 +478,7 @@ class ConverterBase
475
478
  data.gsub!(FULL_INDENT_TARGET, " \\1")
476
479
  if @setting.enable_auto_indent && @inspector.inspect_indent(data)
477
480
  data.gsub!(/^([^#{Inspector::IGNORE_INDENT_CHAR}])/) do
478
- $1 == " " ? " " : " #{$1}"
481
+ $1 == " " || $1 == " " ? " " : " #{$1}"
479
482
  end
480
483
  end
481
484
  end
@@ -484,15 +487,15 @@ class ConverterBase
484
487
  # 章見出しっぽい文字列を字下げして前後に空行を入れる
485
488
  #
486
489
  def force_indent_special_chapter(line)
487
- line.sub!(/^[  \t]*([-―<<〈-])([0-90-9#{KANJI_NUM}]+)([-―>>〉-])$/) do
490
+ line.sub!(/^(?:[  \t]|[#二分アキ])*([-―<<〈-]*)([0-90-9#{KANJI_NUM}]+)([-―>>〉-]*)$/) do
488
491
  @request_insert_blank_next_line = true
489
492
  top, chapter, bottom = $1, $2, $3
490
- if "―--".include?(top)
493
+ if top != "" && "―--".include?(top)
491
494
  top = "― "
492
495
  bottom = " ―"
493
496
  end
494
497
  (blank_line?(@before_line) ? "" : "\n") + "   [#ゴシック体]" + \
495
- top + zenkaku_num_to_hankaku_num(chapter) + bottom + "[#ゴシック体終わり]"
498
+ top + hankaku_num_to_zenkaku_num(zenkaku_num_to_hankaku_num(chapter)) + bottom + "[#ゴシック体終わり]"
496
499
  end
497
500
  end
498
501
 
@@ -694,7 +697,7 @@ class ConverterBase
694
697
  #
695
698
  def auto_join_line(data)
696
699
  # 次の行の冒頭が開き記号だったら意図的な改行だと判断して連結しない
697
- data.gsub!(/、\n ([^「『((【<<〈《≪])/, "、\\1")
700
+ data.gsub!(/([^、])、\n ([^「『((【<<〈《≪…‥―])/, "\\1、\\2")
698
701
  # TODO: 文章の途中で不自然に改行しているところを連結
699
702
  # 不自然な改行の検出方法が不明
700
703
  #data.gsub!(/[^。…―-\-」』))>>]\]〉》】〕}\}0-90-9]/
@@ -809,18 +812,22 @@ class ConverterBase
809
812
  end
810
813
 
811
814
  #
812
- # 中黒(・)を並べて三点リーダーもどきにしているのを三点リーダーに変換
815
+ # 中黒(・)や句読点を並べて三点リーダーもどきにしているのを三点リーダーに変換
813
816
  #
814
817
  def convert_horizontal_ellipsis(data)
815
818
  return if !@setting.enable_convert_horizontal_ellipsis || @text_type == "subtitle"
816
- data.gsub!(/・{3,}/) do |match|
817
- pre_char, post_char = $`[-1], $'[0]
818
- if pre_char == "―" || post_char == "―"
819
- match
820
- else
821
- "…" * ((match.length / 3.0 / 2).ceil * 2)
819
+ %w(・ 。 、).each do |char|
820
+ data.gsub!(/#{char}{3,}/) do |match|
821
+ pre_char, post_char = $`[-1], $'[0]
822
+ if pre_char == "―" || post_char == "―"
823
+ match
824
+ else
825
+ "…" * ((match.length / 3.0 / 2).ceil * 2)
826
+ end
822
827
  end
823
828
  end
829
+ data.gsub!("。。", "。")
830
+ data.gsub!("、、", "、")
824
831
  end
825
832
 
826
833
  #
@@ -879,6 +886,17 @@ class ConverterBase
879
886
  end
880
887
  end
881
888
 
889
+ #
890
+ # 一定以上の連続する空行を改ページに変換
891
+ #
892
+ def convert_page_break(data)
893
+ if @setting.enable_convert_page_break
894
+ threshold = @setting.to_page_break_threshold + 1
895
+ # `改ページ' を使うと見出し付与等で混乱するので自動生成したものは区別する
896
+ data.gsub!(/\n{#{threshold},}/, "\n[#改頁]\n")
897
+ end
898
+ end
899
+
882
900
  #
883
901
  # 小説データ全体に対して施す変換
884
902
  #
@@ -896,6 +914,7 @@ class ConverterBase
896
914
  if @setting.enable_kanji_num_with_units
897
915
  convert_kanji_num_with_unit(data, @setting.kanji_num_with_units_lower_digit_zero)
898
916
  end
917
+ rebuild_kanji_num(data)
899
918
  insert_separate_space(data)
900
919
  convert_special_characters(data)
901
920
  convert_fraction_and_date(data)
@@ -985,7 +1004,6 @@ class ConverterBase
985
1004
  rebuild_illust(data)
986
1005
  rebuild_url(data)
987
1006
  rebuild_english_sentences(data)
988
- rebuild_kanji_num(data)
989
1007
  # 再構築された文章にルビがふられる可能性を考慮して、
990
1008
  # この位置でルビの処理を行う
991
1009
  narou_ruby(data) if @setting.enable_ruby
data/lib/downloader.rb CHANGED
@@ -448,6 +448,11 @@ class Downloader
448
448
  index_in_old_toc = old_subtitles.index { |item| item["index"] == index }
449
449
  next true unless index_in_old_toc
450
450
  old = old_subtitles[index_in_old_toc]
451
+ # タイトルチェック
452
+ if old["subtitle"] != latest["subtitle"]
453
+ next true
454
+ end
455
+ # 更新日チェック
451
456
  old_subupdate = old["subupdate"]
452
457
  latest_subupdate = latest["subupdate"]
453
458
  if old_subupdate == ""
@@ -509,12 +514,10 @@ class Downloader
509
514
  info["element"] = section_element
510
515
  section_file_name = "#{index} #{file_subtitle}.yaml"
511
516
  section_file_path = File.join(SECTION_SAVE_DIR_NAME, section_file_name)
512
- if different_section?(section_file_path, info)
513
- print " (更新あり)" if @force
514
- move_to_cache_dir(section_file_path)
515
- save_novel_data(section_file_path, info)
516
- save_least_one = true
517
- end
517
+ print " (更新あり)" if @force && different_section?(section_file_path, info)
518
+ move_to_cache_dir(section_file_path)
519
+ save_novel_data(section_file_path, info)
520
+ save_least_one = true
518
521
  puts
519
522
  end
520
523
  remove_cache_dir unless save_least_one
data/lib/inspector.rb CHANGED
@@ -19,8 +19,8 @@ class Inspector
19
19
 
20
20
  KLASS_TAG = { ERROR => "エラー", WARNING => "警告", INFO => "INFO" }
21
21
 
22
- IGNORE_INDENT_CHAR = " ((「『〈《≪【〔―・※["
23
- AUTO_INDENT_THRESHOLD_RATIO = 0.6 # 全行のうちこの割合以上字下げされてなければ強制字下げする
22
+ IGNORE_INDENT_CHAR = "((「『〈《≪【〔―・※[〝"
23
+ AUTO_INDENT_THRESHOLD_RATIO = 0.5 # 括弧等を除く全ての行のうちこの割合以上字下げされてなければ強制字下げする
24
24
 
25
25
  attr_writer :messages, :subtitle
26
26
 
@@ -191,11 +191,17 @@ class Inspector
191
191
  # 行頭字下げをするべきか調べる
192
192
  #
193
193
  def inspect_indent(data)
194
- dont_indent_line_count = data.scan(/^[^#{IGNORE_INDENT_CHAR}]/).count
195
- lines = data.lines
196
- # MEMO: Enumerable#size (via http://jp.rubyist.net/magazine/?0041-200Special-note#l11)
197
- line_count = (lines.respond_to?(:size) ? lines.size : lines.count)
198
- ratio = dont_indent_line_count / line_count.to_f
194
+ target_line_count = 0
195
+ dont_indent_line_count = 0
196
+ data.scan(/^[^#{IGNORE_INDENT_CHAR}]/).tap { |a|
197
+ target_line_count = a.count
198
+ }.each { |line|
199
+ head = line[0]
200
+ unless head == " " || head == " "
201
+ dont_indent_line_count += 1
202
+ end
203
+ }
204
+ ratio = dont_indent_line_count / target_line_count.to_f
199
205
  return ratio > AUTO_INDENT_THRESHOLD_RATIO
200
206
  end
201
207
  end
data/lib/novelsetting.rb CHANGED
@@ -206,5 +206,15 @@ class NovelSetting
206
206
  value: true,
207
207
  help: "中黒(・)を並べて三点リーダーもどきにしているのを三点リーダーに変換する"
208
208
  },
209
+ {
210
+ name: "enable_convert_page_break",
211
+ value: true,
212
+ help: "`to_page_break_threshold` で設定した個数以上連続する空行を改ページに変換する"
213
+ },
214
+ {
215
+ name: "to_page_break_threshold",
216
+ value: 8,
217
+ help: "ここで設定した値が `enable_convert_page_break` に反映される"
218
+ },
209
219
  ]
210
220
  end
data/lib/version.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  # Copyright 2013 whiteleaf. All rights reserved.
4
4
  #
5
5
 
6
- Version = "1.2.3"
6
+ Version = "1.2.4"
7
7
 
8
8
  cv_path = File.expand_path(File.join(File.dirname(__FILE__), "../commitversion"))
9
9
  if File.exists?(cv_path)
@@ -1 +1 @@
1
- ■□◆◇○◎●★☆\**※  ♡♥❤
1
+ ■□◆◇○◎●★☆\**※  ♡♥❤
@@ -0,0 +1,19 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ #
4
+ # 対象小説情報
5
+ # タイトル: Re:ゼロから始める異世界生活
6
+ # 作者: 鼠色猫
7
+ # URL: http://ncode.syosetu.com/n2267be/
8
+ #
9
+ converter "Re:ゼロから始める異世界生活" do
10
+ def before(io, text_type)
11
+ super
12
+ io.string.gsub!(/^[  \t]*[※  \t]+$/, "※ ※ ※")
13
+ io
14
+ end
15
+
16
+ def after(io, text_type)
17
+ super
18
+ end
19
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: narou
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - whiteleaf7
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-01 00:00:00.000000000 Z
11
+ date: 2013-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: termcolor
@@ -94,6 +94,7 @@ files:
94
94
  - preset/custom_chuki_tag.txt
95
95
  - preset/ncode.syosetu.com/n1839bd/converter.rb
96
96
  - preset/ncode.syosetu.com/n1839bd/setting.ini
97
+ - preset/ncode.syosetu.com/n2267be/converter.rb
97
98
  - preset/ncode.syosetu.com/n4259s/converter.rb
98
99
  - preset/ncode.syosetu.com/n4259s/setting.ini
99
100
  - preset/ncode.syosetu.com/n8725k/converter.rb