Создание электронных книг в формате FictionBook 2.1: практическое руководство. Версия 1.0 Release Candidat 2 от 21.08.2008 г. (Кондратович) - страница 42

    filtr.match(line)

    pathf = $2 # берем путь к первому файлу статьи...

    annotation=annotation+"

"+(149).chr+" "+$3+"

\n" # дополняем аннотацию...

    puts pathf[0..2] # это чтобы не скучно было ждать...

    outtext=outtext+"

\n" # открыли секцию...

    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!("

","<p>")</p><p>outtext.gsub!("</strong></big></big></big></p>","</p>")

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

  subl2.gsub!("<","\x8b")

  subl2.gsub!(">","\x9b")

  line=subl1+subl2+subl3

end

# а линки выделим жирным

outtext.gsub!(/\x8Ba href.+?\x9B(.*?)\x8B\/a\x9B/) {|line| line=""+$1+"<\/strong>"}

# компьютерное тире - в типографское

outtext.gsub!(/\s-\s/," \x97 ")

outtext.gsub!("

-", "

\x97")

annotation.gsub!(/\s-\s/," \x97 ")

# добавляем заголовок

outtext="

nonfiction

Редакция журнала

"+fbtitle[0]+fbtitle[1]+fbtitle[2]+"

\n"+annotation+"

"+fbtitle[2][-7,4]+"