Sha256: 1ac9246a776967d5901186f97e88d472c02da783bcafc8a80ff208176d7c0668

Contents?: true

Size: 1.43 KB

Versions: 94

Compression:

Stored size: 1.43 KB

Contents

require_relative "html_function/comments"
require_relative "html_function/footnotes"
require_relative "html_function/html"
require "fileutils"

module IsoDoc
  class HeadlessHtmlConvert < ::IsoDoc::Convert
    include HtmlFunction::Comments
    include HtmlFunction::Footnotes
    include HtmlFunction::Html

    def tmpimagedir_suffix
      "_#{SecureRandom.hex(8)}_headlessimages"
    end

    def initialize(options)
      @format = :html
      @suffix = "headless.html"
      super
    end

    def convert(input_filename, file = nil, debug = false, output_filename = nil)
      file = File.read(input_filename, encoding: "utf-8") if file.nil?
      @openmathdelim, @closemathdelim = extract_delims(file)
      docxml, filename, dir = convert_init(file, input_filename, debug)
      result = convert1(docxml, filename, dir)
      return result if debug

      postprocess(result, "#{filename}.tmp.html", dir)
      FileUtils.rm_rf dir
      strip_head("#{filename}.tmp.html",
                 output_filename || "#{filename}.#{@suffix}")
      FileUtils.rm_rf ["#{filename}.tmp.html", tmpimagedir]
    end

    def strip_head(input, output)
      file = File.read(input, encoding: "utf-8")
      doc = Nokogiri::XML(file)
      doc.xpath("//head").each(&:remove)
      doc.xpath("//html").each { |x| x.name = "div" }
      body = doc.at("//body")
      body.replace(body.children)
      File.open(output, "w") { |f| f.write(doc.to_xml) }
    end
  end
end

Version data entries

94 entries across 94 versions & 1 rubygems

Version Path
isodoc-2.5.8 lib/isodoc/headlesshtml_convert.rb
isodoc-2.5.7 lib/isodoc/headlesshtml_convert.rb
isodoc-2.5.6 lib/isodoc/headlesshtml_convert.rb
isodoc-2.5.5 lib/isodoc/headlesshtml_convert.rb
isodoc-2.5.4 lib/isodoc/headlesshtml_convert.rb
isodoc-2.5.3 lib/isodoc/headlesshtml_convert.rb
isodoc-2.5.2 lib/isodoc/headlesshtml_convert.rb
isodoc-2.5.1 lib/isodoc/headlesshtml_convert.rb
isodoc-2.5.0 lib/isodoc/headlesshtml_convert.rb
isodoc-2.4.5 lib/isodoc/headlesshtml_convert.rb
isodoc-2.4.4 lib/isodoc/headlesshtml_convert.rb
isodoc-2.4.3 lib/isodoc/headlesshtml_convert.rb
isodoc-2.4.2 lib/isodoc/headlesshtml_convert.rb
isodoc-2.4.1 lib/isodoc/headlesshtml_convert.rb
isodoc-2.4.0 lib/isodoc/headlesshtml_convert.rb
isodoc-2.3.6 lib/isodoc/headlesshtml_convert.rb
isodoc-2.3.5 lib/isodoc/headlesshtml_convert.rb
isodoc-2.3.4.1 lib/isodoc/headlesshtml_convert.rb
isodoc-2.3.4 lib/isodoc/headlesshtml_convert.rb
isodoc-2.3.3 lib/isodoc/headlesshtml_convert.rb