Sha256: 403f6f8f36b70e60d8595f04a586b90c5c8381307f571781fbe4b7c251894804

Contents?: true

Size: 936 Bytes

Versions: 3

Compression:

Stored size: 936 Bytes

Contents

require 'xml/mapping'
require 'stash/wrapper/stash_file'

module Stash
  module Wrapper

    # Mapping class for `<st:inventory>`
    class Inventory
      include ::XML::Mapping

      array_node :files, 'file', class: StashFile, default_value: []
      numeric_node :num_files, '@num_files', default_value: 0

      # creates a new {Inventory} object
      # @param files [List<StashFile>] The inventory of files
      def initialize(files:)
        self.files = valid_file_array(files)
        self.num_files = files.size
      end

      private

      def valid_file_array(files)
        fail ArgumentError, "specified file list does not appear to be an array of StashFiles: #{files.inspect}" unless files.is_a?(Array)
        files.each_with_index do |f, i|
          fail ArgumentError, "files[#{i}] does not appear to be a StashFile: #{f.inspect}" unless f.is_a?(StashFile)
        end
        files
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
stash-wrapper-0.1.11.1 lib/stash/wrapper/inventory.rb
stash-wrapper-0.1.11 lib/stash/wrapper/inventory.rb
stash-wrapper-0.1.10 lib/stash/wrapper/inventory.rb