Class: Spreadsheet::Format
- Inherits:
-
Object
- Object
- Spreadsheet::Format
- Defined in:
- lib/spreadsheet/format.rb
Overview
Formatting data
Direct Known Subclasses
Instance Attribute Summary collapse
-
#font ⇒ Object
Returns the value of attribute font.
-
#name ⇒ Object
Returns the value of attribute name.
-
#number_format ⇒ Object
Returns the value of attribute number_format.
-
#pattern ⇒ Object
Returns the value of attribute pattern.
-
#rotation ⇒ Object
Text rotation.
-
#used_merge ⇒ Object
Returns the value of attribute used_merge.
Instance Method Summary collapse
-
#align=(location) ⇒ Object
Combined method for both horizontal and vertical alignment.
-
#border ⇒ Object
Returns an Array containing the line styles of the four borders: bottom, top, right, left.
-
#border=(style) ⇒ Object
Set same line style on all four borders at once (left, right, top, bottom).
-
#border_color ⇒ Object
Returns an Array containing the colors of the four borders: bottom, top, right, left.
-
#border_color=(color) ⇒ Object
Set all four border colors to color (left, right, top, bottom).
-
#bottom_color ⇒ Object
Color attributes.
-
#center_across! ⇒ Object
(also: #merge!)
Backward compatibility method.
-
#cross_down ⇒ Object
- You can set the following boolean attributes: #cross_down
-
Draws a Line from the top-left to the bottom-right corner of a cell.
-
#date? ⇒ Boolean
Is the cell formatted as a Date?.
-
#date_or_time? ⇒ Boolean
Is the cell formatted as a Date or Time?.
-
#datetime? ⇒ Boolean
Is the cell formatted as a DateTime?.
-
#horizontal_align ⇒ Object
Horizontal alignment Valid values: :default, :left, :center, :right, :fill, :justify, :merge, :distributed Default: :default.
-
#indent_level ⇒ Object
(also: #indent)
Indentation level.
-
#initialize(opts = {}) {|_self| ... } ⇒ Format
constructor
A new instance of Format.
-
#matches_format?(name) ⇒ Boolean
Does the cell match a particular preset format?.
-
#number? ⇒ Boolean
Is the cell formatted as a number?.
-
#text_direction ⇒ Object
(also: #reading_order)
Text direction Valid values: :context, :left_to_right, :right_to_left Default: :context.
-
#time? ⇒ Boolean
Is the cell formatted as a Time?.
- #update_format(opts = {}) ⇒ Object
-
#vertical_align ⇒ Object
Vertical alignment Valid values: :bottom, :top, :middle, :justify, :distributed Default: :bottom.
Methods included from Datatypes
Methods included from Compatibility
Constructor Details
#initialize(opts = {}) {|_self| ... } ⇒ Format
Returns a new instance of Format.
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/spreadsheet/format.rb', line 91 def initialize opts = {} @font = Font.new client("Arial", "UTF-8"), family: :swiss @number_format = client "GENERAL", "UTF-8" @rotation = 0 @pattern = 0 @bottom_color = :black @top_color = :black @left_color = :black @right_color = :black @diagonal_color = :black @pattern_fg_color = :border @pattern_bg_color = :pattern_bg @regexes = { date: Regexp.new(client("[YMD]|d{2}|m{3}|y{2}", "UTF-8")), date_or_time: Regexp.new(client("[hmsYMD]", "UTF-8")), datetime: Regexp.new(client("([YMD].*[HS])|([HS].*[YMD])", "UTF-8")), time: Regexp.new(client("[hms]", "UTF-8")), number: Regexp.new(client("([#]|0+)", "UTF-8")), locale: Regexp.new(client(/\A\[\$-\S+\]/.to_s, "UTF-8")) } # Temp code to prevent merged formats in non-merged cells. @used_merge = 0 update_format(opts) yield self if block_given? end |
Instance Attribute Details
#font ⇒ Object
Returns the value of attribute font.
87 88 89 |
# File 'lib/spreadsheet/format.rb', line 87 def font @font end |
#name ⇒ Object
Returns the value of attribute name.
87 88 89 |
# File 'lib/spreadsheet/format.rb', line 87 def name @name end |
#number_format ⇒ Object
Returns the value of attribute number_format.
87 88 89 |
# File 'lib/spreadsheet/format.rb', line 87 def number_format @number_format end |
#pattern ⇒ Object
Returns the value of attribute pattern.
87 88 89 |
# File 'lib/spreadsheet/format.rb', line 87 def pattern @pattern end |
#rotation ⇒ Object
Text rotation
90 91 92 |
# File 'lib/spreadsheet/format.rb', line 90 def rotation @rotation end |
#used_merge ⇒ Object
Returns the value of attribute used_merge.
87 88 89 |
# File 'lib/spreadsheet/format.rb', line 87 def used_merge @used_merge end |
Instance Method Details
#align=(location) ⇒ Object
Combined method for both horizontal and vertical alignment. Sets the first valid value (e.g. Format#align = :justify only sets the horizontal alignment. Use one of the aliases prefixed with :v if you need to disambiguate.)
This is essentially a backward-compatibility method and may be removed at some point in the future.
135 136 137 138 139 140 141 142 143 |
# File 'lib/spreadsheet/format.rb', line 135 def align= location self.horizontal_align = location rescue ArgumentError self.vertical_align = begin location rescue ArgumentError end end |
#border ⇒ Object
Returns an Array containing the line styles of the four borders: bottom, top, right, left
148 149 150 |
# File 'lib/spreadsheet/format.rb', line 148 def border [bottom, top, right, left] end |
#border=(style) ⇒ Object
Set same line style on all four borders at once (left, right, top, bottom)
154 155 156 |
# File 'lib/spreadsheet/format.rb', line 154 def border=(style) [:bottom=, :top=, :right=, :left=].each { |writer| send writer, style } end |
#border_color ⇒ Object
Returns an Array containing the colors of the four borders: bottom, top, right, left
161 162 163 |
# File 'lib/spreadsheet/format.rb', line 161 def border_color [@bottom_color, @top_color, @right_color, @left_color] end |
#border_color=(color) ⇒ Object
Set all four border colors to color (left, right, top, bottom)
167 168 169 170 171 |
# File 'lib/spreadsheet/format.rb', line 167 def border_color=(color) [:bottom_color=, :top_color=, :right_color=, :left_color=].each do |writer| send writer, color end end |
#bottom_color ⇒ Object
Color attributes
52 53 54 |
# File 'lib/spreadsheet/format.rb', line 52 colors :bottom_color, :top_color, :left_color, :right_color, :pattern_fg_color, :pattern_bg_color, :diagonal_color |
#center_across! ⇒ Object Also known as: merge!
Backward compatibility method. May disappear at some point in the future.
191 192 193 |
# File 'lib/spreadsheet/format.rb', line 191 def center_across! self.horizontal_align = :merge end |
#cross_down ⇒ Object
You can set the following boolean attributes:
- #cross_down
-
Draws a Line from the top-left to the bottom-right corner of a cell.
- #cross_up
-
Draws a Line from the bottom-left to the top-right corner of a cell.
- #hidden
-
The cell is hidden.
- #locked
-
The cell is locked.
- #merge_range
-
The cell is in a merged range.
- #shrink
-
Shrink the contents to fit the cell.
- #text_justlast
-
Force the last line of a cell to be justified. This probably makes sense if horizontal_align = :justify
- #left
-
Apply a border style to the left of the cell.
- #right
-
Apply a border style to the right of the cell.
- #top
-
Apply a border style at the top of the cell.
- #bottom
-
Apply a border style at the bottom of the cell.
- #rotation_stacked
-
Characters in the cell are stacked on top of each other. Excel will ignore other rotation values if this is set.
31 32 33 |
# File 'lib/spreadsheet/format.rb', line 31 boolean :cross_down, :cross_up, :hidden, :locked, :merge_range, :shrink, :text_justlast, :text_wrap, :rotation_stacked |
#date? ⇒ Boolean
Is the cell formatted as a Date?
197 198 199 |
# File 'lib/spreadsheet/format.rb', line 197 def date? !number? && matches_format?(:date) end |
#date_or_time? ⇒ Boolean
Is the cell formatted as a Date or Time?
203 204 205 |
# File 'lib/spreadsheet/format.rb', line 203 def date_or_time? !number? && matches_format?(:date_or_time) end |
#datetime? ⇒ Boolean
Is the cell formatted as a DateTime?
209 210 211 |
# File 'lib/spreadsheet/format.rb', line 209 def datetime? !number? && matches_format?(:datetime) end |
#horizontal_align ⇒ Object
Horizontal alignment Valid values: :default, :left, :center, :right, :fill, :justify, :merge,
:distributed
Default: :default
74 75 76 77 78 |
# File 'lib/spreadsheet/format.rb', line 74 enum :horizontal_align, :default, :left, :center, :right, :fill, :justify, :merge, :distributed, center: :centre, merge: [:center_across, :centre_across], distributed: :equal_space |
#indent_level ⇒ Object Also known as: indent
Indentation level
66 |
# File 'lib/spreadsheet/format.rb', line 66 enum :indent_level, 0, Integer |
#matches_format?(name) ⇒ Boolean
Does the cell match a particular preset format?
227 228 229 230 231 232 |
# File 'lib/spreadsheet/format.rb', line 227 def matches_format?(name) # Excel number formats may optionally include a locale identifier like this: # [$-409] format = @number_format.to_s.sub(@regexes[:locale], "") !!@regexes[name].match(format) end |
#number? ⇒ Boolean
Is the cell formatted as a number?
221 222 223 |
# File 'lib/spreadsheet/format.rb', line 221 def number? matches_format?(:number) end |
#text_direction ⇒ Object Also known as: reading_order
Text direction Valid values: :context, :left_to_right, :right_to_left Default: :context
59 60 61 |
# File 'lib/spreadsheet/format.rb', line 59 enum :text_direction, :context, :left_to_right, :right_to_left, left_to_right: [:ltr, :l2r], right_to_left: [:rtl, :r2l] |
#time? ⇒ Boolean
Is the cell formatted as a Time?
215 216 217 |
# File 'lib/spreadsheet/format.rb', line 215 def time? !number? && matches_format?(:time) end |
#update_format(opts = {}) ⇒ Object
119 120 121 122 123 124 125 |
# File 'lib/spreadsheet/format.rb', line 119 def update_format(opts = {}) opts.each do |attribute, value| writer = "#{attribute}=" @font.respond_to?(writer) ? @font.send(writer, value) : send(writer, value) end self end |
#vertical_align ⇒ Object
Vertical alignment Valid values: :bottom, :top, :middle, :justify, :distributed Default: :bottom
83 84 85 86 |
# File 'lib/spreadsheet/format.rb', line 83 enum :vertical_align, :bottom, :top, :middle, :justify, :distributed, distributed: [:vdistributed, :vequal_space, :equal_space], justify: :vjustify, middle: [:vcenter, :vcentre, :center, :centre] |