module IsoDoc::WordFunction::Comments

Constants

COMMENT_IN_COMMENT_LIST1
COMMENT_TARGET_XREFS1

Public Instance Methods

comment_attributes(docxml, x) click to toggle source
# File lib/isodoc/word_function/comments.rb, line 85
def comment_attributes(docxml, x)
  fromlink = docxml.at("//*[@id='#{x['from']}']")
  return(nil) if fromlink.nil?
  tolink = docxml.at("//*[@id='#{x['to']}']") || fromlink
  target = docxml.at("//*[@id='#{x['target']}']")
  { from: fromlink, to: tolink, target: target }
end
comment_cleanup(docxml) click to toggle source
# File lib/isodoc/word_function/comments.rb, line 59
def comment_cleanup(docxml)
  move_comment_link_to_from(docxml)
  reorder_comments_by_comment_link(docxml)
  embed_comment_in_comment_list(docxml)
end
comments(div) click to toggle source
# File lib/isodoc/word_function/comments.rb, line 8
def comments(div)
  return if @comments.empty?
  div.div **{ style: "mso-element:comment-list" } do |div1|
    @comments.each { |fn| div1.parent << fn }
  end
end
embed_comment_in_comment_list(docxml) click to toggle source
# File lib/isodoc/word_function/comments.rb, line 69
def embed_comment_in_comment_list(docxml)
  #docxml.xpath(COMMENT_IN_COMMENT_LIST).each do |x|
  docxml.xpath(COMMENT_IN_COMMENT_LIST1).each do |x|
    n = x.next_element
    n&.children&.first&.add_previous_sibling(x.remove)
  end
  docxml
end
get_comments_from_text(docxml, link_order) click to toggle source
# File lib/isodoc/word_function/comments.rb, line 122
def get_comments_from_text(docxml, link_order)
  comments = []
  docxml.xpath("//div[@style='mso-element:comment']").each do |c|
    next unless c["id"] && !link_order[c["id"]].nil?
    comments << { text: c.remove.to_s, id: c["id"] }
  end
  comments.sort! { |a, b| link_order[a[:id]] <=> link_order[b[:id]] }
  # comments
end
in_comment() click to toggle source
# File lib/isodoc/word_function/comments.rb, line 4
def in_comment
  @in_comment
end
insert_comment_cont(from, to, target) click to toggle source
# File lib/isodoc/word_function/comments.rb, line 102
def insert_comment_cont(from, to, target)
  # includes_to = from.at(".//*[@id='#{to}']")
  while !from.nil? && from["id"] != to
    following = from.xpath("./following::*")
    (from = following.shift) && incl_to = from.at(".//*[@id='#{to}']")
    while !incl_to.nil? && !from.nil? && skip_comment_wrap(from)
      (from = following.shift) && incl_to = from.at(".//*[@id='#{to}']")
    end
    wrap_comment_cont(from, target) if !from.nil?
  end
end
make_comment_target(out) click to toggle source
# File lib/isodoc/word_function/comments.rb, line 41
def make_comment_target(out)
  out.span **{ style: "MsoCommentReference" } do |s1|
    s1.span **{ lang: "EN-GB", style: "font-size:9.0pt" } do |s2|
      s2.span **{ style: "mso-special-character:comment" }
    end
  end
end
make_comment_text(node, fn) click to toggle source
# File lib/isodoc/word_function/comments.rb, line 49
def make_comment_text(node, fn)
  noko do |xml|
    xml.div **{ style: "mso-element:comment", id: fn } do |div|
      div.span **{ style: %{mso-comment-author:"#{node['reviewer']}"} }
      make_comment_target(div)
      node.children.each { |n| parse(n, div) }
    end
  end.join("\n")
end
review_note_parse(node, out) click to toggle source
# File lib/isodoc/word_function/comments.rb, line 15
def review_note_parse(node, out)
  fn = @comments.length + 1
  make_comment_link(out, fn, node)
  @in_comment = true
  @comments << make_comment_text(node, fn)
  @in_comment = false
end
skip_comment_wrap(from) click to toggle source
# File lib/isodoc/word_function/comments.rb, line 98
def skip_comment_wrap(from)
  from["style"] != "mso-special-character:comment"
end
wrap_comment_cont(from, target) click to toggle source
# File lib/isodoc/word_function/comments.rb, line 93
def wrap_comment_cont(from, target)
  s = from.replace("<span style='mso-comment-continuation:#{target}'>")
  s.first.children = from
end