Class: Axlsx::RichTextRun
- Inherits:
-
Object
- Object
- Axlsx::RichTextRun
- Includes:
- OptionsParser
- Defined in:
- lib/axlsx/workbook/worksheet/rich_text_run.rb
Overview
The RichTextRun class creates and self serializing text run.
Constant Summary collapse
- INLINE_STYLES =
A list of allowed inline style attributes used for validation
[:font_name, :charset, :family, :b, :i, :strike, :outline, :shadow, :condense, :extend, :u, :vertAlign, :sz, :color, :scheme].freeze
Instance Attribute Summary collapse
-
#b ⇒ Boolean
The inline bold property for the cell.
-
#cell ⇒ Object
Returns the value of attribute cell.
-
#charset ⇒ String
The inline charset property for the cell As far as I can tell, this is pretty much ignored.
-
#color ⇒ Color
The inline color property for the cell.
-
#condense ⇒ Boolean
The inline condense property for the cell.
-
#extend ⇒ Boolean
The inline extend property for the cell.
-
#family ⇒ Integer
The inline family property for the cell 1 Roman 2 Swiss 3 Modern 4 Script 5 Decorative.
-
#font_name ⇒ String
The inline font_name property for the cell.
-
#i ⇒ Boolean
The inline italic property for the cell.
-
#outline ⇒ Boolean
The inline outline property for the cell.
-
#scheme ⇒ Symbol
The inline scheme property for the cell this must be one of [:none, major, minor].
-
#shadow ⇒ Boolean
The inline shadow property for the cell.
-
#strike ⇒ Boolean
The inline strike property for the cell.
-
#sz ⇒ Inteter
The inline sz property for the cell.
-
#u ⇒ Boolean, String
The inline underline property for the cell.
-
#value ⇒ Object
Returns the value of attribute value.
-
#vertAlign ⇒ Symbol
The inline vertical alignment property for the cell this must be one of [:baseline, :subscript, :superscript].
Instance Method Summary collapse
-
#autowidth(widtharray) ⇒ Array
Tries to work out the width of the longest line in the run.
-
#initialize(value, options = {}) ⇒ RichTextRun
constructor
A new instance of RichTextRun.
-
#set_run_style(validator, attr, value) ⇒ Object
Utility method for setting inline style attributes.
-
#to_xml_string(str = '') ⇒ String
Serializes the RichTextRun.
Methods included from OptionsParser
Constructor Details
#initialize(value, options = {}) ⇒ RichTextRun
Returns a new instance of RichTextRun.
16 17 18 19 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 16 def initialize(value, ={}) self.value = value () end |
Instance Attribute Details
#b ⇒ Boolean
The inline bold property for the cell
74 75 76 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 74 def b @b end |
#cell ⇒ Object
Returns the value of attribute cell.
25 26 27 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 25 def cell @cell end |
#charset ⇒ String
The inline charset property for the cell As far as I can tell, this is pretty much ignored. However, based on the spec it should be one of the following: 0  ANSI_CHARSET 1 DEFAULT_CHARSET 2 SYMBOL_CHARSET 77 MAC_CHARSET 128 SHIFTJIS_CHARSET 129  HANGUL_CHARSET 130  JOHAB_CHARSET 134  GB2312_CHARSET 136  CHINESEBIG5_CHARSET 161  GREEK_CHARSET 162  TURKISH_CHARSET 163  VIETNAMESE_CHARSET 177  HEBREW_CHARSET 178  ARABIC_CHARSET 186  BALTIC_CHARSET 204  RUSSIAN_CHARSET 222  THAI_CHARSET 238  EASTEUROPE_CHARSET 255  OEM_CHARSET
55 56 57 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 55 def charset @charset end |
#color ⇒ Color
The inline color property for the cell
128 129 130 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 128 def color @color end |
#condense ⇒ Boolean
The inline condense property for the cell
104 105 106 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 104 def condense @condense end |
#extend ⇒ Boolean
The inline extend property for the cell
110 111 112 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 110 def extend @extend end |
#family ⇒ Integer
The inline family property for the cell 1 Roman 2 Swiss 3 Modern 4 Script 5 Decorative
66 67 68 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 66 def family @family end |
#font_name ⇒ String
The inline font_name property for the cell
29 30 31 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 29 def font_name @font_name end |
#i ⇒ Boolean
The inline italic property for the cell
80 81 82 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 80 def i @i end |
#outline ⇒ Boolean
The inline outline property for the cell
92 93 94 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 92 def outline @outline end |
#scheme ⇒ Symbol
The inline scheme property for the cell this must be one of [:none, major, minor]
153 154 155 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 153 def scheme @scheme end |
#shadow ⇒ Boolean
The inline shadow property for the cell
98 99 100 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 98 def shadow @shadow end |
#strike ⇒ Boolean
The inline strike property for the cell
86 87 88 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 86 def strike @strike end |
#sz ⇒ Inteter
The inline sz property for the cell
136 137 138 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 136 def sz @sz end |
#u ⇒ Boolean, String
true is for backwards compatability and is reassigned to :single
The inline underline property for the cell. It must be one of :none, :single, :double, :singleAccounting, :doubleAccounting, true
119 120 121 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 119 def u @u end |
#value ⇒ Object
Returns the value of attribute value.
8 9 10 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 8 def value @value end |
#vertAlign ⇒ Symbol
The inline vertical alignment property for the cell this must be one of [:baseline, :subscript, :superscript]
143 144 145 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 143 def vertAlign @vertAlign end |
Instance Method Details
#autowidth(widtharray) ⇒ Array
Tries to work out the width of the longest line in the run
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 163 def autowidth(widtharray) return if value.nil? if styles.cellXfs[style].alignment && styles.cellXfs[style].alignment.wrap_text first = true value.to_s.split(/\r?\n/, -1).each do |line| if first first = false else widtharray << 0 end widtharray[-1] += string_width(line, font_size) end else widtharray[-1] += string_width(value.to_s, font_size) end widtharray end |
#set_run_style(validator, attr, value) ⇒ Object
Utility method for setting inline style attributes
182 183 184 185 186 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 182 def set_run_style(validator, attr, value) return unless INLINE_STYLES.include?(attr.to_sym) Axlsx.send(validator, value) unless validator.nil? self.instance_variable_set :"@#{attr.to_s}", value end |
#to_xml_string(str = '') ⇒ String
Serializes the RichTextRun
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 191 def to_xml_string(str = '') valid = RichTextRun::INLINE_STYLES data = Hash[self.instance_values.map{ |k, v| [k.to_sym, v] }] data = data.select { |key, value| valid.include?(key) && !value.nil? } str << '<r><rPr>' data.keys.each do |key| case key when :font_name str << ('<rFont val="' << font_name << '"/>') when :color str << data[key].to_xml_string else str << ('<' << key.to_s << ' val="' << xml_value(data[key]) << '"/>') end end clean_value = Axlsx::trust_input ? @value.to_s : ::CGI.escapeHTML(Axlsx::sanitize(@value.to_s)) str << ('</rPr><t>' << clean_value << '</t></r>') end |