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.
14 15 16 17 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 14 def initialize(value, = {}) self.value = value () end |
Instance Attribute Details
#b ⇒ Boolean
The inline bold property for the cell
75 76 77 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 75 def b @b end |
#cell ⇒ Object
Returns the value of attribute cell.
23 24 25 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 23 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
54 55 56 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 54 def charset @charset end |
#color ⇒ Color
The inline color property for the cell
137 138 139 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 137 def color @color end |
#condense ⇒ Boolean
The inline condense property for the cell
110 111 112 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 110 def condense @condense end |
#extend ⇒ Boolean
The inline extend property for the cell
117 118 119 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 117 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
27 28 29 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 27 def font_name @font_name end |
#i ⇒ Boolean
The inline italic property for the cell
82 83 84 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 82 def i @i end |
#outline ⇒ Boolean
The inline outline property for the cell
96 97 98 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 96 def outline @outline end |
#scheme ⇒ Symbol
The inline scheme property for the cell this must be one of [:none, major, minor]
165 166 167 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 165 def scheme @scheme end |
#shadow ⇒ Boolean
The inline shadow property for the cell
103 104 105 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 103 def shadow @shadow end |
#strike ⇒ Boolean
The inline strike property for the cell
89 90 91 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 89 def strike @strike end |
#sz ⇒ Inteter
The inline sz property for the cell
146 147 148 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 146 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
127 128 129 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 127 def u @u end |
#value ⇒ Object
Returns the value of attribute value.
6 7 8 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 6 def value @value end |
#vertAlign ⇒ Symbol
The inline vertical alignment property for the cell this must be one of [:baseline, :subscript, :superscript]
154 155 156 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 154 def vertAlign @vertAlign end |
Instance Method Details
#autowidth(widtharray) ⇒ Array
Tries to work out the width of the longest line in the run
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 176 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
196 197 198 199 200 201 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 196 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
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 206 def to_xml_string(str = '') valid = RichTextRun::INLINE_STYLES data = Hash[Axlsx.instance_values_for(self).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 |