narou 1.6.4 → 1.7.0
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.
Potentially problematic release.
This version of narou might be problematic. Click here for more details.
- checksums.yaml +13 -5
- data/.gitignore +1 -0
- data/.rubocop.yml +419 -0
- data/ChangeLog.md +23 -0
- data/README.md +24 -123
- data/Rakefile +1 -1
- data/bin/narou +0 -0
- data/lib/color.rb +1 -8
- data/lib/command/backup.rb +1 -1
- data/lib/command/diff.rb +5 -5
- data/lib/command/download.rb +2 -2
- data/lib/command/freeze.rb +1 -9
- data/lib/command/init.rb +4 -4
- data/lib/command/list.rb +49 -20
- data/lib/command/mail.rb +4 -4
- data/lib/command/remove.rb +2 -3
- data/lib/command/send.rb +3 -3
- data/lib/command/tag.rb +6 -6
- data/lib/command/update.rb +2 -2
- data/lib/commandbase.rb +4 -4
- data/lib/commandline.rb +1 -1
- data/lib/converterbase.rb +27 -17
- data/lib/database.rb +1 -1
- data/lib/device.rb +1 -1
- data/lib/device/ibooks.rb +2 -2
- data/lib/device/ibunko.rb +2 -2
- data/lib/diffviewer.rb +7 -8
- data/lib/downloader.rb +22 -24
- data/lib/helper.rb +2 -2
- data/lib/illustration.rb +1 -1
- data/lib/ini.rb +0 -1
- data/lib/inspector.rb +2 -2
- data/lib/inventory.rb +1 -1
- data/lib/loadconverter.rb +1 -1
- data/lib/logger.rb +2 -14
- data/lib/mailer.rb +2 -2
- data/lib/narou.rb +5 -5
- data/lib/novelconverter.rb +4 -4
- data/lib/novelsetting.rb +1 -1
- data/lib/sitesetting.rb +1 -1
- data/lib/template.rb +2 -2
- data/lib/version.rb +2 -1
- data/narou.bat +0 -0
- data/narou.gemspec +15 -126
- data/narou.rb +1 -1
- data/preset/ncode.syosetu.com/n4259s/converter.rb +1 -1
- data/preset/ncode.syosetu.com/n8725k/converter.rb +1 -1
- data/spec/convert_spec.rb +6 -3
- data/spec/data/convert_test/auto_indent/correct_test_auto_indent.txt +3 -0
- data/spec/data/convert_test/auto_indent/test_auto_indent.txt +4 -0
- data/spec/data/convert_test/auto_join_bracket/correct_test_auto_join_bracket.txt +12 -1
- data/spec/data/convert_test/auto_join_bracket/test_auto_join_bracket.txt +12 -0
- data/spec/data/convert_test/auto_join_line/test_auto_join_line.txt +0 -0
- data/spec/data/convert_test/convert_page_break/test_convert_page_break.txt +0 -0
- data/spec/data/convert_test/english/correct_test_english.txt +26 -0
- data/spec/data/convert_test/english/test_english.txt +27 -0
- data/spec/data/convert_test/force_indent_special_chapter/test_force_indent_special_chapter.txt +0 -0
- data/spec/data/convert_test/horizontal_ellipsis/test_horizontal_ellipsis.txt +0 -0
- data/spec/data/convert_test/kanji_num/test_kanji_num.txt +0 -0
- data/spec/data/convert_test/nonokagi/test_nonokagi.txt +0 -0
- data/spec/data/convert_test/replace/correct_test_replace.txt +1 -1
- data/spec/data/convert_test/replace/replace.txt +0 -0
- data/spec/data/convert_test/replace/test_replace.txt +0 -0
- data/spec/data/convert_test/ruby/correct_test_ruby.txt +3 -1
- data/spec/data/convert_test/ruby/test_ruby.txt +3 -0
- data/spec/data/convert_test/ruby_youon/test_ruby_youon.txt +0 -0
- data/spec/data/convert_test/sesame/test_sesame.txt +0 -0
- data/spec/data/convert_test/to_odd_leader/test_to_odd_leader.txt +0 -0
- data/spec/generator/convert_spec_gen.rb +2 -3
- data/spec/spec_helper.rb +2 -2
- metadata +29 -162
- data/lib/ruby.rb +0 -152
data/lib/ruby.rb
DELETED
@@ -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
|