Class: ModpackLocalizer::JAR::Reader
- Inherits:
-
Object
- Object
- ModpackLocalizer::JAR::Reader
- Defined in:
- lib/modpack_localizer/jar/reader.rb
Overview
.jarファイルから言語ファイルの内容とメタデータを抽出するクラス
Defined Under Namespace
Classes: LangData
Constant Summary collapse
- LOCALE_CODE_REGEX =
例: ja_jp
/\A[a-z]{2,3}_[a-z]{2,3}\z/
- BOM_REGEX =
BOM付きだとJSON.parseでエラーが出る
/\A\xEF\xBB\xBF/
Instance Method Summary collapse
-
#extract_file_name(file) ⇒ String
フルパスからファイル名を抽出する.
-
#extract_lang_json_and_meta_data ⇒ LangData
言語ファイルの内容とメタデータを抽出する.
-
#initialize(file_path, language, country_name, locale_code) ⇒ ModpackLocalizer::JAR::Reader
constructor
locale_codeが渡された場合、languageとcountry_nameは不要.
Constructor Details
#initialize(file_path, language, country_name, locale_code) ⇒ ModpackLocalizer::JAR::Reader
locale_codeが渡された場合、languageとcountry_nameは不要
35 36 37 38 39 40 41 42 |
# File 'lib/modpack_localizer/jar/reader.rb', line 35 def initialize(file_path, language, country_name, locale_code) @file_path, @language, @country_name = file_path, language, country_name @locale_code = locale_code&.downcase || make_locale_code(get_language_code(language), get_country_code(country_name)) # 引数としてlocale_codeが渡された時はチェックしない # brb(Netherlands)のような、正規表現にマッチしないlocale_codeが存在するため(brbはISO 639-3でqbr_NL) validate_locale_code(@locale_code) unless locale_code end |
Instance Method Details
#extract_file_name(file) ⇒ String
フルパスからファイル名を抽出する
77 78 79 |
# File 'lib/modpack_localizer/jar/reader.rb', line 77 def extract_file_name(file) file.name.split("/").last end |
#extract_lang_json_and_meta_data ⇒ LangData
言語ファイルの内容とメタデータを抽出する
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/modpack_localizer/jar/reader.rb', line 48 def Zip::File.open(@file_path) do |jar| # 対象の言語ファイルが存在する場合は翻訳が必要ない target_lang_file = find_lang_json(jar, @locale_code) if target_lang_file return LangData.new( false, {}, target_lang_file, nil, extract_mod_name(target_lang_file), nil ) end lang_file = find_lang_json(jar, "en_us") unless lang_file return LangData.new( false, {}, lang_file, nil, nil, "Language files not found from #{extract_file_name(jar)}" ) end raw_json = parse_json(lang_file) LangData.new( true, except_comment(raw_json), lang_file, @locale_code, extract_mod_name(lang_file), nil ) end end |