Class: ModpackLocalizer::SNBT::Writer

Inherits:
Object
  • Object
show all
Includes:
IndentHelper
Defined in:
lib/modpack_localizer/snbt/writer.rb

Overview

.snbtファイルの翻訳された内容を整形して出力するクラス

Instance Method Summary collapse

Methods included from IndentHelper

#count_indent, #create_indent, #middle_indent

Constructor Details

#initialize(file_path) ⇒ ModpackLocalizer::SNBT::Writer

Parameters:

  • file_path (String)

    ファイルのパス



13
14
15
16
17
18
# File 'lib/modpack_localizer/snbt/writer.rb', line 13

def initialize(file_path)
  @input_file_path = file_path
  # questsとすると、quests.snbtも変換されてしまうので、quests/とする
  @output_file_path = file_path.gsub("quests/", "output/quests/")
  @formatter = ModpackLocalizer::SNBT::Formatter.new
end

Instance Method Details

#overwrites(translated_contents) ⇒ void

This method returns an undefined value.

翻訳された内容でoutput_file_pathを上書きする

Parameters:

  • translated_contents (Hash)

    翻訳された内容



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/modpack_localizer/snbt/writer.rb', line 24

def overwrites(translated_contents)
  # ディレクトリが存在しない場合は作成
  FileUtils.mkdir_p(File.dirname(@output_file_path))

  # 一度上書きしている場合は上書き後のファイルを読み込む
  # 常に上書き前のファイルを読み込むと、前回の上書きが消えてしまう
  lines = File.readlines(first_overwrite? ? @input_file_path : @output_file_path)
  formatted_lines = overwrite_lines(lines, translated_contents)

  File.open(@output_file_path, "w") do |file|
    file.puts formatted_lines
  end

  handle_line_count_error(@output_file_path, lines.length)
end