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

Class Method Details

.h2s(horloge) ⇒ Object

Reçoit une horloge au format String et retourne un nombre de secondes correspondant.

Parameters:

  • \String

    horloge L’horloge transmise, sous différents formats possible, comme ‘H:M:S’, ‘H+M+S’ ou ‘H,M,S’



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, **options)
  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 options[: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