Class: Axlsx::Title

Inherits:
Object
  • Object
show all
Defined in:
lib/axlsx/drawing/title.rb

Overview

A Title stores information about the title of a chart

Direct Known Subclasses

SeriesTitle

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(title = "", title_size = "") ⇒ Title

Creates a new Title object

Parameters:

  • title (String, Cell) (defaults to: "")

    The cell or string to be used for the chart's title



20
21
22
23
24
25
26
27
28
# File 'lib/axlsx/drawing/title.rb', line 20

def initialize(title = "", title_size = "")
  self.cell = title if title.is_a?(Cell)
  self.text = title.to_s unless title.is_a?(Cell)
  self.text_size = if title_size.to_s.empty?
                     "1600"
                   else
                     title_size.to_s
                   end
end

Instance Attribute Details

#cellCell

The cell that holds the text for the title. Setting this property will automatically update the text attribute.

Returns:



16
17
18
# File 'lib/axlsx/drawing/title.rb', line 16

def cell
  @cell
end

#textString

The text to be shown. Setting this property directly with a string will remove the cell reference.

Returns:

  • (String)


8
9
10
# File 'lib/axlsx/drawing/title.rb', line 8

def text
  @text
end

#text_sizeString

Text size property

Returns:

  • (String)


12
13
14
# File 'lib/axlsx/drawing/title.rb', line 12

def text_size
  @text_size
end

Instance Method Details

#empty?Boolean

Check if the title is empty.

A title is considered empty if it is an empty string. If the title references a cell it is not empty, even if the referenced cell is blank (because the cell’s value could still change later).

Returns:

  • (Boolean)


57
58
59
# File 'lib/axlsx/drawing/title.rb', line 57

def empty?
  @text.empty? && @cell.nil?
end

#to_xml_string(str = +'')) ⇒ String

Serializes the object

Parameters:

  • str (String) (defaults to: +''))

Returns:

  • (String)


69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/axlsx/drawing/title.rb', line 69

def to_xml_string(str = +'')
  str << '<c:title>'
  unless empty?
    clean_value = Axlsx.trust_input ? @text.to_s : ::CGI.escapeHTML(Axlsx.sanitize(@text.to_s))
    str << '<c:tx>'
    if @cell.is_a?(Cell)
      str << '<c:strRef>'
      str << '<c:f>' << Axlsx.cell_range([@cell]) << '</c:f>'
      str << '<c:strCache>'
      str << '<c:ptCount val="1"/>'
      str << '<c:pt idx="0">'
      str << '<c:v>' << clean_value << '</c:v>'
      str << '</c:pt>'
      str << '</c:strCache>'
      str << '</c:strRef>'
    else
      str << '<c:rich>'
      str << '<a:bodyPr/>'
      str << '<a:lstStyle/>'
      str << '<a:p>'
      str << '<a:r>'
      str << '<a:rPr sz="' << @text_size.to_s << '"/>'
      str << '<a:t>' << clean_value << '</a:t>'
      str << '</a:r>'
      str << '</a:p>'
      str << '</c:rich>'
    end
    str << '</c:tx>'
  end
  str << '<c:layout/>'
  str << '<c:overlay val="0"/>'
  str << '</c:title>'
end