blob: e1a3ad4b6bffe20f83efb45bb85278b50cd551b7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# frozen_string_literal: true
module Axlsx
# A simple, self serializing class for storing TextRuns
class RichText < SimpleTypedList
# creates a new RichText collection
# @param [String] text -optional The text to use in creating the first RichTextRun
# @param [Object] options -optional The options to use in creating the first RichTextRun
# @yield [RichText] self
def initialize(text = nil, options = {})
super(RichTextRun)
add_run(text, options) unless text.nil?
yield self if block_given?
end
# The cell that owns this RichText collection
attr_reader :cell
# Assign the cell for this RichText collection
# @param [Cell] cell The cell which all RichTextRuns in the collection will belong to
def cell=(cell)
@cell = cell
each { |run| run.cell = cell }
end
# Calculates the longest autowidth of the RichTextRuns in this collection
# @return [Number]
def autowidth
widtharray = [0] # Are arrays the best way of solving this problem?
each { |run| run.autowidth(widtharray) }
widtharray.max
end
# Creates and adds a RichTextRun to this collectino
# @param [String] text The text to use in creating a new RichTextRun
# @param [Object] options The options to use in creating the new RichTextRun
def add_run(text, options = {})
self << RichTextRun.new(text, options)
end
# The RichTextRuns we own
# @return [RichText]
def runs
self
end
# renders the RichTextRuns in this collection
# @param [String] str
# @return [String]
def to_xml_string(str = +'')
each { |run| run.to_xml_string(str) }
str
end
end
end
|