Class: ModpackLocalizer::SNBT::Reader
- Inherits:
-
Object
- Object
- ModpackLocalizer::SNBT::Reader
- Includes:
- DescriptionExtractor, SubtitleExtractor, TitleExtractor
- Defined in:
- lib/modpack_localizer/snbt/reader.rb
Overview
.snbtファイルからタイトル、サブタイトル、説明を抽出するクラス
Constant Summary collapse
- DESC_START_LENGTH =
14
- DESC_END_LENGTH =
-2
Instance Method Summary collapse
-
#extract_all ⇒ Array<Array<Hash>>
タイトル、サブタイトル、説明を抽出する.
-
#extract_descriptions ⇒ Array<Hash>
説明を抽出する.
-
#extract_oneline(line, is_desc: false) ⇒ String
title: “some title”のような形式から、“some title”を抽出する 説明の場合は、description: [“some description”]のような形式から、“some description”を抽出する.
-
#extract_subtitles ⇒ Array<Hash>
サブタイトルを抽出する.
-
#extract_titles ⇒ Array<Hash>
タイトルを抽出する.
- #initialize(file_path) ⇒ ModpackLocalizer::SNBT::Reader constructor
-
#oneline_description?(line) ⇒ Boolean
1行の説明かどうか.
-
#start_of?(line, key:) ⇒ Boolean
どのコンテンツの開始行か.
Methods included from IndentHelper
#count_indent, #create_indent, #middle_indent
Constructor Details
#initialize(file_path) ⇒ ModpackLocalizer::SNBT::Reader
21 22 23 |
# File 'lib/modpack_localizer/snbt/reader.rb', line 21 def initialize(file_path) @file_path = file_path end |
Instance Method Details
#extract_all ⇒ Array<Array<Hash>>
タイトル、サブタイトル、説明を抽出する
28 29 30 31 32 33 34 |
# File 'lib/modpack_localizer/snbt/reader.rb', line 28 def extract_all titles = extract_titles subtitles = extract_subtitles descriptions = extract_descriptions [titles, subtitles, descriptions] end |
#extract_descriptions ⇒ Array<Hash>
説明を抽出する
53 54 55 |
# File 'lib/modpack_localizer/snbt/reader.rb', line 53 def extract_descriptions super(@file_path) end |
#extract_oneline(line, is_desc: false) ⇒ String
title: “some title”のような形式から、“some title”を抽出する 説明の場合は、description: [“some description”]のような形式から、“some description”を抽出する
63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/modpack_localizer/snbt/reader.rb', line 63 def extract_oneline(line, is_desc: false) stripped_line = line.strip return stripped_line.split(":", 2)[1] unless is_desc if oneline_description?(line) stripped_line[DESC_START_LENGTH..DESC_END_LENGTH] elsif start_of?(line, key: :description) stripped_line.split("[", 2)[1] else stripped_line.split("]", 2)[0] end end |
#extract_subtitles ⇒ Array<Hash>
サブタイトルを抽出する
46 47 48 |
# File 'lib/modpack_localizer/snbt/reader.rb', line 46 def extract_subtitles super(@file_path) end |
#extract_titles ⇒ Array<Hash>
タイトルを抽出する
39 40 41 |
# File 'lib/modpack_localizer/snbt/reader.rb', line 39 def extract_titles super(@file_path) end |
#oneline_description?(line) ⇒ Boolean
1行の説明かどうか
80 81 82 83 |
# File 'lib/modpack_localizer/snbt/reader.rb', line 80 def oneline_description?(line) stripped_line = line.strip start_of?(line, key: :description) && stripped_line.end_with?("]") end |
#start_of?(line, key:) ⇒ Boolean
どのコンテンツの開始行か
90 91 92 93 94 95 96 97 98 99 |
# File 'lib/modpack_localizer/snbt/reader.rb', line 90 def start_of?(line, key:) stripped_line = line.strip sections = { title: "title:", subtitle: "subtitle:", description: "description: [" } stripped_line.start_with?(sections[key]) end |