axlsx_styler 0.1.1 → 0.1.2

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: 06e2917f628413da559ab046714cfdd1af2a6460
4
- data.tar.gz: 15051010630397515b81fbd084cf449537b3dfa9
3
+ metadata.gz: 2d3232dd2b096374134b17d0580aa8d4b0fdcbd9
4
+ data.tar.gz: 9add5f73a45dd461c5b2b2f2edfab0d5a57b828c
5
5
  SHA512:
6
- metadata.gz: b5941ab8c1a7b83ed6a537dcf553907df587a07e06488f1701a42736a790c5e256e1182dfc51305db3d03e53af7300c3967db3525ad8e0f5ede6d1a1c6e2bdb3
7
- data.tar.gz: 5b6b5e6531a9a0298744ae25bde5009167211319ff79762f2df44c7cb4caad9b55960351bb184997f5356554a1bf7a48a768b479d76fe54ad0888ef4c413b36a
6
+ metadata.gz: 04792906e4d28e5c31d7f4e30ca9f1dd9cf598bb10bf05828451a2517b44d3e5afcf72070a0c6beedd13230cddb7f10f19d6a613db94ff05c322ed60997dc6f7
7
+ data.tar.gz: 90ad8832f1378f4d78770eb0e7756c7ba0f4db6da1bc159213b15cef47002e7167e5b26053073668fa23ddbcde152bd533e901c8a3310c14aed961e3a1f27efb
data/README.md CHANGED
@@ -16,7 +16,7 @@ be used outside of any specific ruby framework as shown in example below.
16
16
  This gem provides a DSL that allows you to apply styles to ranges of cells, e.g.
17
17
 
18
18
  ```ruby
19
- sheet.add_style 'A1:D10', b: true
19
+ sheet.add_style 'A1:D10', b: true, sz: 14
20
20
  ```
21
21
 
22
22
  The styles can be overlayed, so that later on you can add another style
@@ -26,6 +26,14 @@ to cells that already have styles, e.g.
26
26
  sheet.add_style 'A1:D1', bg_color: 'FF0000'
27
27
  ```
28
28
 
29
+ Applying multiple styles as a sequence of Ruby hashes is also possible:
30
+
31
+ ```ruby
32
+ bold = { b: true }
33
+ centered = { alignment: { horizontal: :center } }
34
+ sheet.add_style 'A2:D2', bold, centered
35
+ ```
36
+
29
37
  You can also add borders to ranges of cells:
30
38
 
31
39
  ```ruby
@@ -3,12 +3,21 @@ require_relative './border_creator'
3
3
  module AxlsxStyler
4
4
  module Axlsx
5
5
  module Worksheet
6
- # Example:
6
+ # Example to add a single style:
7
7
  # add_style 'A1:B5', b: true, sz: 14
8
- def add_style(cell_ref, style)
8
+ #
9
+ # Example to add multiple styles:
10
+ # bold = { b: true }
11
+ # large_text = { sz: 30 }
12
+ # add_style 'B2:F8', bold, large_text
13
+ def add_style(cell_ref, *styles)
9
14
  item = self[cell_ref]
10
15
  cells = item.is_a?(Array) ? item : [item]
11
- cells.each { |cell| cell.add_style(style) }
16
+ cells.each do |cell|
17
+ styles.each do |style|
18
+ cell.add_style(style)
19
+ end
20
+ end
12
21
  end
13
22
 
14
23
  # Examples:
@@ -1,3 +1,3 @@
1
1
  module AxlsxStyler
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
@@ -1,10 +1,20 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class IntegrationTest < MiniTest::Test
4
+ def setup
5
+ @axlsx = Axlsx::Package.new
6
+ @workbook = @axlsx.workbook
7
+ end
8
+
9
+ # Save files in case you'd like to see what the result is
10
+ def teardown
11
+ return unless @filename
12
+ @axlsx.serialize File.expand_path("../../tmp/#{@filename}.xlsx", __FILE__)
13
+ end
14
+
4
15
  def test_table_with_borders
5
- axlsx = Axlsx::Package.new
6
- workbook = axlsx.workbook
7
- workbook.add_worksheet do |sheet|
16
+ @filename = 'borders_test'
17
+ @workbook.add_worksheet do |sheet|
8
18
  sheet.add_row
9
19
  sheet.add_row ['', 'Product', 'Category', 'Price']
10
20
  sheet.add_row ['', 'Butter', 'Dairy', 4.99]
@@ -22,21 +32,16 @@ class IntegrationTest < MiniTest::Test
22
32
  sheet.add_border 'B2:D6'
23
33
  sheet.add_border 'B3:D3', [:top]
24
34
  end
25
- workbook.apply_styles
26
- axlsx.serialize File.expand_path(
27
- '../../tmp/borders_test.xlsx',
28
- __FILE__
29
- )
30
- assert_equal 12, workbook.style_index.count
31
- assert_equal 12 + 2, workbook.style_index.keys.max
35
+ @workbook.apply_styles
36
+ assert_equal 12, @workbook.style_index.count
37
+ assert_equal 12 + 2, @workbook.style_index.keys.max
32
38
  end
33
39
 
34
40
  def test_table_with_num_fmt
35
- axlsx = Axlsx::Package.new
36
- workbook = axlsx.workbook
41
+ @filename = 'num_fmt_test'
37
42
  t = Time.now
38
43
  day = 24 * 60 * 60
39
- workbook.add_worksheet do |sheet|
44
+ @workbook.add_worksheet do |sheet|
40
45
  sheet.add_row %w(Date Count Percent)
41
46
  sheet.add_row [t - 2 * day, 2, 2.to_f.round(2) / 11]
42
47
  sheet.add_row [t - 1 * day, 3, 3.to_f.round(2) / 11]
@@ -45,20 +50,15 @@ class IntegrationTest < MiniTest::Test
45
50
  sheet.add_style 'A1:B1', b: true
46
51
  sheet.add_style 'A2:A4', format_code: 'YYYY-MM-DD hh:mm:ss'
47
52
  end
48
- workbook.apply_styles
49
- assert_equal 2, workbook.style_index.count
50
- assert_equal 2 + 2, workbook.style_index.keys.max
51
- assert_equal 5, workbook.styled_cells.count
52
- axlsx.serialize File.expand_path(
53
- '../../tmp/num_fmt_test.xlsx',
54
- __FILE__
55
- )
53
+ @workbook.apply_styles
54
+ assert_equal 2, @workbook.style_index.count
55
+ assert_equal 2 + 2, @workbook.style_index.keys.max
56
+ assert_equal 5, @workbook.styled_cells.count
56
57
  end
57
58
 
58
59
  def test_duplicate_styles
59
- axlsx = Axlsx::Package.new
60
- workbook = axlsx.workbook
61
- workbook.add_worksheet do |sheet|
60
+ @filename = 'duplicate_styles'
61
+ @workbook.add_worksheet do |sheet|
62
62
  sheet.add_row %w(Index City)
63
63
  sheet.add_row [1, 'Ottawa']
64
64
  sheet.add_row [2, 'Boston']
@@ -68,12 +68,26 @@ class IntegrationTest < MiniTest::Test
68
68
  sheet.add_style 'A1:A3', b: true
69
69
  sheet.add_style 'A1:A3', b: true
70
70
  end
71
- workbook.apply_styles
72
- assert_equal 4, workbook.styled_cells.count
73
- assert_equal 3, workbook.style_index.count
74
- axlsx.serialize File.expand_path(
75
- '../../tmp/duplicate_styles.xlsx',
76
- __FILE__
77
- )
71
+ @workbook.apply_styles
72
+ assert_equal 4, @workbook.styled_cells.count
73
+ assert_equal 3, @workbook.style_index.count
74
+ end
75
+
76
+ def test_multiple_named_styles
77
+ @filename = 'multiple_named_styles'
78
+ bold_blue = { b: true, fg_color: '0000FF' }
79
+ large = { sz: 16 }
80
+ red = { fg_color: 'FF0000' }
81
+ @workbook.add_worksheet do |sheet|
82
+ sheet.add_row %w(Index City)
83
+ sheet.add_row [1, 'Ottawa']
84
+ sheet.add_row [2, 'Boston']
85
+
86
+ sheet.add_style 'A1:B1', bold_blue, large
87
+ sheet.add_style 'A1:A3', red
88
+ end
89
+ @workbook.apply_styles
90
+ assert_equal 4, @workbook.styled_cells.count
91
+ assert_equal 3, @workbook.style_index.count
78
92
  end
79
93
  end
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.1
4
+ version: 0.1.2
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-03-26 00:00:00.000000000 Z
11
+ date: 2015-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: axlsx