narou 1.1.0.rc2 → 1.1.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.
- checksums.yaml +7 -0
- data/ChangeLog.md +6 -1
- data/README.md +6 -1
- data/lib/converterbase.rb +42 -50
- data/lib/device/library/windows.rb +8 -7
- data/lib/inspector.rb +4 -4
- data/lib/novelsetting.rb +3 -3
- data/lib/version.rb +1 -1
- data/preset/custom_chuki_tag.txt +3 -1
- data/preset/vertical_font.css +8 -0
- data/preset/xhtml_nav.vm +2 -1
- data/template/novel.txt.erb +2 -5
- metadata +18 -12
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 12100ac19287f851bc6d0f2092226f0e2d41ca24
|
4
|
+
data.tar.gz: ac7fa17436475c5c3c4d36b981d8a0b0db8b7237
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e7dd9bc8f09118f5dc5ebd0a7cad57343c9539d6f14af2bc201c71aa264c6b44bccf24cb1c54aed56159af001f3a649ef53739bebaefa174af546bafa238b716
|
7
|
+
data.tar.gz: 0c48561bb416ae0396581b2ed84c7f72e839ef26e67c906fd4df1a05ea3ede7cc410a6c8fefb3a174bdc584b5c484acdd17b7d0cb2df0e0c214f98a22d5c199a
|
data/ChangeLog.md
CHANGED
@@ -1,13 +1,18 @@
|
|
1
1
|
|
2
2
|
更新履歴 - ChangeLog
|
3
3
|
--------------------
|
4
|
+
2013/03/07 : **1.1.0**
|
5
|
+
* Bug Fix
|
6
|
+
- xhtml_nav.vm の</ol></li>が過剰付与だったのを修正
|
7
|
+
- |《るび》 な場合、ルビ化を無効にする(なろうの仕様に追随)
|
8
|
+
* 追加機能もしくは仕様変更
|
9
|
+
- Ruby2.0.0対応
|
4
10
|
|
5
11
|
2013/03/07 : **1.1.0.rc2**
|
6
12
|
* Bug Fix
|
7
13
|
- `update` コマンドに存在しない小説を指定した場合にエラーが出るバグを修正
|
8
14
|
- `convert -o` オプションが正常に動いていなかったバグを修正
|
9
15
|
- テキストファイル変換時のバグ修正
|
10
|
-
|
11
16
|
* 追加機能もしくは仕様変更
|
12
17
|
- `update` コマンドで全ての小説を更新する場合、 `convert.no-open` の設定にかかわらず
|
13
18
|
保存フォルダは開かないようにした
|
data/README.md
CHANGED
@@ -16,13 +16,18 @@ Narou.rb ― 小説家になろうダウンローダ&縦書用整形スクリ
|
|
16
16
|
|
17
17
|
更新履歴 - ChangeLog
|
18
18
|
--------------------
|
19
|
+
2013/03/07 : **1.1.0**
|
20
|
+
* Bug Fix
|
21
|
+
- xhtml_nav.vm の</ol></li>が過剰付与だったのを修正
|
22
|
+
- |《るび》 な場合、ルビ化を無効にする(なろうの仕様に追随)
|
23
|
+
* 追加機能もしくは仕様変更
|
24
|
+
- Ruby2.0.0対応
|
19
25
|
|
20
26
|
2013/03/07 : **1.1.0.rc2**
|
21
27
|
* Bug Fix
|
22
28
|
- `update` コマンドに存在しない小説を指定した場合にエラーが出るバグを修正
|
23
29
|
- `convert -o` オプションが正常に動いていなかったバグを修正
|
24
30
|
- テキストファイル変換時のバグ修正
|
25
|
-
|
26
31
|
* 追加機能もしくは仕様変更
|
27
32
|
- `update` コマンドで全ての小説を更新する場合、 `convert.no-open` の設定にかかわらず
|
28
33
|
保存フォルダは開かないようにした
|
data/lib/converterbase.rb
CHANGED
@@ -398,7 +398,7 @@ class ConverterBase
|
|
398
398
|
HALF_INDENT_TARGET = /^[ \t]*([「『((【〈《≪])/
|
399
399
|
FULL_INDENT_TARGET = /^[ \t]*(――)/
|
400
400
|
#
|
401
|
-
#
|
401
|
+
# 行頭かぎ括弧(等)に二分アキを追加する
|
402
402
|
#
|
403
403
|
# 「や(などの前にカスタム注記([#二分アキ])を追加し、半文字分字下げする(二分アキ)。
|
404
404
|
# kindle paperwhite で鍵括弧のインデントがおかしいことへの対応
|
@@ -577,7 +577,7 @@ class ConverterBase
|
|
577
577
|
|
578
578
|
BRACKETS = [%w(「 」), %w(『 』)]
|
579
579
|
|
580
|
-
#
|
580
|
+
# ネストに対応したかぎ括弧の正規表現
|
581
581
|
OPENCLOSE_REGEXPS = BRACKETS.map { |bracket|
|
582
582
|
bo, bc = bracket
|
583
583
|
/(?<oc>#{bo}[^#{bo+bc}]*(?:\g<oc>[^#{bo+bc}]*)*#{bc})/m
|
@@ -599,7 +599,7 @@ class ConverterBase
|
|
599
599
|
end
|
600
600
|
|
601
601
|
#
|
602
|
-
#
|
602
|
+
# かぎ括弧内自動連結
|
603
603
|
#
|
604
604
|
def auto_join_in_brackets(data)
|
605
605
|
if !@setting.enable_auto_join_in_brackets && !@setting.enable_inspect_invalid_openclose_brackets
|
@@ -615,10 +615,10 @@ class ConverterBase
|
|
615
615
|
else
|
616
616
|
stack[j] = match
|
617
617
|
end
|
618
|
-
"
|
618
|
+
"[#かぎ括弧=#{j}]"
|
619
619
|
end
|
620
620
|
if @setting.enable_inspect_invalid_openclose_brackets
|
621
|
-
#
|
621
|
+
# 正しく閉じてないかぎ括弧だけが data に残ってる
|
622
622
|
@inspector.inspect_invalid_openclose_brackets(data, BRACKETS[i], stack)
|
623
623
|
end
|
624
624
|
data.replace(ConverterBase.rebuild_brackets(data, stack))
|
@@ -626,7 +626,7 @@ class ConverterBase
|
|
626
626
|
end
|
627
627
|
|
628
628
|
def self.rebuild_brackets(data, stack)
|
629
|
-
data.gsub(
|
629
|
+
data.gsub(/[#かぎ括弧=(\d+)]/) do
|
630
630
|
stack[$1.to_i]
|
631
631
|
end
|
632
632
|
end
|
@@ -642,22 +642,6 @@ class ConverterBase
|
|
642
642
|
#data.gsub!(/[^。…―-\-」』))>>]\]〉》】〕}\}0-90-9]/
|
643
643
|
end
|
644
644
|
|
645
|
-
def object_of_ruby?(char)
|
646
|
-
char =~ /[一-龠A-Za-zA-Za-z]/
|
647
|
-
end
|
648
|
-
|
649
|
-
def sesame(str, ten)
|
650
|
-
if str.include?("|")
|
651
|
-
str.sub("|", "[#傍点]") + "[#傍点終わり]"
|
652
|
-
else
|
653
|
-
str.insert(-(ten.length + 1), "[#傍点]") + "[#傍点終わり]"
|
654
|
-
end
|
655
|
-
end
|
656
|
-
|
657
|
-
def replace_tatesen(str)
|
658
|
-
str.gsub("|", "※[#縦線]")
|
659
|
-
end
|
660
|
-
|
661
645
|
#
|
662
646
|
# 小説家になろうのルビ対策
|
663
647
|
#
|
@@ -671,44 +655,52 @@ class ConverterBase
|
|
671
655
|
last_i = 0
|
672
656
|
ruby_stack = {}
|
673
657
|
data.gsub!(/(.+?)≪(.+?)≫/).with_index do |match, i|
|
674
|
-
|
675
|
-
ruby_str = case
|
676
|
-
when m2 =~ /^・+$/
|
677
|
-
# ルビが・だけの場合、傍点と判断
|
678
|
-
sesame(m1, m2)
|
679
|
-
when m1.include?("|"), object_of_ruby?(m1[-1])
|
680
|
-
"#{m1}《#{m2}》"
|
681
|
-
else
|
682
|
-
replace_tatesen(match)
|
683
|
-
end
|
658
|
+
ruby_str = to_ruby(match, $1, $2, ["≪", "≫"])
|
684
659
|
last_i = i
|
685
660
|
ruby_stack[i] = ruby_str
|
686
661
|
"[#ルビ=#{i}]"
|
687
662
|
end
|
688
663
|
# ()なルビの対処
|
689
664
|
data.gsub!(/(.+?)(([ぁ-んァ-ヴーゞ・A-Za-zA-Za-z]{,20}))/).with_index(last_i + 1) do |match, i|
|
690
|
-
|
691
|
-
last_char = m1[-1]
|
692
|
-
ruby_str = case
|
693
|
-
when last_char == "|"
|
694
|
-
# (の直前に|がある場合ルビ化は抑制される
|
695
|
-
"#{m1[0...-1]}(#{m2})"
|
696
|
-
when m2 =~ /^・+$/
|
697
|
-
# ルビが・だけの場合、傍点と判断
|
698
|
-
sesame(m1, m2)
|
699
|
-
when m1.include?("|"), object_of_ruby?(last_char)
|
700
|
-
"#{m1}《#{m2}》"
|
701
|
-
else
|
702
|
-
replace_tatesen(match)
|
703
|
-
end
|
665
|
+
ruby_str = to_ruby(match, $1, $2, ["(", ")"])
|
704
666
|
ruby_stack[i] = ruby_str
|
705
667
|
"[#ルビ=#{i}]"
|
706
668
|
end
|
707
669
|
data.replace(replace_tatesen(data))
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
670
|
+
data.gsub!(/[#ルビ=(\d+)]/) do
|
671
|
+
ruby_stack[$1.to_i]
|
672
|
+
end
|
673
|
+
end
|
674
|
+
|
675
|
+
def object_of_ruby?(char)
|
676
|
+
char =~ /[一-龠A-Za-zA-Za-z]/
|
677
|
+
end
|
678
|
+
|
679
|
+
def sesame(str, ten)
|
680
|
+
if str.include?("|")
|
681
|
+
str.sub("|", "[#傍点]") + "[#傍点終わり]"
|
682
|
+
else
|
683
|
+
str.insert(-(ten.length + 1), "[#傍点]") + "[#傍点終わり]"
|
684
|
+
end
|
685
|
+
end
|
686
|
+
|
687
|
+
def replace_tatesen(str)
|
688
|
+
str.gsub("|", "※[#縦線]")
|
689
|
+
end
|
690
|
+
|
691
|
+
def to_ruby(match, m1, m2, openclose_symbols)
|
692
|
+
last_char = m1[-1]
|
693
|
+
case
|
694
|
+
when last_char == "|"
|
695
|
+
# 直前に|がある場合ルビ化は抑制される
|
696
|
+
"#{m1[0...-1]}#{openclose_symbols[0]}#{m2}#{openclose_symbols[1]}"
|
697
|
+
when m2 =~ /^・+$/
|
698
|
+
# ルビが・だけの場合、傍点と判断
|
699
|
+
sesame(m1, m2)
|
700
|
+
when m1.include?("|"), object_of_ruby?(last_char)
|
701
|
+
"#{m1}《#{m2}》"
|
702
|
+
else
|
703
|
+
replace_tatesen(match)
|
712
704
|
end
|
713
705
|
end
|
714
706
|
|
@@ -3,17 +3,18 @@
|
|
3
3
|
# Copyright 2013 whiteleaf. All rights reserved.
|
4
4
|
#
|
5
5
|
|
6
|
-
require "
|
6
|
+
require "fiddle"
|
7
7
|
require "win32ole"
|
8
8
|
|
9
9
|
module WinAPI
|
10
|
+
include Fiddle
|
10
11
|
class InvalidOS < StandardError; end
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
Handle = RUBY_VERSION >= "2.0.0" ? Fiddle::Handle : DL::Handle
|
13
|
+
|
14
|
+
def self.GetLogicalDriveStrings(buf_size, buffer)
|
15
|
+
@@get_logical_drive_strings ||= Function.new(Handle.new("kernel32")["GetLogicalDriveStrings"],
|
16
|
+
[TYPE_LONG, TYPE_VOIDP], TYPE_LONG)
|
17
|
+
@@get_logical_drive_strings.call(buf_size, buffer)
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
data/lib/inspector.rb
CHANGED
@@ -103,7 +103,7 @@ class Inspector
|
|
103
103
|
end
|
104
104
|
|
105
105
|
#
|
106
|
-
#
|
106
|
+
# 連結したかぎ括弧が正常かどうか
|
107
107
|
#
|
108
108
|
def validate_joined_inner_brackets(raw_strings, joined_strings, brackets)
|
109
109
|
error_result = false
|
@@ -117,7 +117,7 @@ class Inspector
|
|
117
117
|
# 連結した文章があまりにも長い場合、特殊な用途で使われている可能性がある
|
118
118
|
when joined_strings.length >= LINE_LENGTH_THRESHOLD
|
119
119
|
warning("連結結果が長過ぎます。連結を中止しました。" +
|
120
|
-
"特殊な用途(手紙形式)
|
120
|
+
"特殊な用途(手紙形式)等でかぎ括弧が使われている可能性があります。\n" +
|
121
121
|
omit_message(raw_strings))
|
122
122
|
error_result = true
|
123
123
|
end
|
@@ -125,7 +125,7 @@ class Inspector
|
|
125
125
|
end
|
126
126
|
|
127
127
|
#
|
128
|
-
#
|
128
|
+
# かぎ括弧のとじ開きの異常部分を調査
|
129
129
|
#
|
130
130
|
def inspect_invalid_openclose_brackets(data, brackets, stack)
|
131
131
|
brackets.each do |bracket|
|
@@ -135,7 +135,7 @@ class Inspector
|
|
135
135
|
match_after = $'.dup
|
136
136
|
before = ConverterBase.rebuild_brackets(match_before, stack)
|
137
137
|
after = ConverterBase.rebuild_brackets(match_after, stack)
|
138
|
-
error("
|
138
|
+
error("かぎ括弧(#{bracket})が正しく閉じていません。\n" +
|
139
139
|
omit_message((before[-15..-1] || before) + bracket + after))
|
140
140
|
buffer = match_before
|
141
141
|
end
|
data/lib/novelsetting.rb
CHANGED
@@ -134,7 +134,7 @@ class NovelSetting
|
|
134
134
|
{
|
135
135
|
name: "enable_half_indent_bracket",
|
136
136
|
value: true,
|
137
|
-
help: "
|
137
|
+
help: "行頭かぎ括弧に二分アキを挿入する"
|
138
138
|
},
|
139
139
|
{
|
140
140
|
name: "enable_auto_indent",
|
@@ -144,12 +144,12 @@ class NovelSetting
|
|
144
144
|
{
|
145
145
|
name: "enable_auto_join_in_brackets",
|
146
146
|
value: true,
|
147
|
-
help: "
|
147
|
+
help: "かぎ括弧内自動連結を有効に\n例)\n「~~~!\n ***?」 → 「~~~! ***?」"
|
148
148
|
},
|
149
149
|
{
|
150
150
|
name: "enable_inspect_invalid_openclose_brackets",
|
151
151
|
value: true,
|
152
|
-
help: "
|
152
|
+
help: "かぎ括弧内のとじ開きが正しくされているかどうか調査する"
|
153
153
|
},
|
154
154
|
{
|
155
155
|
name: "enable_auto_join_line",
|
data/lib/version.rb
CHANGED
data/preset/custom_chuki_tag.txt
CHANGED
data/preset/vertical_font.css
CHANGED
data/preset/xhtml_nav.vm
CHANGED
@@ -97,7 +97,8 @@ li a {text-decoration:none; border-bottom-width:1px; border-bottom-style:solid;
|
|
97
97
|
#end
|
98
98
|
#end
|
99
99
|
#if (${navNest})
|
100
|
-
#
|
100
|
+
#set ($tag_close_count=$nest_level - 1)
|
101
|
+
#foreach (${n} in [${tag_close_count}..0])
|
101
102
|
</li>
|
102
103
|
</ol>
|
103
104
|
#end
|
data/template/novel.txt.erb
CHANGED
@@ -13,11 +13,8 @@
|
|
13
13
|
[#改ページ]
|
14
14
|
<% if section["chapter"] != "" -%>
|
15
15
|
[#ページの左右中央]
|
16
|
-
|
17
|
-
|
18
|
-
[#ここから大見出し]<%= section["chapter"] %>[#ここで大見出し終わり]
|
19
|
-
|
20
|
-
|
16
|
+
[#ここから柱]<%= toc["title"] %>[#ここで柱終わり]
|
17
|
+
[#ここから大見出し] <%= section["chapter"] %>[#ここで大見出し終わり]
|
21
18
|
[#改ページ]
|
22
19
|
<% end -%>
|
23
20
|
[#3字下げ][#ここから中見出し]<%= section["subtitle"].rstrip %>[#ここで中見出し終わり]
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: narou
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.0
|
5
|
-
prerelease: 6
|
4
|
+
version: 1.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- whiteleaf7
|
@@ -92,29 +91,36 @@ files:
|
|
92
91
|
- commitversion
|
93
92
|
homepage: http://whiteleaf.hatenablog.com/
|
94
93
|
licenses: []
|
95
|
-
|
96
|
-
|
97
|
-
|
94
|
+
metadata: {}
|
95
|
+
post_install_message: |
|
96
|
+
*******************************************************************************
|
97
|
+
|
98
|
+
narou コマンドのインストール or アップデートが完了しました。
|
99
|
+
詳しい説明は `narou help' コマンドをご覧下さい。
|
100
|
+
|
101
|
+
NOTICE
|
102
|
+
初めてこのアプリケーションを使う場合、小説管理用のフォルダを初期化する必要があります。
|
103
|
+
任意のフォルダで `narou init' を実行して下さい。
|
104
|
+
|
105
|
+
*******************************************************************************
|
98
106
|
rdoc_options: []
|
99
107
|
require_paths:
|
100
108
|
- lib
|
101
109
|
required_ruby_version: !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
110
|
requirements:
|
104
|
-
- -
|
111
|
+
- - '>='
|
105
112
|
- !ruby/object:Gem::Version
|
106
113
|
version: 1.9.3
|
107
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
115
|
requirements:
|
110
|
-
- -
|
116
|
+
- - '>='
|
111
117
|
- !ruby/object:Gem::Version
|
112
|
-
version:
|
118
|
+
version: '0'
|
113
119
|
requirements: []
|
114
120
|
rubyforge_project:
|
115
|
-
rubygems_version:
|
121
|
+
rubygems_version: 2.0.0
|
116
122
|
signing_key:
|
117
|
-
specification_version:
|
123
|
+
specification_version: 4
|
118
124
|
summary: Narou.rb ― 小説家になろうダウンローダ&縦書用整形スクリプト
|
119
125
|
test_files:
|
120
126
|
- test/data/test.ini
|