class OoxmlParser::RunProperties
Data about `rPr` object
Attributes
@return [Symbol] baseline of run
@return [Symbol] caps data
@return [RunSpacing] get color
@return [True, False] is text emboss
@return [Color, DocxColorScheme] color of run
@return [string] name of font
@return [Float] font size
@return [FontStyle] font style of run
@return [Hyperlink] hyperlink of run
@return [ValuedChild] language property
@return [Outline] outline data
@return [Position] position property
@return [True, False] is text rtl
@return [RunStyle] run style
@return [Shade] shade property
@return [True, False] is text shadow
@return [Size] get run size
@return [OoxmlSize] space size
@return [RunSpacing] get run spacing
@return [True, False] is text vanish
@return [Symbol] vertical align data
Public Class Methods
OoxmlParser::OOXMLDocumentObject::new
# File lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb, line 55 def initialize(params = {}) @font_name = params.fetch(:font_name, '') @font_style = FontStyle.new @baseline = :baseline super(parent: params[:parent]) end
Public Instance Methods
Parse RunProperties
object @param node [Nokogiri::XML:Element] node to parse @return [RunProperties] result of parsing
# File lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb, line 65 def parse(node) @font_style = root_object.default_font_style.dup node.attributes.each do |key, value| case key when 'sz' @font_size = value.value.to_f / 100.0 when 'spc' @space = OoxmlSize.new(value.value.to_f, :one_100th_point) when 'b' @font_style.bold = option_enabled?(node, 'b') when 'i' @font_style.italic = option_enabled?(node, 'i') when 'u' @font_style.underlined = Underline.new(parent: self).parse(value.value) when 'strike' @font_style.strike = value_to_symbol(value) when 'baseline' case value.value.to_i when -25_000, -30_000 @baseline = :subscript when 30_000 @baseline = :superscript when 0 @baseline = :baseline end when 'cap' @caps = value.value.to_sym end end node.xpath('*').each do |node_child| case node_child.name when 'sz' @size = Size.new.parse(node_child) when 'shadow' @shadow = option_enabled?(node_child) when 'emboss' @emboss = option_enabled?(node_child) when 'vanish' @vanish = option_enabled?(node_child) when 'rtl' @rtl = option_enabled?(node_child) when 'spacing' @spacing = RunSpacing.new(parent: self).parse(node_child) when 'color' @color = OoxmlColor.new(parent: self).parse(node_child) when 'solidFill' @font_color = Color.new(parent: self).parse_color(node_child.xpath('*').first) when 'latin' @font_name = node_child.attribute('typeface').value when 'b' @font_style.bold = option_enabled?(node_child) when 'i' @font_style.italic = option_enabled?(node_child, 'i') when 'u' @font_style.underlined = Underline.new(:single) when 'vertAlign' @vertical_align = node_child.attribute('val').value.to_sym when 'rFont' @font_name = node_child.attribute('val').value when 'rFonts' @font_name = node_child.attribute('ascii').value if node_child.attribute('ascii') when 'strike' @font_style.strike = option_enabled?(node_child) when 'hlinkClick' @hyperlink = Hyperlink.new(parent: self).parse(node_child) when 'ln' @outline = Outline.new(parent: self).parse(node_child) when 'lang' @language = ValuedChild.new(:string, parent: self).parse(node_child) when 'position' @position = Position.new(parent: self).parse(node_child) when 'shd' @shade = Shade.new(parent: self).parse(node_child) when 'rStyle' @run_style = RunStyle.new(parent: self).parse(node_child) end end @font_color = DocxColorScheme.new(parent: self).parse(node) @font_name = root_object.default_font_typeface if @font_name.empty? @font_size ||= root_object.default_font_size self end