summaryrefslogtreecommitdiffhomepage
path: root/lib/axlsx/workbook/worksheet/border_creator.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/axlsx/workbook/worksheet/border_creator.rb')
-rw-r--r--lib/axlsx/workbook/worksheet/border_creator.rb50
1 files changed, 28 insertions, 22 deletions
diff --git a/lib/axlsx/workbook/worksheet/border_creator.rb b/lib/axlsx/workbook/worksheet/border_creator.rb
index a1b063e7..bbd30473 100644
--- a/lib/axlsx/workbook/worksheet/border_creator.rb
+++ b/lib/axlsx/workbook/worksheet/border_creator.rb
@@ -2,38 +2,44 @@
module Axlsx
class BorderCreator
- attr_reader :worksheet, :cells, :edges, :width, :color
-
- def initialize(worksheet, cells, args=nil)
+ def initialize(worksheet:, cells:, edges: nil, style: nil, color: nil)
@worksheet = worksheet
- @cells = cells
- if args.is_a?(Hash)
- @edges = args[:edges] || Axlsx::Border::EDGES
- @width = args[:style] || :thin
- @color = args[:color] || '000000'
- else
- @edges = args || Axlsx::Border::EDGES
- @width = :thin
- @color = '000000'
- end
+ @cells = cells
+
+ @edges = edges || :all
+ @style = style || :thin
+ @color = color || "000000"
if @edges == :all
@edges = Axlsx::Border::EDGES
- elsif @edges.is_a?(Array)
- @edges = (@edges.map(&:to_sym).uniq & Axlsx::Border::EDGES)
+ elsif [email protected]_a?(Array)
+ raise ArgumentError.new("Invalid edges provided, #{@edges}")
else
- @edges = []
+ @edges = @edges.map{|x| x&.to_sym}.uniq
+
+ if !(@edges - Axlsx::Border::EDGES).empty?
+ raise ArgumentError.new("Invalid edges provided, #{edges}")
+ end
end
end
def draw
- @edges.each do |edge|
- worksheet.add_style(
- border_cells[edge],
+ if @cells.size == 1
+ @worksheet.add_style(
+ first_cell,
{
- border: {style: @width, color: @color, edges: [edge]}
+ border: {style: @style, color: @color, edges: @edges}
}
)
+ else
+ @edges.each do |edge|
+ @worksheet.add_style(
+ border_cells[edge],
+ {
+ border: {style: @style, color: @color, edges: [edge]}
+ }
+ )
+ end
end
end
@@ -49,11 +55,11 @@ module Axlsx
end
def first_cell
- @first_cell ||= cells.first.r
+ @first_cell ||= @cells.first.r
end
def last_cell
- @last_cell ||= cells.last.r
+ @last_cell ||= @cells.last.r
end
def first_row