Na początku zaznaczam, że piszę przy użyciu NetBeans i w opcjach projektu mam ustawione kodowanie źródeł na UTF-8.
Mój pierwszy w życiu skrypt w Rubym, więc się nie śmiać, jeśli robię coś źle (co jest bardzo prawdopodobne):
[code]def basic_chars(string)
get_replacement = ->(char) do
case char
when ‘ą’ then ‘a’
when ‘ć’ then ‘c’
when ‘ę’ then ‘e’
when ‘ł’ then ‘l’
when ‘ń’ then ‘n’
when ‘ó’ then ‘o’
when ‘ż’ then ‘z’
when ‘ź’ then ‘z’
else char
end
end
new_string = ‘’
string.each_char do |char|
new_string << get_replacement.(char)
end
puts 'ENCODING: ', string.encoding
print 'BEFORE: ', string, "\nAFTER: ", new_string, “\n\n”
new_string
end
def print_filenames(path, separator_number = 0)
Dir.entries(path).delete_if { |filename| filename == ‘.’ || filename == ‘…’ } .each do |filename|
full_filename = “#{path}/#{filename}”
is_dir = File.directory?(full_filename)
puts "#{' ' * separator_number}#{basic_chars(filename)}#{is_dir ? '/' : ''}"
print_filenames(full_filename, separator_number + 1) if is_dir
end
end
print "Path: "
path = STDIN.gets “\n”
path[-1] = ‘’
print “\n”
print_filenames(path)[/code]
Skrypt ma drukować nazwy plików i struktórę katalogów. Niestety nazwy plików, które zawierają polskie znaki drukowane są z krzakami, a przecież zamieniam polskie znaki
na odpowiedniki bez ogąków. Co robię źle?