Class: Clir::PrecedencedList
- Inherits:
-
Array
- Object
- Array
- Clir::PrecedencedList
- Defined in:
- lib/clir/data_manager/PrecedencedList.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(liste, list_name) ⇒ PrecedencedList
constructor
Instantiation.
- #path ⇒ Object
- #precedence_exist? ⇒ Boolean
- #precedences ⇒ Object
- #save ⇒ Object
-
#set_last(value) ⇒ Object
main =.
- #table ⇒ Object
-
#to_prec ⇒ Object
main =.
Constructor Details
#initialize(liste, list_name) ⇒ PrecedencedList
Instantiation
16 17 18 19 20 21 |
# File 'lib/clir/data_manager/PrecedencedList.rb', line 16 def initialize(liste, list_name) super(liste) liste.first.is_a?(Hash) || raise("Pour pouvoir gérer les précédences d'une liste, il faut que les éléments soit des dictionnaires (Hash).") liste.first.key?(:value) || raise("Pour pouvoir gérer les précédences d'une liste, il faut que les éléments définissent l'attribut unique :value.") @list_name = list_name end |
Class Method Details
.folder ⇒ Object
Note:
En mode test, il faut le refaire chaque fois
90 91 92 93 94 95 96 |
# File 'lib/clir/data_manager/PrecedencedList.rb', line 90 def self.folder if test? mkdir(File.join(Dir.home, 'TESTS', '.precedences')) else @@folder ||= mkdir(File.join(Dir.home, '.precedences')) end end |
Instance Method Details
#path ⇒ Object
84 85 86 |
# File 'lib/clir/data_manager/PrecedencedList.rb', line 84 def path @path ||= File.join(self.class.folder, "#{@list_name}.precedences") end |
#precedence_exist? ⇒ Boolean
80 81 82 |
# File 'lib/clir/data_manager/PrecedencedList.rb', line 80 def precedence_exist? File.exist?(path) end |
#precedences ⇒ Object
70 71 72 73 74 75 76 77 78 |
# File 'lib/clir/data_manager/PrecedencedList.rb', line 70 def precedences @precedences ||= begin if precedence_exist? # puts "Je lis le fichier de précédence : #{path}".orange # sleep 4 File.read(path).split("\n") else [] end end end |
#save ⇒ Object
66 67 68 |
# File 'lib/clir/data_manager/PrecedencedList.rb', line 66 def save File.write(path, precedences.join("\n")) end |
#set_last(value) ⇒ Object
main =
Méthode principale pour enregistrer le dernier item choisi
51 52 53 54 55 |
# File 'lib/clir/data_manager/PrecedencedList.rb', line 51 def set_last(value) precedences.delete(value) @precedences.unshift(value) save end |
#table ⇒ Object
58 59 60 61 62 63 64 |
# File 'lib/clir/data_manager/PrecedencedList.rb', line 58 def table @table ||= begin tbl = {} self.each { |ditem| tbl.merge!(ditem[:value] => ditem) } tbl end end |
#to_prec ⇒ Object
main =
Méthode principale qui retourne les items gérés au niveau de la précédence.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/clir/data_manager/PrecedencedList.rb', line 28 def to_prec if precedence_exist? @table = nil # Pour forcer liste = precedences.map do |value| table.delete(value) end.compact # les items supprimés # # On ajoute les items restants # table.each do |value, ditem| liste << ditem end return liste else return self end end |