class DaVinciPASTestKit::Generator::IGLoader

def ig_resources

def ig_resources
  @ig_resources ||= IGResources.new
end

def initialize(ig_file_name)

def initialize(ig_file_name)
  self.ig_file_name = ig_file_name
end

def load

def load
  load_ig
  load_standalone_resources
end

def load_ig

def load_ig
  tar = Gem::Package::TarReader.new(
    Zlib::GzipReader.open(ig_file_name)
  )
  tar.each do |entry|
    next if entry.directory?
    file_name = entry.full_name.split('/').last
    next unless file_name.end_with? '.json'
    next unless entry.full_name.start_with? 'package/'
    begin
      resource = FHIR.from_contents(entry.read)
      next if resource.nil?
    rescue StandardError
      puts "#{file_name} does not appear to be a FHIR resource."
      next
    end
    ig_resources.add(resource)
  end
  ig_resources
end

def load_standalone_resources

def load_standalone_resources
  ig_directory = ig_file_name.chomp('.tgz')
  return ig_resources unless File.exist? ig_directory
  Dir.glob(File.join(ig_directory, '*.json')).each do |file_path|
    begin
      resource = FHIR.from_contents(File.read(file_path))
      next if resource.nil?
    rescue StandardError
      file_name = file_path.split('/').last
      puts "#{file_name} does not appear to be a FHIR resource."
      next
    end
    ig_resources.add(resource)
  end
  ig_resources
end