Class: Restauration::Etape::Analyse

Inherits:
Object
  • Object
show all
Defined in:
lib/images/restauration/etape/analyse.rb

Overview

Definit l’étape d’analyse

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(extracteur, noms_extirpable_par_dossier = {}, dossiers_analyses = {}) ⇒ Analyse

Returns a new instance of Analyse.



14
15
16
17
18
19
20
# File 'lib/images/restauration/etape/analyse.rb', line 14

def initialize(extracteur, noms_extirpable_par_dossier = {}, dossiers_analyses = {})
  @extracteur = extracteur
  @noms_extirpable_par_dossier = noms_extirpable_par_dossier
  @dossiers_analyses = dossiers_analyses
  @log = Logging.logger[self]
  @nombre_fichiers_analyses = 0
end

Instance Attribute Details

#dossiers_analysesObject (readonly)

Returns the value of attribute dossiers_analyses.



12
13
14
# File 'lib/images/restauration/etape/analyse.rb', line 12

def dossiers_analyses
  @dossiers_analyses
end

#nombre_fichiers_analysesObject (readonly)

Returns the value of attribute nombre_fichiers_analyses.



12
13
14
# File 'lib/images/restauration/etape/analyse.rb', line 12

def nombre_fichiers_analyses
  @nombre_fichiers_analyses
end

Instance Method Details

#calcul_taux_d_extirpabilite_par(nom_dossier) ⇒ Object



45
46
47
48
49
50
51
52
53
# File 'lib/images/restauration/etape/analyse.rb', line 45

def calcul_taux_d_extirpabilite_par(nom_dossier)
  noms_extirpable = @noms_extirpable_par_dossier.fetch(nom_dossier)
  noms_extirpable_possible = @noms_extirpable_par_dossier.fetch(nom_dossier).tally
  if noms_extirpable_possible.key?(true)
    ((noms_extirpable_possible[true] * 100) / noms_extirpable.length)
  else
    0
  end
end

#extirpabilite_par(path_dossier, nom_fichier) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/images/restauration/etape/analyse.rb', line 55

def extirpabilite_par(path_dossier, nom_fichier)
  extirpable = @extracteur.extirpabilite(nom_fichier)
  nom_extirpable_par_dossier = if @noms_extirpable_par_dossier.key?(path_dossier)
                                 @noms_extirpable_par_dossier.merge!({ path_dossier => @noms_extirpable_par_dossier
                                   .fetch(path_dossier)
                                   .push(extirpable) })
                               else
                                 @noms_extirpable_par_dossier.merge!({ path_dossier => [].push(extirpable) })
                               end
  @log.debug "Le fichier '#{nom_fichier}' est extirpable : #{extirpable}"
  nom_extirpable_par_dossier
end

#parcours(dossier) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/images/restauration/etape/analyse.rb', line 22

def parcours(dossier)
  @log.debug "Parcours du dossier '#{dossier}'"
  Dir.each_child(dossier) do |nom_fichier|
    fichier = "#{dossier}/#{nom_fichier}"
    if File.file?(fichier)
      if File.extname(fichier) =~ RegexHelpers::EXTENSIONS_EXCLUS
        extirpabilite_par(dossier, fichier)
        @nombre_fichiers_analyses += 1
      else
        @log.warn "Le fichier '#{fichier}' ne sera pas analysé"
      end
    else
      parcours(fichier)
      next
    end
  end
  if @noms_extirpable_par_dossier.key?(dossier)
    taux = calcul_taux_d_extirpabilite_par(dossier)
    @dossiers_analyses.store(dossier, taux)
    @log.info "Le dossier '#{dossier}' posséde un taux de #{taux}% d'extirpabilité"
  end
end