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_style[RW]

@return [FontStyle] font style of run

language[R]

@return [ValuedChild] language property

ligatures[R]

@return [ValuedChild] ligatures type

outline[R]

@return [Outline] outline data

position[RW]

@return [Position] position property

raw_node[R]

@return [Nokogiri::XML:Element] raw node value

rtl[R]

@return [True, False] is text rtl

run_fonts[R]

@return [RunFonts] value of RunFonts

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 59
def initialize(params = {})
  @font_name = params.fetch(:font_name, '')
  @font_style = FontStyle.new
  @baseline = :baseline
  super(parent: params[:parent])
end

Public Instance Methods

font_name() click to toggle source

@return [String] name of font

# File lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb, line 151
def font_name
  return @font_name unless @font_name.empty?
  return @run_fonts.ascii if @run_fonts

  root_object.default_font_typeface
end
font_size() click to toggle source

@return [Float] font size

# File lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb, line 146
def font_size
  @font_size ||= root_object.default_font_size
end
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 69
def parse(node)
  @raw_node = 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'
      @baseline = parse_baseline(value)
    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 '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_object = ValuedChild.new(:symbol, parent: self).parse(node_child)
      @vertical_align = @vertical_align_object.value
    when 'rFont'
      @font_name = node_child.attribute('val').value
    when 'rFonts'
      @run_fonts = RunFonts.new(parent: self).parse(node_child)
    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)
    when 'ligatures'
      @ligatures = ValuedChild.new(:symbol, parent: self).parse(node_child)
    end
  end
  @font_color = DocxColorScheme.new(parent: self).parse(node)
  self
end

Private Instance Methods

parse_baseline(value) click to toggle source

@param value [Nokogiri::XML::Attr] nokogiri parameter to parse @return [Symbol] baseline value depending of type

# File lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb, line 162
def parse_baseline(value)
  case value.value.to_i
  when -25_000, -30_000
    :subscript
  when 30_000
    :superscript
  when 0
    :baseline
  end
end