# frozen_string_literal: true module Axlsx # A Title stores information about the title of a chart class Title # The text to be shown. Setting this property directly with a string will remove the cell reference. # @return [String] attr_reader :text # Text size property # @return [String] attr_reader :text_size # The cell that holds the text for the title. Setting this property will automatically update the text attribute. # @return [Cell] attr_reader :cell # Creates a new Title object # @param [String, Cell] title The cell or string to be used for the chart's title 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 # @see text def text=(v) DataTypeValidator.validate 'Title.text', String, v @text = v @cell = nil end # @see text_size def text_size=(v) DataTypeValidator.validate 'Title.text_size', String, v @text_size = v @cell = nil end # @see cell def cell=(v) DataTypeValidator.validate 'Title.text', Cell, v @cell = v @text = v.value.to_s end # 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). # # @return [Boolean] def empty? @text.empty? && @cell.nil? end # Not implemented at this time. # def layout=(v) DataTypeValidator.validate 'Title.layout', Layout, v; @layout = v; end # def overlay=(v) Axlsx::validate_boolean v; @overlay=v; end # def spPr=(v) DataTypeValidator.validate 'Title.spPr', SpPr, v; @spPr = v; end # Serializes the object # @param [String] str # @return [String] def to_xml_string(str = +'') str << '' unless empty? clean_value = Axlsx.trust_input ? @text.to_s : ::CGI.escapeHTML(Axlsx.sanitize(@text.to_s)) str << '' if @cell.is_a?(Cell) str << '' str << '' << Axlsx.cell_range([@cell]) << '' str << '' str << '' str << '' str << '' << clean_value << '' str << '' str << '' str << '' else str << '' str << '' str << '' str << '' str << '' str << '' str << '' << clean_value << '' str << '' str << '' str << '' end str << '' end str << '' str << '' str << '' end end end