diff --git a/lib/isodoc/word_function/inline.rb b/lib/isodoc/word_function/inline.rb index 01153d78..1899c1b0 100644 --- a/lib/isodoc/word_function/inline.rb +++ b/lib/isodoc/word_function/inline.rb @@ -42,6 +42,15 @@ def imgsrc(node) end def image_parse(node, out, caption) + emf_attributes(node) + attrs = { src: imgsrc(node), + height: node["height"], alt: node["alt"], + title: node["title"], width: node["width"] } + out.img **attr_code(attrs) + image_title_parse(out, caption) + end + + def emf_attributes(node) if emf = node.at(ns("./emf")) node["src"] = emf["src"] node["height"] ||= emf["height"] @@ -49,11 +58,6 @@ def image_parse(node, out, caption) node["mimetype"] = "image/x-emf" node.children.remove end - attrs = { src: imgsrc(node), - height: node["height"], alt: node["alt"], - title: node["title"], width: node["width"] } - out.img **attr_code(attrs) - image_title_parse(out, caption) end def xref_parse(node, out) @@ -73,6 +77,29 @@ def suffix_url(url) url.sub(/#{File.extname(url)}$/, ".doc") end + + def ruby_parse(node, out) + if r = node.at(ns("./rb[ruby]")) + double_ruby = r.at(ns("./ruby/rt")).remove + r.replace(r.at(ns("./ruby/rb"))) + end + out.ruby do |e| + node.children.each { |n| parse(n, e) } + end + double_ruby and out << "(#{double_ruby.text})" + end + + def rt_parse(node, out) + out.rt do |e| + node.children.each { |n| parse(n, e) } + end + end + + def rb_parse(node, out) + out.rb do |e| + node.children.each { |n| parse(n, e) } + end + end end end end diff --git a/spec/isodoc/inline_spec.rb b/spec/isodoc/inline_spec.rb index 9ad0452c..46a13426 100644 --- a/spec/isodoc/inline_spec.rb +++ b/spec/isodoc/inline_spec.rb @@ -1979,7 +1979,6 @@ .convert("test", input, true))).to be_equivalent_to xmlpp(output) end - it "processes ruby markup" do input = <<~INPUT @@ -2029,6 +2028,15 @@ OUTPUT + doc = <<~OUTPUT +
+

Foreword

+

東京とうきょう東京とうきょう東京Tōkyō親友ライバルとうきょうkyōとう(tou)なん(nan) の方角 + たつみ(とう) + プロテゴ(まも)! + プロテゴ(まも)!

+
+ OUTPUT expect(xmlpp(strip_guid(IsoDoc::PresentationXMLConvert .new(presxml_options.merge(output_formats: { html: "html", doc: "doc" })) .convert("test", input, true)) @@ -2037,6 +2045,9 @@ .to be_equivalent_to xmlpp(presxml) expect(xmlpp(IsoDoc::HtmlConvert.new({}) .convert("test", presxml, true))).to be_equivalent_to xmlpp(html) + expect(xmlpp(IsoDoc::WordConvert.new({}) + .convert("test", presxml, true) + .sub(/^.*

.*$}m, ""))) + .to be_equivalent_to xmlpp(doc) end - end