axlsx_styler 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2d3232dd2b096374134b17d0580aa8d4b0fdcbd9
4
- data.tar.gz: 9add5f73a45dd461c5b2b2f2edfab0d5a57b828c
3
+ metadata.gz: a78ec129205b19cc466a29461787fcdd8e4d6113
4
+ data.tar.gz: 0c04a30a6c48799392eb765e7fbd67c6236ef294
5
5
  SHA512:
6
- metadata.gz: 04792906e4d28e5c31d7f4e30ca9f1dd9cf598bb10bf05828451a2517b44d3e5afcf72070a0c6beedd13230cddb7f10f19d6a613db94ff05c322ed60997dc6f7
7
- data.tar.gz: 90ad8832f1378f4d78770eb0e7756c7ba0f4db6da1bc159213b15cef47002e7167e5b26053073668fa23ddbcde152bd533e901c8a3310c14aed961e3a1f27efb
6
+ metadata.gz: c280bc771e8bda4131834f6a68502e5ade34ed808b61a996327806927d1467485fd226cebbba347940e97754f894053d15d02cd11b11e0292028197ebe868fdb
7
+ data.tar.gz: 6aca119eb6c65299047e927836c972dcc5252f02bed720bc4a9d7fc6da0bce77e78a560ad74d6efe617076db2881d0627a1217ccd51462e4d9288dc95144f09f
data/README.md CHANGED
@@ -38,10 +38,13 @@ You can also add borders to ranges of cells:
38
38
 
39
39
  ```ruby
40
40
  sheet.add_border 'B2:D5'
41
- sheet.add_border 'B2:D5', [:right]
41
+ sheet.add_border 'B2:D5', [:bottom, :right]
42
+ sheet.add_border 'B2:D5', { edges: [:bottom, :right], style: :thick, color: 'FF0000' }
42
43
  ```
43
44
 
44
- When you are done with styling you just need to run
45
+ Border parameters are optional. The default is to draw a thin black border on all four edges of the selected cell range.
46
+
47
+ The styles are applied with a simple call:
45
48
 
46
49
  ```ruby
47
50
  workbook.apply_styles
@@ -106,7 +109,7 @@ wb.add_worksheet do |sheet|
106
109
  border: { style: :thin, color: border_color, edges: [:top, :right, :bottom] }
107
110
  })
108
111
  sheet.add_row
109
- sheet.add_row(["", "Product", "Category", "Price"],
112
+ sheet.add_row(["", "Product", "Category", "Price"],
110
113
  style: [ nil, top_left_corner, top_edge, top_right_corner ]
111
114
  )
112
115
 
@@ -17,7 +17,7 @@ workbook.add_worksheet do |sheet|
17
17
  sheet.add_style 'B3:D5', bg_color: 'E2F89C'
18
18
  sheet.add_style 'D3:D5', alignment: { horizontal: :left }
19
19
  sheet.add_border 'B2:D5'
20
- sheet.add_border 'B3:D3', [:top]
20
+ sheet.add_border 'B3:D3', [:top], :thick
21
21
  end
22
22
  workbook.apply_styles
23
23
  axlsx.serialize File.expand_path('../../tmp/grocery.xlsx', __FILE__)
@@ -21,13 +21,14 @@ module AxlsxStyler
21
21
  end
22
22
 
23
23
  # Examples:
24
- # add_border 'B2:F8', [:left, :top]
24
+ # add_border 'B2:F8', [:left, :top], :medium, '00330f'
25
+ # add_border 'B2:F8', [:left, :top], :medium
25
26
  # add_border 'C2:G10', [:top]
26
27
  # add_border 'C2:G10'
27
- # @TODO: allow to pass in custom border style
28
- def add_border(cell_ref, edges = :all)
28
+ # add_border 'B2:D5', { style: :thick, color: '00330f', edges: [:left, :right] }
29
+ def add_border(cell_ref, args = :all)
29
30
  cells = self[cell_ref]
30
- BorderCreator.new(self, cells, edges).draw
31
+ BorderCreator.new(self, cells, args).draw
31
32
  end
32
33
  end
33
34
  end
@@ -1,14 +1,22 @@
1
1
  class BorderCreator
2
- attr_reader :worksheet, :cells, :edges
2
+ attr_reader :worksheet, :cells, :edges, :width, :color
3
3
 
4
- def initialize(worksheet, cells, edges)
4
+ def initialize(worksheet, cells, args)
5
5
  @worksheet = worksheet
6
6
  @cells = cells
7
- @edges = edges
7
+ if args.is_a?(Hash)
8
+ @edges = args[:edges] || :all
9
+ @width = args[:style] || :thin
10
+ @color = args[:color] || '000000'
11
+ else
12
+ @edges = args || :all
13
+ @width = :thin
14
+ @color = '000000'
15
+ end
8
16
  end
9
17
 
10
18
  def draw
11
- selected_edges(edges).each { |edge| add_border(edge) }
19
+ selected_edges(edges).each { |edge| add_border(edge, width, color) }
12
20
  end
13
21
 
14
22
  private
@@ -24,14 +32,13 @@ class BorderCreator
24
32
  end
25
33
  end
26
34
 
27
- def add_border(position)
35
+ def add_border(position, width, color)
28
36
  style = {
29
37
  border: {
30
- style: :thin, color: '000000', edges: [position.to_sym]
38
+ style: width, color: color, edges: [position.to_sym]
31
39
  }
32
40
  }
33
41
  worksheet.add_style border_cells[position.to_sym], style
34
- # add_style border_cells(cell_ref)[position.to_sym], style
35
42
  end
36
43
 
37
44
  def border_cells
@@ -1,3 +1,3 @@
1
1
  module AxlsxStyler
2
- VERSION = '0.1.2'
2
+ VERSION = '0.1.3'
3
3
  end
@@ -31,12 +31,65 @@ class IntegrationTest < MiniTest::Test
31
31
  sheet.add_style 'D3:D6', alignment: { horizontal: :left }
32
32
  sheet.add_border 'B2:D6'
33
33
  sheet.add_border 'B3:D3', [:top]
34
+ sheet.add_border 'B3:D3', edges: [:bottom], style: :medium
35
+ sheet.add_border 'B3:D3', edges: [:bottom], style: :medium, color: '32f332'
34
36
  end
35
37
  @workbook.apply_styles
36
38
  assert_equal 12, @workbook.style_index.count
37
39
  assert_equal 12 + 2, @workbook.style_index.keys.max
38
40
  end
39
41
 
42
+ def test_duplicate_borders
43
+ @filename = 'duplicate_borders_test'
44
+ @workbook.add_worksheet do |sheet|
45
+ sheet.add_row
46
+ sheet.add_row ['', 'B2', 'C2', 'D2']
47
+ sheet.add_row ['', 'B3', 'C3', 'D3']
48
+ sheet.add_row ['', 'B4', 'C4', 'D4']
49
+
50
+ sheet.add_border 'B2:D4'
51
+ sheet.add_border 'B2:D4'
52
+ end
53
+ @workbook.apply_styles
54
+ assert_equal 8, @workbook.style_index.count
55
+ assert_equal 8, @workbook.styled_cells.count
56
+ end
57
+
58
+ def test_multiple_style_borders_on_same_sells
59
+ @filename = 'multiple_style_borders'
60
+ @workbook.add_worksheet do |sheet|
61
+ sheet.add_row
62
+ sheet.add_row ['', 'B2', 'C2', 'D2']
63
+ sheet.add_row ['', 'B3', 'C3', 'D3']
64
+
65
+ sheet.add_border 'B2:D3', :all
66
+ sheet.add_border 'B2:D2', edges: [:bottom], style: :thick, color: 'ff0000'
67
+ end
68
+ @workbook.apply_styles
69
+ assert_equal 6, @workbook.style_index.count
70
+ assert_equal 6, @workbook.styled_cells.count
71
+
72
+ b2_cell_style = {
73
+ border: {
74
+ style: :thick,
75
+ color: 'ff0000',
76
+ edges: [:top, :left, :bottom]
77
+ }
78
+ }
79
+ assert_equal b2_cell_style, @workbook.style_index
80
+ .find { |_, v| v[:border][:edges] == [:top, :left, :bottom] }[1]
81
+
82
+ d3_cell_style = {
83
+ border: {
84
+ style: :thin,
85
+ color: '000000',
86
+ edges: [:right, :bottom]
87
+ }
88
+ }
89
+ assert_equal d3_cell_style, @workbook.style_index
90
+ .find { |_, v| v[:border][:edges] == [:right, :bottom] }[1]
91
+ end
92
+
40
93
  def test_table_with_num_fmt
41
94
  @filename = 'num_fmt_test'
42
95
  t = Time.now
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: axlsx_styler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Sakovich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-21 00:00:00.000000000 Z
11
+ date: 2016-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: axlsx