class OoxmlParser::Hyperlink
Class for parsing ‘hlinkClick`, `hyperlink` tags
Attributes
@return [Symbol] type of action
@return [String] value of action link
@return [String] anchor value
@return [Coordinates] coordinates of link
@return [True, False] should click be highlighted
@return [String] id of link
@return [OOXMLDocumentObject] url of hyperlink
@return [OOXMLDocumentObject] url of hyperlink
@return [OOXMLDocumentObject] url of hyperlink
@return [OOXMLDocumentObject] url of hyperlink
@return [Array<ParagraphRun>] run of paragraph
@return [String] tooltip value
@return [OOXMLDocumentObject] url of hyperlink
Public Class Methods
# File lib/ooxml_parser/common_parser/common_data/hyperlink.rb, line 25 def initialize(link = nil, tooltip = nil, coordinates = nil, parent: nil) @url = link @tooltip = tooltip @coordinates = coordinates @runs = [] super(parent: parent) end
Public Instance Methods
Parse Hyperlink
object @param node [Nokogiri::XML:Element] node to parse @return [Hyperlink] result of parsing
# File lib/ooxml_parser/common_parser/common_data/hyperlink.rb, line 44 def parse(node) node.attributes.each do |key, value| case key when 'anchor' @anchor = value.value when 'location' @url = Coordinates.new.parse_string(value.value) when 'id' @id = value.value @url = root_object.get_link_from_rels(@id) unless @id.empty? when 'tooltip' @tooltip = value.value when 'ref' @coordinates = Coordinates.new.parse_string(value.value) when 'action' @action_link = value.value when 'highlightClick' @highlight_click = attribute_enabled?(value) end end node.xpath('*').each do |node_child| case node_child.name when 'r' @runs << ParagraphRun.new(parent: self).parse(node_child) end end case @action_link when 'ppaction://hlinkshowjump?jump=previousslide' @action = :previous_slide when 'ppaction://hlinkshowjump?jump=nextslide' @action = :next_slide when 'ppaction://hlinkshowjump?jump=firstslide' @action = :first_slide when 'ppaction://hlinkshowjump?jump=lastslide' @action = :last_slide when 'ppaction://hlinksldjump' @action = :slide parse_url_for_slide_link else if meaningful_id? @action = :external_link @url = root_object.get_link_from_rels(@id) end end self end
Private Instance Methods
Check if id parameter has any information in it @return [Boolean] Can id be used
# File lib/ooxml_parser/common_parser/common_data/hyperlink.rb, line 97 def meaningful_id? @id && !@id.empty? end
Parse url for slide link
# File lib/ooxml_parser/common_parser/common_data/hyperlink.rb, line 102 def parse_url_for_slide_link return unless meaningful_id? @url = root_object.get_link_from_rels(@id).scan(/\d+/).join.to_i end