Module: PFA
- Defined in:
- lib/pfa/node_time.rb,
lib/pfa.rb,
lib/pfa/version.rb,
lib/pfa/constants.rb,
lib/pfa/any_builder.rb,
lib/pfa/img_builder.rb,
lib/pfa/absolute_pfa.rb,
lib/pfa/relative_pfa.rb,
lib/pfa/table_builder.rb,
lib/pfa/errors_manager.rb,
lib/pfa/temporal_methods.rb,
lib/pfa/relative_pfa_node.rb,
lib/pfa/relative_pfa_datatime.rb
Overview
Module qui gère l’écriture du tableau du PFA, décrivant tous les éléments du PFA (même ceux qui ne sont pas affichés dans le graphique)
Tous les éléments affichés sont les éléments printed: true dans les données absolues du PFA
Defined Under Namespace
Classes: AbsolutePFAClass, NTime, PFAError, PFAFatalError, RelativePFA
Constant Summary collapse
- LIB_FOLDER =
File.join(__dir__)
- VERSION =
"1.5.0"
- LANG =
La langue, pour le moment fixe
'fr'
- ASSETS_FOLDER =
Chemin d’accès au dossier ASSETS
File.join(LIB_FOLDER,'assets')
- ASSETS_LANG_FOLDER =
Chemin d’accès au dossier de LANGUE dans les ASSETS
File.join(ASSETS_FOLDER, LANG)
- ABSOLUTE_DATA_PATH =
Chemin d’accès au fichier définissant les données absolues du Paradigme de Field Augmenté
File.join(ASSETS_LANG_FOLDER,'PFA_ABSOLUTE_DATA.yaml')
- AbsolutePFA =
/ AbsolutePFAClass
AbsolutePFAClass.instance
- ERRORS =
YAML.load_file(File.join(ASSETS_LANG_FOLDER,'errors.yaml'))
- REG_HORLOGE =
/^([0-9][+:,])?([0-9]{1,2}[+:,])?[0-9]{1,2}$/.freeze
Class Method Summary collapse
-
.h2s(horloge) ⇒ Object
Reçoit une horloge au format String et retourne un nombre de secondes correspondant.
-
.h2t(horloge) ⇒ Object
Reçoit une horloge et retourne le temps correspondant.
-
.new(data = nil) ⇒ Object
Pour pouvoir faire : pfa = PFA.new.
-
.s2h(secondes, **options) ⇒ Object
Reçoit un nombre de secondes Integer et retourne une horloge au format ‘H:MM:SS’ Si
options[:as]
= :duree, on renvoie une version durée, c’est-à-dire avec les heures, et les minutes sur deux chiffres seulement s’il y a des heures. -
.t2h(time) ⇒ Object
Reçoit un temps Time et retourne une horloge ‘H:MM:SS’.
-
.time_from(value) ⇒ Object
Reçoit une valeur temporelle quelconque (mais valide) et retourne le temps Time correspondant.
Class Method Details
.h2s(horloge) ⇒ Object
Reçoit une horloge au format String et retourne un nombre de secondes correspondant.
24 25 26 27 28 |
# File 'lib/pfa/temporal_methods.rb', line 24 def self.h2s(horloge) horloge.match?(REG_HORLOGE) || raise(PFAFatalError.new(52, **{value:"#{horloge.inspect}::#{horloge.class}"})) s, m, h = horloge.split(/[+,:]/).reverse.collect {|n| n.to_i} return (s||0) + (m||0) * 60 + (h||0) * 3600 end |
.h2t(horloge) ⇒ Object
Reçoit une horloge et retourne le temps correspondant
31 32 33 |
# File 'lib/pfa/temporal_methods.rb', line 31 def self.h2t(horloge) Time.at(h2s(horloge)) end |
.new(data = nil) ⇒ Object
Pour pouvoir faire :
pfa = PFA.new
8 9 10 |
# File 'lib/pfa/relative_pfa.rb', line 8 def self.new(data = nil) RelativePFA.new(data) end |
.s2h(secondes, **options) ⇒ Object
Reçoit un nombre de secondes Integer et retourne une horloge au format ‘H:MM:SS’ Si options[:as]
= :duree, on renvoie une version durée, c’est-à-dire avec les heures, et les minutes sur deux chiffres seulement s’il y a des heures.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/pfa/temporal_methods.rb', line 40 def self.s2h(secondes, **) secondes.is_a?(Integer) || raise(PFAFatalError.new(51), **{value: "#{secondes.inspect}::#{secondes.class}"}) h = secondes / 3600 r = secondes % 3600 m = r / 60 s = r % 60 if [:as] == :duree # -- Version durée -- # (on ne met les heures que si elles sont définies) segs = [] segs << "#{h}" if h > 0 m = m.to_s.rjust(2,'0') if h > 0 segs << "#{m}" segs << s.to_s.rjust(2,'0') segs.join(':') # => "1:02:54" ou "2:45" else # -- Version horloge normale -- # (toujours avec les heures) "#{h}:" + [m,s].collect{|n|n.to_s.rjust(2,'0')}.join(':') end end |
.t2h(time) ⇒ Object
Reçoit un temps Time et retourne une horloge ‘H:MM:SS’
63 64 65 66 |
# File 'lib/pfa/temporal_methods.rb', line 63 def self.t2h(time) time.is_a?(Time) || raise(PFAFatalError.new(50, **{value: "#{time.inspect}::#{time.class}"})) return s2h(time.to_i) end |
.time_from(value) ⇒ Object
Reçoit une valeur temporelle quelconque (mais valide) et retourne le temps Time correspondant
Les valeurs adminissibles sont Time, String (format horloge) ou Integer (nombre de secondes)
9 10 11 12 13 14 15 16 |
# File 'lib/pfa/temporal_methods.rb', line 9 def self.time_from(value) case value when Time then value when String then PFA.h2t(value) when Integer then Time.at(value) else raise PFAFatalError.new(52, **{value:"#{value.inspect}::#{value.class}"}) end end |