class OoxmlParser::RunProperties

Data about `rPr` object

Attributes

baseline[R]

@return [Symbol] baseline of run

caps[R]

@return [Symbol] caps data

color[RW]

@return [RunSpacing] get color

emboss[R]

@return [True, False] is text emboss

font_color[R]

@return [Color, DocxColorScheme] color of run

font_name[R]

@return [string] name of font

font_size[R]

@return [Float] font size

font_style[RW]

@return [FontStyle] font style of run

language[R]

@return [ValuedChild] language property

outline[R]

@return [Outline] outline data

position[RW]

@return [Position] position property

rtl[R]

@return [True, False] is text rtl

run_style[RW]

@return [RunStyle] run style

shade[RW]

@return [Shade] shade property

shadow[R]

@return [True, False] is text shadow

size[RW]

@return [Size] get run size

space[R]

@return [OoxmlSize] space size

spacing[RW]

@return [RunSpacing] get run spacing

vanish[R]

@return [True, False] is text vanish

vertical_align[R]

@return [Symbol] vertical align data

Public Class Methods

new(params = {}) click to toggle source
Calls superclass method 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(node) click to toggle source

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