Journal tapmemo, script minimaliste pour apprendre des textes par coeur

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
2
17
déc.
2024

Cher journal,

J'ai un petit texte à apprendre par cœur, est inspiré par le site memorize by heart, j'ai écrit le mini script suivant, dont l'idée est d'attendre que l'utilisateur rentre la première lettre de chaque mot dans un fichier.

#!/bin/env ruby

require 'io/console'

ARGV.size == 1 or raise "Usage: #{$PROGRAM_NAME} <file>"

result = { correct: 0, total: 0 }

File.read(ARGV[0]).split(/\n/) do |line|
  line.split(/\s+/) do |word|
    success = true
    loop do
      case $stdin.getch
      when word[0].downcase
        break
      when "\u0003"
        raise 'Interrupted by user'
      end
      success = false
    end
    result[:total] += 1
    result[:correct] += 1 if success
    print "#{word} "
  end
  puts
end

puts '', "Your score is #{result[:correct] * 100 / result[:total]} %"

Exemple d'utilisation:

./tapmemo <(echo "bonjour, mon cher journal.\ncomment allez vous?")

J'espère que ça pourra aider d'autres personnes,
Si vous voyez des bugs/améliorations je suis preneur !

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.