narou 1.6.4 → 1.7.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 (72) hide show
  1. checksums.yaml +13 -5
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +419 -0
  4. data/ChangeLog.md +23 -0
  5. data/README.md +24 -123
  6. data/Rakefile +1 -1
  7. data/bin/narou +0 -0
  8. data/lib/color.rb +1 -8
  9. data/lib/command/backup.rb +1 -1
  10. data/lib/command/diff.rb +5 -5
  11. data/lib/command/download.rb +2 -2
  12. data/lib/command/freeze.rb +1 -9
  13. data/lib/command/init.rb +4 -4
  14. data/lib/command/list.rb +49 -20
  15. data/lib/command/mail.rb +4 -4
  16. data/lib/command/remove.rb +2 -3
  17. data/lib/command/send.rb +3 -3
  18. data/lib/command/tag.rb +6 -6
  19. data/lib/command/update.rb +2 -2
  20. data/lib/commandbase.rb +4 -4
  21. data/lib/commandline.rb +1 -1
  22. data/lib/converterbase.rb +27 -17
  23. data/lib/database.rb +1 -1
  24. data/lib/device.rb +1 -1
  25. data/lib/device/ibooks.rb +2 -2
  26. data/lib/device/ibunko.rb +2 -2
  27. data/lib/diffviewer.rb +7 -8
  28. data/lib/downloader.rb +22 -24
  29. data/lib/helper.rb +2 -2
  30. data/lib/illustration.rb +1 -1
  31. data/lib/ini.rb +0 -1
  32. data/lib/inspector.rb +2 -2
  33. data/lib/inventory.rb +1 -1
  34. data/lib/loadconverter.rb +1 -1
  35. data/lib/logger.rb +2 -14
  36. data/lib/mailer.rb +2 -2
  37. data/lib/narou.rb +5 -5
  38. data/lib/novelconverter.rb +4 -4
  39. data/lib/novelsetting.rb +1 -1
  40. data/lib/sitesetting.rb +1 -1
  41. data/lib/template.rb +2 -2
  42. data/lib/version.rb +2 -1
  43. data/narou.bat +0 -0
  44. data/narou.gemspec +15 -126
  45. data/narou.rb +1 -1
  46. data/preset/ncode.syosetu.com/n4259s/converter.rb +1 -1
  47. data/preset/ncode.syosetu.com/n8725k/converter.rb +1 -1
  48. data/spec/convert_spec.rb +6 -3
  49. data/spec/data/convert_test/auto_indent/correct_test_auto_indent.txt +3 -0
  50. data/spec/data/convert_test/auto_indent/test_auto_indent.txt +4 -0
  51. data/spec/data/convert_test/auto_join_bracket/correct_test_auto_join_bracket.txt +12 -1
  52. data/spec/data/convert_test/auto_join_bracket/test_auto_join_bracket.txt +12 -0
  53. data/spec/data/convert_test/auto_join_line/test_auto_join_line.txt +0 -0
  54. data/spec/data/convert_test/convert_page_break/test_convert_page_break.txt +0 -0
  55. data/spec/data/convert_test/english/correct_test_english.txt +26 -0
  56. data/spec/data/convert_test/english/test_english.txt +27 -0
  57. data/spec/data/convert_test/force_indent_special_chapter/test_force_indent_special_chapter.txt +0 -0
  58. data/spec/data/convert_test/horizontal_ellipsis/test_horizontal_ellipsis.txt +0 -0
  59. data/spec/data/convert_test/kanji_num/test_kanji_num.txt +0 -0
  60. data/spec/data/convert_test/nonokagi/test_nonokagi.txt +0 -0
  61. data/spec/data/convert_test/replace/correct_test_replace.txt +1 -1
  62. data/spec/data/convert_test/replace/replace.txt +0 -0
  63. data/spec/data/convert_test/replace/test_replace.txt +0 -0
  64. data/spec/data/convert_test/ruby/correct_test_ruby.txt +3 -1
  65. data/spec/data/convert_test/ruby/test_ruby.txt +3 -0
  66. data/spec/data/convert_test/ruby_youon/test_ruby_youon.txt +0 -0
  67. data/spec/data/convert_test/sesame/test_sesame.txt +0 -0
  68. data/spec/data/convert_test/to_odd_leader/test_to_odd_leader.txt +0 -0
  69. data/spec/generator/convert_spec_gen.rb +2 -3
  70. data/spec/spec_helper.rb +2 -2
  71. metadata +29 -162
  72. data/lib/ruby.rb +0 -152
@@ -1,152 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright 2012 whiteleaf. All rights reserved.
4
- #
5
-
6
- # ルビふりスクリプト
7
-
8
- require_relative "mecab"
9
-
10
- =begin
11
- 訂正画面イメージ
12
- ┌─────────────────────────────────┐
13
- │...シャルティアの|妾である吸血鬼の花嫁《ヴァンパイア・ブライド》 │
14
- │ ^ │
15
- │ルビ開始位置の確認 (Yes/Skip/Forward*/Backward*):ffff │
16
- └─────────────────────────────────┘
17
-
18
- ┌─────────────────────────────────┐
19
- │...シャルティアの妾である|吸血鬼の花嫁《ヴァンパイア・ブライド》 │
20
- │ ^ │
21
- │ルビ開始位置の確認 (Yes/Skip/Forward*/Backward*):y │
22
- └─────────────────────────────────┘
23
- =end
24
-
25
- def make_text(prev_text, name, ruby)
26
- "#{prev_text}|#{name}《#{ruby}》"
27
- end
28
-
29
- def output_input_message
30
- print "ルビ開始位置の確認 (Yes/Skip/Forward*/Backward*): "
31
- end
32
-
33
- def output_interface(prev_text, name, ruby)
34
- is_omit = prev_text.length > 7
35
- omit_text = (is_omit ? "‥‥" : "") + prev_text[(is_omit ? -7 : 0)..-1]
36
- puts make_text(omit_text, name, ruby)
37
- puts " " * omit_text.length + "^"
38
- output_input_message
39
- end
40
-
41
- def wait_user_input(prev_text, name, ruby)
42
- output_interface(prev_text, name, ruby)
43
- while input = STDIN.gets
44
- case input[0].downcase
45
- when "y"
46
- return make_text(prev_text, name, ruby)
47
- when "s"
48
- return nil
49
- when "f"
50
- count = input.match(/(f+)/i)[1].length
51
- prev_text += name[0...count]
52
- _name = name[count..-1]
53
- name = (_name ? _name : "")
54
- output_interface(prev_text, name, ruby)
55
- when "b"
56
- count = input.match(/(b+)/i)[1].length
57
- _prev_text = prev_text[-count..-1]
58
- name = (_prev_text ? _prev_text : prev_text) + name
59
- prev_text = (_prev_text ? prev_text[0...-count] : "")
60
- output_interface(prev_text, name, ruby)
61
- else
62
- output_input_message
63
- end
64
- end
65
- end
66
-
67
- #
68
- # ルビっぽい文字列かどうか判定
69
- #
70
- # ひらがな、カタカナ、アルファベット、数字、・ のみで構成された文字列かどうか
71
- # 漢数字が含まれていた場合、全角アラビア数字に直す
72
- #
73
- def is_ruby_strings?(str)
74
- str =~ /^[ぁ-んァ-ヴーゞ・A-Za-zA-Za-z]+$/
75
- end
76
-
77
- Mecab = MecabLib::Mecab.new("")
78
-
79
- def extract_ruby(line)
80
- line.gsub(/(.+?)[<<〈((](.+?)[>>〉))]/) do
81
- match_name_message = $1
82
- match_ruby = $2
83
- match_all = $&
84
- next match_all unless is_ruby_strings?(match_ruby)
85
- node = Mecab.sparse_tonode(match_name_message.force_encoding("Windows-31J").encode("UTF-8"))
86
- nodes = []
87
- while node.hasNext
88
- node = node.next
89
- break if node.surface == "EOS"
90
- nodes << {
91
- surface: node.surface.force_encoding("Windows-31J").encode("UTF-8")),
92
- pos: node.pos.force_encoding("Windows-31J").encode("UTF-8"),
93
- root: node.root.force_encoding("Windows-31J").encode("UTF-8"),
94
- reading: node.reading.force_encoding("Windows-31J").encode("UTF-8"),
95
- pronunciation: node.pronunciation.force_encoding("Windows-31J").encode("UTF-8")
96
- }
97
- end
98
- name = ""
99
- prev_text = ""
100
- is_before_word_alphabet = false
101
- detected = false
102
- nodes.reverse.each do |node|
103
- unless detected
104
- sujou = node[:pos].split(",")
105
- if ["接頭詞", "名詞", "助詞", "助動詞", "形容詞"].include?(sujou[0])
106
- if (sujou[0] == "助詞" && sujou[1] != "連体化") ||
107
- (sujou[0] == "助動詞" && sujou[5] != "体言接続")
108
- detected = true
109
- else
110
- if node[:surface] =~ /^[a-zA-Z]+$/
111
- if is_before_word_alphabet
112
- name = " " + name
113
- end
114
- is_before_word_alphabet = true
115
- else
116
- is_before_word_alphabet = false
117
- end
118
- name = node[:surface] + name
119
- next
120
- end
121
- else
122
- detected = true
123
- end
124
- end
125
- prev_text = node[:surface] + prev_text
126
- end
127
- result = wait_user_input(prev_text, name, match_ruby)
128
- result ? result : match_all
129
- end
130
- end
131
-
132
- if ARGV.count == 0
133
- puts "ファイル名を指定して下さい"
134
- exit
135
- end
136
-
137
- ARGV.each do |fname|
138
- puts "#{fname} の処理を開始します"
139
- puts "-" * 70
140
- open(fname) do |read_fp|
141
- open("[ルビ変換]#{fname}", "w") do |write_fp|
142
- read_fp.each do |line|
143
- result = extract_ruby(line)
144
- write_fp.puts(result)
145
- end
146
- end
147
- end
148
- puts "-" * 30
149
- puts "#{fname} の変換が完了しました。"
150
- end
151
-
152
- Mecab.destroy