summaryrefslogtreecommitdiffhomepage
path: root/lib/axlsx/workbook/worksheet/border_creator.rb
diff options
context:
space:
mode:
authorWeston Ganger <[email protected]>2022-10-12 23:02:49 -0700
committerWeston Ganger <[email protected]>2022-10-12 23:10:08 -0700
commit28d59a1dba55a9d98ceed26ac3bed6267cf18481 (patch)
tree5b05b8926dd301f7bf0e714df848a5a209653348 /lib/axlsx/workbook/worksheet/border_creator.rb
parent56f0977033d87c29fbcb5a20f0bd61d8fe3fb1ec (diff)
downloadcaxlsx-28d59a1dba55a9d98ceed26ac3bed6267cf18481.tar.gz
caxlsx-28d59a1dba55a9d98ceed26ac3bed6267cf18481.zip
Resolve all TODOs
Diffstat (limited to 'lib/axlsx/workbook/worksheet/border_creator.rb')
-rw-r--r--lib/axlsx/workbook/worksheet/border_creator.rb50
1 files changed, 22 insertions, 28 deletions
diff --git a/lib/axlsx/workbook/worksheet/border_creator.rb b/lib/axlsx/workbook/worksheet/border_creator.rb
index a38e78b3..a4146ee1 100644
--- a/lib/axlsx/workbook/worksheet/border_creator.rb
+++ b/lib/axlsx/workbook/worksheet/border_creator.rb
@@ -8,49 +8,43 @@ module Axlsx
@worksheet = worksheet
@cells = cells
if args.is_a?(Hash)
- @edges = args[:edges] || :all
+ @edges = args[:edges] || Axlsx::Border::EDGES
@width = args[:style] || :thin
@color = args[:color] || '000000'
else
- @edges = args || :all
+ @edges = args || Axlsx::Border::Edges
@width = :thin
@color = '000000'
end
- end
-
- def draw
- selected_edges(edges).each { |edge| add_border(edge, width, color) }
- end
-
- private
- def selected_edges(edges)
- all_edges = [:top, :right, :bottom, :left]
- if edges == :all
- all_edges
- elsif edges.is_a?(Array) && edges - all_edges == []
- edges.uniq
+ if @edges == :all
+ @edges = Axlsx::Border::EDGES
+ elsif @edges.is_a?(Array)
+ @edges = (@edges.map(&:to_sym).uniq & Axlsx::Border::EDGES)
else
- []
+ @edges = []
end
end
- def add_border(position, width, color)
- style = {
- border: {
- style: width, color: color, edges: [position.to_sym]
- }
- }
- worksheet.add_style border_cells[position.to_sym], style
+ def draw
+ @edges.each do |edge|
+ worksheet.add_style(
+ border_cells[edge],
+ {
+ border: {style: @width, color: @color, edges: [edge]}
+ }
+ )
+ end
end
+ private
+
def border_cells
- # example range "B2:D5"
{
- top: "#{first_cell}:#{last_col}#{first_row}", # "B2:D2"
- right: "#{last_col}#{first_row}:#{last_cell}", # "D2:D5"
- bottom: "#{first_col}#{last_row}:#{last_cell}", # "B5:D5"
- left: "#{first_cell}:#{first_col}#{last_row}" # "B2:B5"
+ top: "#{first_cell}:#{last_col}#{first_row}",
+ right: "#{last_col}#{first_row}:#{last_cell}",
+ bottom: "#{first_col}#{last_row}:#{last_cell}",
+ left: "#{first_cell}:#{first_col}#{last_row}",
}
end