nataraj: (Default)
[personal profile] nataraj
Есть замечательный perl-скрипт html2fb2 писаный неким товарищем Mike Matsnev

Скрипт этот открывает файл, если имя задано, или берет STDOUT, скармливает открытый файл-хэндл HTML::Parser'у и дальше делает что надо.

Все бы хорошо, но возникает одна проблема... HTML::Parser не умеет правильно раскрывать амперсант-последовательности для случая когда его кормят уникодом не сказав что это уникод... (то есть когда в строке уникод но не выставлен флаг UTF8.) Но если открывать уникодный html-файл без доп ухищерений, то именно такие данные из него и приходят.

При этом скрипт сам, на момент открытия файла не всегда знает какая кодировка там будет, потому что в если ничего не сказано явно, то он по возможности берет кодировку из META в заголовке...

Эта мета ловиться парсером, но на момент когда она ловится, файл уже открыт... И из этого открытого файла уже сыпятся уникодная разнобайтица...

Проблема бы легко решалась бы, если бы контент файла загружался целиком, и можно было бы регекспить и преобразовывать его по самое неболуйся...

Но скрипт изначально задуман как фильтр (или какое там правильное слово... короче они не накапливает информацию, а по мере чтения выплевывает вывод, не дожидаясь пока все прочитается), и у нас есть ровно один шанс чтобы сделать все правильно... (Второй раз на STDIN никто ничего посылать не будет)

Вот... Короче я не понимаю как это сделать идеологически правильно не переиначивая всю идею скрипта... :-/

Есть кто-то кто может сказать что-то умное по этому поводу?

Date: 2008-01-14 08:14 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
HTML::Parser-у совершенно необязательно скармливать хэндл. Можно и строку.
Т.е. зачитать файл или STDIN в строку самому, поанализировать на предмет meta и потом отдавать парсеру.
HTML-файлы книг они МАЛЕНЬКИЕ. Нет никакой необходимости читать их по кускам, даже если снаружи это выглядит как фильтр.

Date: 2008-01-14 08:16 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Коля, а ты не в курсе - как fb2 переконвертить в pdb?

Profile

nataraj: (Default)
Swami Dhyan Nataraj

July 2024

S M T W T F S
 123456
789 10111213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 14th, 2025 07:44 pm
Powered by Dreamwidth Studios
OSZAR »