Июльский скриптик для работы с файлами

В очередной раз надо было поставить на поток генерацию HTML-кода для списка файлов в одной категории. На этот раз, перенаправлением в консоль было не отделаться, поскольку нужно было выпечатать ряд html-ок для лежащих в директории флешевских мувиков.
Работа с файлами в ruby сделана более чем прозрачно и напоминает другие языки. Не открывая мануала, я написал что файловая переменная f у меня будет равна File.new(“filename.txt”) и это заработало. Правда, для того чтобы в файл можно было писать, нужно ставить вторым параметром букву w. Не забывайте об этом, иначе потеряете полторы минуты на отладке скрипта, как я.
Кстати, не приходит мне на ум другой язык, в котором есть такая конструкция как

dataArray = f.readlines


которая автоматом записывает каждую строку файла в массив.

Чтобы не загромождать страничку, листинг скрипта для работы с файлами вынесен под кат.
Continue reading Июльский скриптик для работы с файлами

Еще раз для популяризации Руби

Пополняя свою коллекцию полезных скриптов, в добавок к Javascript-у, YAML-скрипту и Listing-cкрипту сегодня написал еще один Watermark-скрипт.
Как понятно из названия, он берет все jpg файлы из текущей папки и добавляет к ним одно изображение. Очень удобно для пакетной обработки файлов: можно поставить на все изображения URL вашего сайта, чтобы люди знали откуда сие добро взято.
Код простой, работает консольно без всякого вывода, однако для его запуска потребуется RMagick, а следовательно и ImageMagick тоже. Если вы используете нормальный сервер или одну из правильных OS, то проблем возникнуть не должно.


require 'RMagick'
wtm_file = 'watermark.png'
wtm = Magick::Image.read(wtm_file).first
Dir.open('./').each do |file|
    next if file[-4..-1] != '.jpg'
    next if file =~ /^..?$/
    
    image = Magick::Image.read(file).first
    image.composite!(wtm, Magick::CenterGravity, 
                                Magick::HardLightCompositeOp)

    out = file.sub(/./, "-wm.")
    image.write(out)
end 

Буду благодарен любым комментариям.