lmas = ltext.grep(filtr)
# начинаем формировать выходной текст
outtext="
"+fbtitle[0]+fbtitle[1]+fbtitle[2]+"
\n"
# начинаем формировать аннотацию
annotation="
Содержание номера:
\n"
# флажок открытой секции раздела
flagSect=false
# прокручиваем список ссылок
lmas.each do |line|
if line.include? "SPAN" then # ССЫЛКА ИЛИ РАЗДЕЛИТЕЛЬ?
if flagSect then outtext=outtext+"\n" end # РАЗДЕЛИТЕЛЬ. Секцию закрывать надо?
/(.+)<\/SPAN>/.match(line) # выгрызаем разделитель...
outtext=outtext+"\n"+$1+"
\n" # открываем секцию раздела
annotation=annotation+"
"+$1+":
\n" # и дополняем аннотацию
flagSect=true # секция осталась открыта...
else # НЕ-ЕТ, ВСЕ-ТАКИ ССЫЛКА...
filtr.match(line)
pathf = $2 # берем путь к первому файлу статьи...
annotation=annotation+"
"+(149).chr+" "+$3+"
\n" # дополняем аннотацию...
puts pathf[0..2] # это чтобы не скучно было ждать...
outtext=outtext+"
while File::exists?(pathf) do # обрабатываем статью
# считали файлик в текстовую строку...
wfile=File.open(pathf)
wtext=wfile.readlines.to_s
wfile.close
wtext[/.+?<\/p>/m]="" # чик! головка...
wtext[/
.+<\/html>/m]="" # чик! хвостик... # заголовок статьи оставлять?
wtext = pathf[4,2].to_i == 1 ? wtext.sub(/.*\n(.*\n.*\n).*\n.*\n/,' \1') : wtext.sub(/.*\n.*\n.*\n.*\n.*\n/,' \1')
outtext=outtext+wtext # оставшийся текст - к основному массиву
# модифицируем имя файла
if pathf[4,2].to_i >= 10
pathf[4,2] = (pathf[4,2].to_i + 1).to_s
else
pathf[4] = (pathf[4,2].to_i + 1).to_s
end
end # конец цикла
outtext=outtext+"\n" # закрываем секцию
end # усе. статью оформили...
end # все статьи собрали в одну строку...
# модифицируем выходной текст под FB2
outtext.gsub!("
","")
outtext.gsub!("
","")outtext.gsub!("
","")
outtext.gsub!("
","")outtext.gsub!(" ",(160).chr)
outtext.gsub!(/&(?!lt;|gt;)/,"&")
annotation.gsub!(/&(?!lt;|gt;)/,"&")
outtext.gsub!("
","
")
outtext.gsub!("
","
")
# чистим мусор
outtext.gsub!(/\x01|\x12|\x18|\x1E/, "?") # удаляем непечатные символы
# корректируем неправильное использование "<" и ">"
# заодно прибиваем ненужные тэги
outtext.gsub!(/(
)(.*)(<\/p>)/) do |line|
subl1,subl2,subl3 = $1,$2,$3