lib/novelsetting.rb in narou-2.5.2 vs lib/novelsetting.rb in narou-2.6.0

- old
+ new

@@ -3,13 +3,15 @@ # Copyright 2013 whiteleaf. All rights reserved. # require "fileutils" require_relative "ini" +require_relative "downloader" class NovelSetting INI_NAME = "setting.ini" + INI_ERB_BINARY_VERSION = 1.2 REPLACE_NAME = "replace.txt" attr_accessor :id, :author, :title, :archive_path, :replace_pattern, :settings # @@ -121,18 +123,23 @@ # def self.load_default_settings load_settings_by_pattern("default") end + def get_value_by_original(name) + index = ORIGINAL_SETTINGS_KEY_INDEXES[name] + index ? ORIGINAL_SETTINGS[index] : nil + end + # # 設定を保存 # def save_settings - ini = Ini.new - ini.filename = File.join(@archive_path, INI_NAME) - ini.object["global"].merge!(@settings) - ini.save + original_settings = NovelSetting.get_original_settings + default_settings = NovelSetting.load_default_settings + novel_setting = self + Template.write(INI_NAME, @archive_path, binding, INI_ERB_BINARY_VERSION, Template::OVERWRITE) end def type_eq_value(type, value) type_of_value = Helper.type_of_value(value) case type @@ -145,14 +152,13 @@ # # 指定された設定の型チェック # def check_value_of_type(name, value) - index = ORIGINAL_SETTINGS.index { |v| v[:name] == name } - return unless index - original = ORIGINAL_SETTINGS[index] - if original && !type_eq_value(original[:type], value) + original = get_value_by_original(name) + return unless original + unless type_eq_value(original[:type], value) raise Helper::InvalidVariableType, original[:type] end end # @@ -205,26 +211,36 @@ def save_replace_pattern replace_txt_path = File.join(@archive_path, REPLACE_NAME) Narou.write_replace_txt(replace_txt_path, @replace_pattern) end + def self.get_original_settings + ORIGINAL_SETTINGS + end + ORIGINAL_SETTINGS = [ # name: 変数名 # type: 変数の型 # value: 初期値 # help: 説明(setting.ini に書き出される) { + name: "enable_inspect", + type: :boolean, + value: false, + help: "小説に対する各種調査を実行する。結果を表示するには narou inspect コマンドを使用" + }, + { name: "enable_convert_num_to_kanji", type: :boolean, value: true, - help: "数字の漢数字変換を有効に" + help: "数字の漢数字変換を有効にする" }, { name: "enable_kanji_num_with_units", type: :boolean, value: true, - help: "漢数字変換した場合、千・万などに変換するか" + help: "漢数字変換した場合、千・万などに変換する" }, { name: "kanji_num_with_units_lower_digit_zero", type: :integer, value: 3, @@ -244,31 +260,25 @@ }, { name: "enable_auto_indent", type: :boolean, value: true, - help: "自動行頭字下げ機能。行頭字下げが行われているかを判断し、適切に行頭字下げをする" + help: "自動行頭字下げ機能。行頭字下げが行われているかを判断し、適切に行頭字下げをするか" }, { name: "enable_force_indent", type: :boolean, value: false, - help: "行頭字下げを必ず行う。enable_auto_indent の設定は無視される" + help: "行頭字下げを必ず行うか。enable_auto_indent の設定は無視される" }, { name: "enable_auto_join_in_brackets", type: :boolean, value: true, - help: "かぎ括弧内自動連結を有効に\n例)\n「~~~!\n ***?」 → 「~~~! ***?」" + help: "かぎ括弧内自動連結を有効にする\n例)\n「~~~!\n ***?」 → 「~~~! ***?」" }, { - name: "enable_inspect_invalid_openclose_brackets", - type: :boolean, - value: false, - help: "かぎ括弧内のとじ開きが正しくされているかどうか調査する" - }, - { name: "enable_auto_join_line", type: :boolean, value: true, help: "行末が読点で終わっている部分を出来るだけ連結する" }, @@ -280,29 +290,29 @@ }, { name: "enable_author_comments", type: :boolean, value: true, - help: "作者コメントを検出するか(テキストファイルを直接変換する場合のみの設定)" + help: "作者コメントを検出する(テキストファイルを直接変換する場合のみの設定)" }, { name: "enable_erase_introduction", type: :boolean, value: false, - help: "前書きを削除するか" + help: "前書きを削除する" }, { name: "enable_erase_postscript", type: :boolean, value: false, - help: "後書きを削除するか" + help: "後書きを削除する" }, { name: "enable_ruby", type: :boolean, value: true, - help: "ルビ処理を有効に" + help: "ルビ処理を有効にする" }, { name: "enable_illust", type: :boolean, value: true, @@ -346,23 +356,23 @@ }, { name: "enable_dakuten_font", type: :boolean, value: true, - help: "濁点フォントを使用するか。false の場合は縦中横による擬似表現を使用する" + help: "濁点フォントを使用する。false の場合は縦中横による擬似表現を使用する" }, { name: "enable_display_end_of_book", type: :boolean, value: true, - help: "小説の最後に本を読み終わった表示をするかどうか" + help: "小説の最後に本を読み終わった表示をする" }, { name: "enable_add_date_to_title", type: :boolean, value: false, - help: "変換後の小説のタイトルに更新日の日付を付加するかどうか" + help: "変換後の小説のタイトルに最新話掲載日や更新日等の日付を付加する" }, { name: "title_date_format", type: :string, value: "(%-m/%-d)", @@ -375,26 +385,34 @@ help: "enable_add_date_to_title で付与する日付の位置。left(タイトルの前) か right(タイトルの後)", select_keys: %w(left right), select_summaries: %w(タイトルの前 タイトルの後) }, { + name: "title_date_target", + type: :select, + value: "general_lastup", + help: "enable_add_date_to_title で付与する日付の種類。\ngeneral_lastup(最新話掲載日),last_update(更新日),new_arrivals_date(新着を確認した日),convert(変換した日)", + select_keys: %w(general_lastup last_update new_arrivals_date convert), + select_summaries: %w(最新話掲載日 更新日 新着を確認した日 変換した日) + }, + { name: "enable_ruby_youon_to_big", type: :boolean, value: false, - help: "ルビの拗音(ぁ、ぃ等)を商業書籍のように大きくするかどうか" + help: "ルビの拗音(ぁ、ぃ等)を商業書籍のように大きくする" }, { name: "enable_pack_blank_line", type: :boolean, value: true, - help: "縦書きで読みやすいように空行を減らすかどうか" + help: "縦書きで読みやすいように空行を減らす" }, { name: "enable_kana_ni_to_kanji_ni", type: :boolean, value: true, - help: "漢字の二と間違えてカタカナのニを使っていそうなのを、漢字に直すかどうか" + help: "漢字の二と間違えてカタカナのニを使っていそうなのを、漢字に直す" }, { name: "enable_insert_word_separator", type: :boolean, value: false, @@ -405,6 +423,12 @@ type: :boolean, value: false, help: "文字選択がしやすいように1文字ずつ区切りデータを挿入する(Kindle専用。enable_insert_word_separator が有効な場合無この設定は無視される)" }, ] + + ORIGINAL_SETTINGS_KEY_INDEXES = {}.tap { |hash| + ORIGINAL_SETTINGS.each_with_index do |s, i| + hash[s[:name]] = i + end + } end