Sha256: ea235c86929b976d69ef84f9d82584d36f77b444af7a9385a86d865147a67cc6

Contents?: true

Size: 1.57 KB

Versions: 1

Compression:

Stored size: 1.57 KB

Contents

require 'kramdown'

module Bookmaker
  module Parser
    class PDF < Base
      def content
        raw = []
        entries.keys.each do |chapter|
          raw << "{::nomarkdown}\\Chapter{#{chapter.split(/_/)[1].gsub('-',' ')}}{:/}"
          entries[chapter].each do |section|
            s = read_content(section)[0]
            s.gsub!(/\[([^\]]+?)\]\(([^\)]+?\![^\)]+?)\)/m) { "{::nomarkdown}\\emph{#{$1}}\\index{#{$2}}{:/}" }
            # puts s
            #             exit
            raw << "#{s}\n\n* * *"
          end
        end
        
        raw
      end
      def parse
        locals = config.merge({ :contents => parse_layout(content) })
        locals['copyright'].gsub!("(C)", "\\copyright{}")
        output = render_template(root_dir.join("templates/pdf/layout.erb"), locals)
        File.open(root_dir.join(tex_file), 'w').write(output)
        spawn_command ["xelatex", tex_file.to_s,]
        spawn_command ["xelatex", tex_file.to_s,]
        spawn_command ["makeindex #{name}.idx"]
        # spawn_command ["makeglossaries #{name}.glo"]
        spawn_command ["xelatex", tex_file.to_s,]
        
        spawn_command ["rm *.glo *.idx *.log *.out *.toc *aux"]
        spawn_command ["mv #{name}.pdf output/#{name}.pdf"]
        true
      rescue Exception
        p $!, $@
        false
      end
      def parse_layout(text)
        text = text.join("\n\n")
        text.gsub!('* * *', "\n\n{::nomarkdown}\\pbreak{:/}\n\n")
        Kramdown::Document.new(text).to_latex
      end
      def tex_file
        root_dir.join("output/#{name}.tex")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bookmaker-0.2.0 lib/bookmaker/parser/pdf.rb