Class: NovelSetting
- Inherits:
-
Object
- Object
- NovelSetting
- Defined in:
- lib/novelsetting.rb
Constant Summary collapse
- INI_NAME =
"setting.ini"
- REPLACE_NAME =
"replace.txt"
- DEFAULT_SETTINGS =
[ # name: 変数名 # value: 初期値 # help: 説明(setting.ini に書き出される) { name: "enable_convert_num_to_kanji", value: true, help: "数字の漢数字変換を有効に" }, { name: "enable_kanji_num_with_units", value: true, help: "漢数字変換した場合、千・万などに変換するか" }, { name: "kanji_num_with_units_lower_digit_zero", value: 3, help: "〇(ゼロ)が最低この数字以上付いてないと千・万などをつける対象にしない" }, { name: "enable_alphabet_force_zenkaku", value: false, help: "アルファベットを強制的に全角にする。falseの場合英文は半角、それ以外は全角になる" }, { name: "enable_half_indent_bracket", value: true, help: "行頭かぎ括弧に二分アキを挿入する" }, { name: "enable_auto_indent", value: true, help: "自動行頭字下げ機能。行頭字下げが行われているかを判断し、適切に行頭字下げをする" }, { name: "enable_auto_join_in_brackets", value: true, help: "かぎ括弧内自動連結を有効に\n例)\n「~~~!\n ***?」 → 「~~~! ***?」" }, { name: "enable_inspect_invalid_openclose_brackets", value: false, help: "かぎ括弧内のとじ開きが正しくされているかどうか調査する" }, { name: "enable_auto_join_line", value: true, help: "行末が読点で終わっている部分を出来るだけ連結する" }, { name: "enable_enchant_midashi", value: true, help: "[#改ページ]直後の行に中見出しを付与する(テキストファイルを直接変換する場合のみの設定)" }, { name: "enable_author_comments", value: true, help: "作者コメントを検出するか(テキストファイルを直接変換する場合のみの設定)" }, { name: "enable_erase_introduction", value: false, help: "前書きを削除するか" }, { name: "enable_erase_postscript", value: false, help: "後書きを削除するか" }, { name: "enable_ruby", value: true, help: "ルビ処理を有効に" }, { name: "enable_illust", value: true, help: "挿絵タグを有効にする(false なら削除)" }, { name: "enable_transform_fraction", value: false, help: "○/×表記を×分の○表記に変換する。日付表記(10/23)と誤爆しやすいので注意" }, { name: "enable_transform_date", value: false, help: "日付表記(20yy/mm/dd)を任意の形式(date_formatで指定)に変換する" }, { name: "date_format", value: "%Y年%m月%d日", help: "書式は http://bit.ly/1m5e3w7 を参考" }, { name: "enable_convert_horizontal_ellipsis", value: true, help: "中黒(・)を並べて三点リーダーもどきにしているのを三点リーダーに変換する" }, { name: "enable_convert_page_break", value: false, help: "`to_page_break_threshold` で設定した個数以上連続する空行を改ページに変換する" }, { name: "to_page_break_threshold", value: 10, help: "ここで設定した値が `enable_convert_page_break` に反映される" }, { name: "enable_dakuten_font", value: true, help: "濁点フォントを使用するか。false の場合は縦中横による擬似表現を使用する" }, { name: "enable_display_end_of_book", value: true, help: "小説の最後に本を読み終わった表示をするかどうか" }, { name: "enable_add_date_to_title", value: false, help: "変換後の小説のタイトルに更新日の日付を付加するかどうか" }, { name: "title_date_format", value: "(%-m/%-d)", help: "enable_add_date_to_title で付与する日付のフォーマット。書式は http://bit.ly/1m5e3w7 を参照" }, { name: "title_date_align", value: "right", help: "enable_add_date_to_title で付与する日付の位置。left か right" }, { name: "enable_ruby_youon_to_big", value: false, help: "ルビの拗音(ぁ、ぃ等)を商業書籍のように大きくするかどうか" }, { name: "enable_pack_blank_line", value: true, help: "縦書きで読みやすいように空行を減らすかどうか" }, ]
Instance Attribute Summary collapse
-
#archive_path ⇒ Object
Returns the value of attribute archive_path.
-
#author ⇒ Object
Returns the value of attribute author.
-
#id ⇒ Object
Returns the value of attribute id.
-
#replace_pattern ⇒ Object
Returns the value of attribute replace_pattern.
-
#title ⇒ Object
Returns the value of attribute title.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(archive_path, ignore_force) ⇒ NovelSetting
constructor
A new instance of NovelSetting.
-
#load_replace_pattern ⇒ Object
replace.txt による置換定義を読み込む.
-
#load_settings ⇒ Object
小説変換時の設定値読込.
-
#set_attribute ⇒ Object
設定データ用アクセサ定義.
Constructor Details
#initialize(archive_path, ignore_force) ⇒ NovelSetting
Returns a new instance of NovelSetting.
29 30 31 32 33 34 35 |
# File 'lib/novelsetting.rb', line 29 def initialize(archive_path, ignore_force) @archive_path = File.(archive_path) @ignore_force = ignore_force load_settings set_attribute load_replace_pattern end |
Instance Attribute Details
#archive_path ⇒ Object
Returns the value of attribute archive_path.
13 14 15 |
# File 'lib/novelsetting.rb', line 13 def archive_path @archive_path end |
#author ⇒ Object
Returns the value of attribute author.
13 14 15 |
# File 'lib/novelsetting.rb', line 13 def @author end |
#id ⇒ Object
Returns the value of attribute id.
13 14 15 |
# File 'lib/novelsetting.rb', line 13 def id @id end |
#replace_pattern ⇒ Object
Returns the value of attribute replace_pattern.
13 14 15 |
# File 'lib/novelsetting.rb', line 13 def replace_pattern @replace_pattern end |
#title ⇒ Object
Returns the value of attribute title.
13 14 15 |
# File 'lib/novelsetting.rb', line 13 def title @title end |
Class Method Details
.load(target, ignore_force) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/novelsetting.rb', line 15 def self.load(target, ignore_force) archive_path = Downloader.get_novel_data_dir_by_target(target) if archive_path setting = new(archive_path, ignore_force) data = Downloader.get_data_by_target(target) setting.id = data["id"] setting. = data["author"] setting.title = data["title"] setting else nil end end |
Instance Method Details
#load_replace_pattern ⇒ Object
replace.txt による置換定義を読み込む
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/novelsetting.rb', line 96 def load_replace_pattern @replace_pattern = [] replace_txt_path = File.join(@archive_path, REPLACE_NAME) if File.exists?(replace_txt_path) open(replace_txt_path, "r:BOM|UTF-8") do |fp| fp.each do |line| line.sub!(/[\r\n]+\z/, "") next if line[0] == ";" # コメント記号 pattern = line.split("\t", 2) if pattern.length == 2 && pattern[0] @replace_pattern << pattern end end end end end |
#load_settings ⇒ Object
小説変換時の設定値読込
設定値の優先順位は
-
narou setting コマンドで設定した force.*
-
setting.ini
-
DEFAULT_SETTINGS
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/novelsetting.rb', line 45 def load_settings @setting = {} ini_path = File.join(@archive_path, INI_NAME) ini = Ini.load_file(ini_path) rescue Ini.load("") force_settings = {} # 設定値を強制的に上書きするデータの読込 unless @ignore_force Inventory.load("local_setting", :local).each { |name, value| if name =~ /^force\.(.+)$/ force_settings[$1] = value end } end DEFAULT_SETTINGS.each do |element| name, value = element[:name], element[:value] if force_settings.include?(name) @setting[name] = force_settings[name] elsif ini["global"].include?(name) @setting[name] = ini["global"][name] else @setting[name] = value end end # デフォルト設定以外を読み込む ini["global"].each do |key, value| unless @setting.include?(key) @setting[key] = value end end end |
#set_attribute ⇒ Object
設定データ用アクセサ定義
79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/novelsetting.rb', line 79 def set_attribute @setting.each_key do |key| instance_eval <<-EOS def #{key} @setting["#{key}"] end def #{key}=(value) @setting["#{key}"] = value end EOS end end |