Class: Faussaire::Bizness

Inherits:
Object
  • Object
show all
Defined in:
lib/faussaire/bizness.rb

Constant Summary collapse

DATA_PATH =
File.expand_path('../../../locale/fr.yml', __FILE__)

Class Method Summary collapse

Class Method Details

.brandsString

Produces a random brand name.

Examples:

Faussaire::Bizness.brands #=> "Apple"

Returns:

  • (String)


29
30
31
# File 'lib/faussaire/bizness.rb', line 29

def self.brands
  fetch('fr.faussaire.bizness.brands')
end

.fetch(key) ⇒ Object?

Fetches and optionally samples data based on the provided key. If the fetched data is an array, it samples a single item, otherwise returns the data directly.

Parameters:

  • key (String)

    The dot-separated key used to access the data.

Returns:

  • (Object, nil)

    The data fetched and optionally sampled.



15
16
17
18
19
# File 'lib/faussaire/bizness.rb', line 15

def self.fetch(key)
  data = YAML.load_file(DATA_PATH)
  result = data.dig(*key.split('.'))
  result.is_a?(Array) ? result.sample : result
end

.format(arr) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/faussaire/bizness.rb', line 45

def self.format(arr)
  vowels = "aeiouyhéèà"
  arr.each_with_index do |phrase, i|
    # Identifier si le mot actuel se termine par '#' et le traiter.
    if phrase[-1] == '#'
      phrase.chop! # Supprimer le dernier caractère '#'
      next_phrase_starts_with_vowel = i < arr.size - 1 && vowels.include?(arr[i + 1][0].downcase)
      arr[i] += next_phrase_starts_with_vowel ? 'e ' : "'"
    end

    # Traiter les cas où le mot se termine par '\'' ou contient 'de ' nécessitant une décision sur l'ajout de 'e ' ou de ''.
    if phrase[-1] == '\'' || (phrase.include?('de') && phrase[-3..] == "de ")
      # Aucun besoin de couper le mot ici; ajustez simplement pour le suivant.
      next_phrase_starts_with_vowel = i < arr.size - 1 && vowels.include?(arr[i + 1][0].downcase)
      arr[i] += next_phrase_starts_with_vowel ? 'e ' : ""
    end

    # Ajouter un espace si nécessaire.
    arr[i] += ' ' unless arr[i].end_with?(' ', "'") || i == arr.size - 1
    # Traitement spécial pour le sixième élément, si nécessaire.
    arr[i] = 'les ' + arr[i] if i == 5
  end
  # Construire la phrase et ajouter un point à la fin.
  sentence = arr.join.squeeze(' ').strip + '.'
  sentence
end

.load_dicoObject



33
34
35
36
37
# File 'lib/faussaire/bizness.rb', line 33

def self.load_dico
  data = YAML.load_file(DATA_PATH)
  dico = data.dig('fr', 'faussaire', 'bizness', 'pipotronics')
  dico
end

.pipotronicObject



39
40
41
42
43
# File 'lib/faussaire/bizness.rb', line 39

def self.pipotronic
  dico = load_dico
  selected_phrases = dico.map { |category| category.sample }
  format(selected_phrases)
end