# frozen_string_literal: true

require_relative 'paragraph_run/run_properties'
require_relative 'paragraph_run/text'
module OoxmlParser
  # Class for parsing `r` tags
  class ParagraphRun < OOXMLDocumentObject
    attr_accessor :properties, :text
    # @return [Text] text of run
    attr_reader :t
    # @return [Tab] tab of paragraph
    attr_reader :tab

    def initialize(properties = RunProperties.new, text = '', parent: nil)
      @properties = properties
      @text = text
      super(parent: parent)
    end

    # Parse ParagraphRun object
    # @param node [Nokogiri::XML:Element] node to parse
    # @return [ParagraphRun] result of parsing
    def parse(node)
      node.xpath('*').each do |node_child|
        case node_child.name
        when 'rPr'
          @properties = RunProperties.new(parent: self).parse(node_child)
        when 't'
          @t = Text.new(parent: self).parse(node_child)
          @text = t.text
        when 'tab'
          @tab = Tab.new(parent: self).parse(node_child)
        end
      end
      self
    end

    # @return [True, False] is current run empty
    def empty?
      text.empty?
    end

    # @return [String] instruction applied to paragraph
    def instruction
      parent.instruction
    end

    # @return [True, False] is page number applyed
    def page_number
      parent.page_numbering?
    end

    # @return [Hyperlink] link of run
    def link
      parent.parent.hyperlink
    end

    extend Gem::Deprecate
    deprecate :instruction, 'parent.instruction', 2020, 1
    deprecate :page_number, 'parent.page_numbering?', 2020, 1
    deprecate :link, 'parent.parent.hyperlink', 2020, 1
  end
end
