Module CGI en Ruby de recherche web - partie 1

Posté le 2006-08-24

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
Un point faible à corriger dans le source montré ici, les caractères accentués ne sont pas pris en compte :(
Les sources de ce programme sont sous licence GPL, licence qui sera incluse dans le programme final qui sera librement utilisable et modifiable dans les termes de cette licence.

Envoyer un commentaire

Commentaire et infos