Sha256: 9ba22bdd9e7a0bda7eabbf789fb57027f9df89c1f9b3701ad33acb0c9f5ebecd

Contents?: true

Size: 1.96 KB

Versions: 1

Compression:

Stored size: 1.96 KB

Contents

module RMXPExtractor
  def self.export(format)
    STDERR.puts "No Data Directory!" unless Dir.exists? "./Data"
    exit 1 unless Dir.exists? "./Data"

    require "json"
    require "toml-rb"
    require "yaml"
    require "amazing_print"
    require "ruby-progressbar"
    require "fileutils"
    require "pathname"
    require "readline"
    require_relative "classnames"
    require_relative "script_handler"

    window_size = 120
    progress_format = "%a /%e |%B| %p%% %c/%C %r files/sec %t, currently processing: "
    progress = ProgressBar.create(
      format: progress_format,
      starting_at: 0,
      total: nil,
      output: $stderr,
      length: window_size,
      title: "exported",
      remainder_mark: "\e[0;30mâ–ˆ\e[0m",
      progress_mark: "â–ˆ",
      unknown_progress_animation_steps: ["==>", ">==", "=>="],
    )
    Dir.mkdir "./Data_#{format.upcase}" unless Dir.exists? "./Data_#{format.upcase}"
    paths = Pathname.glob(("./Data/" + ("*" + ".rxdata")))
    count = paths.size
    progress.total = count
    paths.each_with_index do |path, i|
      content = Hash.new

      name = path.basename(".rxdata")
      rxdata = Marshal.load(path.read(mode: "rb"))
      progress.format = progress_format + name.to_s
      case name.to_s
      when "xScripts", "Scripts"
        RMXPExtractor.rpgscript("./", "./Scripts", "#{name.to_s}.rxdata", true)
        content["version"] = VERSION
      else
        content["data"] = rxdata.rmxp_serialize
        content["version"] = VERSION
      end

      file = File.open("./Data_#{format.upcase}/" + name.sub_ext(".#{format}").to_s, "wb")
      file.puts case format
                when "yaml"
                  content.to_yaml
                when "json"
                  JSON.pretty_generate(content)
                when "toml"
                  TomlRB.dump(content)
                when "rb"
                  content.ai(index: false, indent: 2, plain: true)
                end

      progress.increment
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rmxp_extractor-1.3 lib/rmxp_extractor/data_export.rb