
Je viens de me mettre au langage Ruby, et la meilleure façon d'apprendre est la pratique et l'étude de programmes existants (une fois les bases connues). Pour la pratique j'ai décidé de refaire la roue et de mettre en place un module CGI de recherche par mots clefs sur mon site tuxcoffee.net .
Les bases du programme sont en place, hormis la partie web proprement dite. J'ai décidé de présenter certains morceaux clefs sous forme de nouvelles avant que le programme ne soit finalisé sous forme d'archive (pour la première version) ainsi que la doc écrite et générée. L'objectif de ce programme est simple, mais il me permettra de rassembler des composants indispensables de ruby, comme les bases du langages, les tests unitaires, la doc générée avec rdoc, ...
Première partie d'un ensemble de classes, modules et scripts qui vont composer ce module de recherche, la classe Index qui me permet d'instancier un objet index qui représente l'index d'un ou plusieurs fichiers des mots qui y sont contenus :
class Index
attr_reader :index
def initialize
@index = {}
end
def add_file_to_index(file_to_index)
# pour chaque ligne du fichier, extraction des mots et indexation.
File.open(file_to_index, "r") do |file|
file.each_line do |line|
line.scan(/\w[-'\w]+\w/) do |word| # Recherche des mots dans 1 ligne.
word.downcase!
@index[word] = [] if @index[word].nil?
@index[word].push(file_to_index) unless @index[word].include?(file_to_index)
end
end
end
end
def search(word)
@index[word.downcase]
end
end