Sha256: b8ee3594a2001ef3eee017904bbf23f5cd57dd1265ffb32cda5220915f1ee9e4

Contents?: true

Size: 1.65 KB

Versions: 39

Compression:

Stored size: 1.65 KB

Contents

# frozen_string_literal: true

require 'avm/data/callbacks'
require 'eac_ruby_utils/core_ext'

module Avm
  module Data
    class Unit
      include ::Avm::Data::Callbacks

      enable_speaker

      %w[dump load].each do |action|
        method_name = "#{action}_command"
        class_eval <<~CODE, __FILE__, __LINE__ + 1
          # Should be overrided.
          # @return [EacRubyUtils::Envs::Command]
          def #{method_name}
            fail "\\"#{method_name}\\" is a abstract method. Override in #{singleton_class}."
          end
        CODE
      end

      def extension
        singleton_class.const_get('EXTENSION')
      rescue NameError
        ''
      end

      def name
        self.class
      end

      def load_from_directory(directory, identifier)
        load(unit_on_directory_path(directory, identifier))
      end

      def dump_to_directory(directory, identifier)
        dump(unit_on_directory_path(directory, identifier))
      end

      def dump(data_path)
        run_callbacks :dump do
          infom "Dumping unit \"#{name}\" to \"#{data_path}\"..."
          do_dump(data_path)
        end
      end

      def load(data_path)
        run_callbacks :load do
          infom "Loading unit \"#{name}\" from \"#{data_path}\"..."
          do_load(data_path)
        end
      end

      protected

      def do_dump(data_path)
        dump_command.execute!(output_file: data_path)
      end

      def do_load(data_path)
        load_command.execute!(input_file: data_path)
      end

      private

      def unit_on_directory_path(directory, identifier)
        ::File.join(directory, "#{identifier}#{extension}")
      end
    end
  end
end

Version data entries

39 entries across 39 versions & 2 rubygems

Version Path
eac_tools-0.60.0 sub/avm/lib/avm/data/unit.rb
eac_tools-0.59.0 sub/avm/lib/avm/data/unit.rb
avm-0.66.1 lib/avm/data/unit.rb
eac_tools-0.58.0 sub/avm/lib/avm/data/unit.rb
eac_tools-0.57.0 sub/avm/lib/avm/data/unit.rb
eac_tools-0.56.1 sub/avm/lib/avm/data/unit.rb
avm-0.66.0 lib/avm/data/unit.rb
eac_tools-0.56.0 sub/avm/lib/avm/data/unit.rb
avm-0.65.0 lib/avm/data/unit.rb
eac_tools-0.55.7 sub/avm/lib/avm/data/unit.rb
avm-0.64.2 lib/avm/data/unit.rb
eac_tools-0.55.6 sub/avm/lib/avm/data/unit.rb
avm-0.64.1 lib/avm/data/unit.rb
eac_tools-0.55.5 sub/avm/lib/avm/data/unit.rb
avm-0.64.0 lib/avm/data/unit.rb
eac_tools-0.55.4 sub/avm/lib/avm/data/unit.rb
avm-0.63.0 lib/avm/data/unit.rb
eac_tools-0.55.3 sub/avm/lib/avm/data/unit.rb
eac_tools-0.55.2 sub/avm/lib/avm/data/unit.rb
eac_tools-0.55.1 sub/avm/lib/avm/data/unit.rb