суббота, 16 мая 2009 г.

Использование утилиты tidy для чистки html

Tidy утилита очень мощная и есть во многих дистрибутивах, вот только использовать ее из внешней программы немного не тривиально, т.к. утилита представляет собой потоковый обработчик. Когда-то мне пришлось поломать голову над тем, как же вызывать tidy корректно, а в итоге получилась нижеприведенная функция.


proc tidy {buf} {
if {$buf eq {}} {return {}}
set res {}
set cat [open "|cat" r+]
set io [ open "|/usr/bin/tidy -utf8 -asxhtml -q --show-body-only 1 -f /dev/null <@ $cat" r]
puts $cat $buf
flush $cat
close $cat
set res [read $io]
catch {close $io}
return $res
}


Поскольку я работаю с дистрибутивом debian, то путь задан непосредственно в коде. Разумеется, точно так же можно вызывать из тикля любую другую утилиту потоковой обработки, например, архиватор.

Комментариев нет:


(C) Alexey Pechnikov aka MBG, mobigroup.ru