Bonjour,

Je suis en train d'écrire un script en ruby et j'utilise la lib readline pour l'autocompletition et l'historique des commandes taper par les utilisateurs.

Ce que je souhaiterais faire, c'est que lorsqu'un utilisateur utilise '~/' dans un path le '~/' soit remplacé par un chemin absolu, seulement étant débutant en ruby je ne sais pas trop comment faire, j'ai un peut chercher sur le net, mais sans rien trouver quelque chose de concret malheureusement.

Voici le bou de code qui a besoin d'être modifier pour cela:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Readline.completion_proc = proc do |s|
	if Readline.line_buffer =~ /^.* /
		#autocomplete path file
		files = Dir[s+'*']
		files.grep( /^#{Regexp.escape(s)}/ )
		files.map { |f| File.expand_path(f.gsub('Y:','')) }.map { |f| File.directory?(f) ? f.gsub('Y:','') + "/" : f.gsub('Y:','') }
	elsif s[0,1] == '/' || s[0,2] == './' || s[0,2] == "~/"
		#autocomplete path cmd
		files = Dir[s+'*']
		files.grep( /^#{Regexp.escape(s)}/ )
		files.map { |f| File.expand_path(f.gsub('Y:','')) }.map { |f| File.directory?(f) ? f.gsub('Y:','') + "/" : f.gsub('Y:','') }
	else
		LIST.grep( /^#{Regexp.escape(s)}/ ) 
	end
end