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
81 82 83 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 81 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
58 59 60 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 58 def charset @charset end |
#color ⇒ Color
The inline color property for the cell
157 158 159 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 157 def color @color end |
#condense ⇒ Boolean
The inline condense property for the cell
126 127 128 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 126 def condense @condense end |
#extend ⇒ Boolean
The inline extend property for the cell
135 136 137 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 135 def extend @extend end |
#family ⇒ Integer
The inline family property for the cell 1 Roman 2 Swiss 3 Modern 4 Script 5 Decorative
72 73 74 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 72 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
90 91 92 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 90 def i @i end |
#outline ⇒ Boolean
The inline outline property for the cell
108 109 110 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 108 def outline @outline end |
#scheme ⇒ Symbol
The inline scheme property for the cell this must be one of [:none, major, minor]
187 188 189 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 187 def scheme @scheme end |
#shadow ⇒ Boolean
The inline shadow property for the cell
117 118 119 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 117 def shadow @shadow end |
#strike ⇒ Boolean
The inline strike property for the cell
99 100 101 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 99 def strike @strike end |
#sz ⇒ Inteter
The inline sz property for the cell
166 167 168 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 166 def sz @sz end |
#u ⇒ Boolean, String
true is for backwards compatibility and is reassigned to :single
The inline underline property for the cell. It must be one of :none, :single, :double, :singleAccounting, :doubleAccounting, true
147 148 149 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 147 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]
176 177 178 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 176 def vertAlign @vertAlign end |
Instance Method Details
#autowidth(widtharray) ⇒ Array
Tries to work out the width of the longest line in the run
198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 198 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
218 219 220 221 222 223 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 218 def set_run_style(validator, attr, value) return unless INLINE_STYLES.include?(attr.to_sym) Axlsx.send(validator, value) unless validator.nil? instance_variable_set :"@#{attr}", value end |
#to_xml_string(str = +'')) ⇒ String
Serializes the RichTextRun
228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 |
# File 'lib/axlsx/workbook/worksheet/rich_text_run.rb', line 228 def to_xml_string(str = +'') valid = RichTextRun::INLINE_STYLES data = Axlsx.instance_values_for(self).transform_keys(&:to_sym) data = data.select { |key, value| !value.nil? && valid.include?(key) } str << '<r><rPr>' data.each do |key, val| case key when :font_name str << '<rFont val="' << font_name << '"/>' when :color str << val.to_xml_string else str << '<' << key.to_s << ' val="' << xml_value(val) << '"/>' 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 |