lib/isodoc.rb in isodoc-0.4.5 vs lib/isodoc.rb in isodoc-0.5.5

- old
+ new

@@ -21,10 +21,11 @@ require_relative "isodoc/table" require_relative "isodoc/inline" require_relative "isodoc/notes" require_relative "isodoc/xref_gen" require_relative "isodoc/html" +require_relative "isodoc/i18n" require "pp" module IsoDoc class Convert @@ -34,19 +35,25 @@ # header: Header file for Word # htmlcoverpage: Cover page for HTML # wordcoverpage: Cover page for Word # htmlintropage: Introductory page for HTML # wordintropage: Introductory page for Word + # i18nyaml: YAML file for internationalisation of text + # ulstyle: list style in Word CSS for unordered lists + # olstyle: list style in Word CSS for ordered lists def initialize(options) @htmlstylesheet = options[:htmlstylesheet] @wordstylesheet = options[:wordstylesheet] @standardstylesheet = options[:standardstylesheet] @header = options[:header] @htmlcoverpage = options[:htmlcoverpage] @wordcoverpage = options[:wordcoverpage] @htmlintropage = options[:htmlintropage] @wordintropage = options[:wordintropage] + @i18nyaml = options[:i18nyaml] + @ulstyle = options[:ulstyle] + @olstyle = options[:olstyle] @termdomain = "" @termexample = false @note = false @sourcecode = false @anchors = {} @@ -57,22 +64,44 @@ @in_footnote = false @in_comment = false @in_table = false @in_figure = false @seen_footnote = Set.new + @c = HTMLEntities.new + @openmathdelim = "`" + @closemathdelim = "`" + @lang = "en" + @script = "Latn" end - def convert(filename) - docxml = Nokogiri::XML(File.read(filename)) - filename, dir = init_file(filename) - docxml.root.default_namespace = "" - result = noko do |xml| + def convert1(docxml, filename, dir) + noko do |xml| xml.html do |html| html.parent.add_namespace("epub", "http://www.idpf.org/2007/ops") html_header(html, docxml, filename, dir) make_body(html, docxml) end end.join("\n") + end + + def convert_init(file, filename, debug) + docxml = Nokogiri::XML(file) + filename, dir = init_file(filename, debug) + docxml.root.default_namespace = "" + i18n_init(docxml&.at(ns("//bibdata/language"))&.text || "en", + docxml&.at(ns("//bibdata/script"))&.text || "Latn") + [docxml, filename, dir] + end + + def convert(filename, debug = false) + convert_file(File.read(filename), filename, debug) + end + + def convert_file(file, filename, debug) + @openmathdelim, @closemathdelim = extract_delims(file) + docxml, filename, dir = convert_init(file, filename, debug) + result = convert1(docxml, filename, dir) + return result if debug postprocess(result, filename, dir) end end end