class OoxmlParser::Matrix

Class for ‘m’ data

Attributes

rows[RW]

Public Class Methods

new(parent: nil) click to toggle source
Calls superclass method OoxmlParser::OOXMLDocumentObject::new
# File lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/docx_formula/matrix.rb, line 9
def initialize(parent: nil)
  @rows = []
  super
end

Public Instance Methods

parse(node) click to toggle source

Parse Matrix object @param node [Nokogiri::XML:Element] node to parse @return [Matrix] result of parsing

# File lib/ooxml_parser/docx_parser/document_structure/docx_paragraph/docx_formula/matrix.rb, line 17
def parse(node)
  columns_count = 1
  j = 0
  node.xpath('m:mPr').each do |m_pr|
    m_pr.xpath('m:mcs').each do |mcs|
      mcs.xpath('m:mc').each do |mc|
        mc.xpath('m:mcPr').each do |mc_pr|
          mc_pr.xpath('m:count').each do |count|
            count_object = ValuedChild.new(:integer, parent: self).parse(count)
            columns_count = count_object.value
          end
        end
      end
    end
  end

  node.xpath('m:mr').each do |mr|
    i = 0
    @rows << MatrixRow.new(columns_count, parent: self)
    mr.xpath('m:e').each do |e|
      @rows[j].columns[i] = DocxFormula.new(parent: self).parse(e)
      i += 1
    end
    j += 1
  end

  self
end