Sha256: 5568e9501e9c0f9d2686859b0917117b291dfe96283c87bfcc5e48851364b05d

Contents?: true

Size: 1.11 KB

Versions: 9

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'ehbrs_ruby_utils/fs/iso_9660_file'

module EhbrsRubyUtils
  module Vg
    module Ps2
      class IsoFile < ::EhbrsRubyUtils::Fs::Iso9660File
        CODE_PATTERN = /[a-zA-Z]{4}_[0-9]{3}\.[0-9]{2}/.freeze
        CODE_PARSER = CODE_PATTERN.to_parser(&:to_s)

        # @return [String]
        def code
          list.lazy.map { |line| CODE_PARSER.parse(line) }.find(&:present?)
        end

        # @return [String]
        def basename_nocode_noext
          path.basename_noext.to_path.gsub(/\A#{::Regexp.quote(code)}/, '')
        end

        # @return [Path]
        def target_path
          path.basename_sub do |_b|
            "#{code}.#{path_basename}#{DEFAULT_EXTNAME}"
          end
        end

        # @return [Boolean]
        def valid?
          super && code.present?
        end

        private

        # @return [String]
        def path_basename
          path.basename_noext.to_path.gsub(/\A#{::Regexp.quote(code)}/, '')
            .gsub(/[^0-9a-zA-Z]+/, '_').gsub(/\A_+/, '').gsub(/_+\z/, '')
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
ehbrs_ruby_utils-0.44.3 lib/ehbrs_ruby_utils/vg/ps2/iso_file.rb
ehbrs_ruby_utils-0.44.2 lib/ehbrs_ruby_utils/vg/ps2/iso_file.rb
ehbrs_ruby_utils-0.44.1 lib/ehbrs_ruby_utils/vg/ps2/iso_file.rb
ehbrs_ruby_utils-0.44.0 lib/ehbrs_ruby_utils/vg/ps2/iso_file.rb
ehbrs_ruby_utils-0.41.1 lib/ehbrs_ruby_utils/vg/ps2/iso_file.rb
ehbrs_ruby_utils-0.41.0 lib/ehbrs_ruby_utils/vg/ps2/iso_file.rb
ehbrs_ruby_utils-0.40.0 lib/ehbrs_ruby_utils/vg/ps2/iso_file.rb
ehbrs_ruby_utils-0.39.0 lib/ehbrs_ruby_utils/vg/ps2/iso_file.rb
ehbrs_ruby_utils-0.38.0 lib/ehbrs_ruby_utils/vg/ps2/iso_file.rb