axlsx_styler 0.0.4 → 0.0.5

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: 21d5d36b1a846a693e3dace67325bb9e8d2317ba
4
- data.tar.gz: 06e8c8cd836d25e99e6a9d1463536b6e7711a974
3
+ metadata.gz: 83dfa2cca4c51645feaa8b0dbf6693af425e42d9
4
+ data.tar.gz: 770fb362a94bc3ce157dbd4df1d61ff657910882
5
5
  SHA512:
6
- metadata.gz: e84cc140bac5013b7881c81b5c5dd14cabcf8dfe9843729dce817c8ab2f536064d0ec6fd761af1b264682659dbecac42baa32e3cc03a32abbefc117f77f64e54
7
- data.tar.gz: 8385e37dacf3f373951132a884ab7e6775e7770584d76eae8fa23827e6efff550dd1d19a5983fe2d3b7267dec94eedf895821c04726b6de45dd7a252b347e9fd
6
+ metadata.gz: feba1d502575df2c5742ec0f3aeaf99c12cd9e571e5aab9fb3b58d917ffeea0c866c01b9edfb381b1b3f3b0b41b143fb6d024536c6791348b49d58d747a94ddd
7
+ data.tar.gz: 11fbe7c050e4091a084062567478ed84c58cee2a1f6e4a3f055002ad0e8974cdcbc2763b323ad81e1c34442b80c7b290cdbacaef9a42814c19f155ec251437bf
data/axlsx_styler.gemspec CHANGED
@@ -4,33 +4,33 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'axlsx_styler/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "axlsx_styler"
7
+ spec.name = 'axlsx_styler'
8
8
  spec.version = AxlsxStyler::VERSION
9
- spec.authors = ["Anton Sakovich"]
10
- spec.email = ["sakovias@gmail.com"]
11
- spec.summary = %q{This gem allows to separate data from styles when using Axlsx gem.}
12
- spec.description = %q{
9
+ spec.authors = ['Anton Sakovich']
10
+ spec.email = ['sakovias@gmail.com']
11
+ spec.summary = %q(This gem allows to separate data from styles when using Axlsx gem.)
12
+ spec.description = %q(
13
13
  Axlsx gem is an excellent tool to build Excel worksheets. The sheets are
14
14
  created row-by-row and styles are immediately added to each cell when a
15
15
  row is created. This gem allows to follow an alternative route: fill out
16
16
  a spreadsheet with data and apply styles later. Styles can be added
17
17
  to individual cells as well as to ranges of cells. As a bonus, this gem
18
18
  also simplifies drawing borders around groups of cells.
19
- }
20
- spec.homepage = "https://github.com/sakovias/axlsx_styler"
21
- spec.license = "MIT"
19
+ )
20
+ spec.homepage = 'https://github.com/sakovias/axlsx_styler'
21
+ spec.license = 'MIT'
22
22
 
23
23
  spec.files = `git ls-files -z`.split("\x0")
24
24
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
25
25
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
26
- spec.require_paths = ["lib"]
26
+ spec.require_paths = ['lib']
27
27
  spec.required_ruby_version = '>= 1.9.3'
28
28
 
29
- spec.add_dependency "axlsx", "~> 2.0"
30
- spec.add_dependency "activesupport", "~> 3.1"
29
+ spec.add_dependency 'axlsx', '~> 2.0'
30
+ spec.add_dependency 'activesupport', '~> 3.1'
31
31
 
32
- spec.add_development_dependency "bundler", "~> 1.6"
33
- spec.add_development_dependency "rake", "~> 0.9"
34
- spec.add_development_dependency "minitest", "~> 5.0"
32
+ spec.add_development_dependency 'bundler', '~> 1.6'
33
+ spec.add_development_dependency 'rake', '~> 0.9'
34
+ spec.add_development_dependency 'minitest', '~> 5.0'
35
35
  spec.add_development_dependency 'awesome_print', '~> 1.6'
36
36
  end
@@ -1,4 +1,9 @@
1
1
  module AxlsxStyler
2
+ # @TODO
3
+ # Move the functionality from Array to Worksheet. New DSL
4
+ # sheet.add_style 'A1:B5', b: true
5
+ # instead of
6
+ # sheet['A1:B5'].add_style, b: true
2
7
  module Array
3
8
  def add_style(style)
4
9
  validate_cells
@@ -13,7 +18,7 @@ module AxlsxStyler
13
18
  # hardcode style to :thin for now
14
19
  def add_border(edges = :all)
15
20
  validate_cells
16
- selected_edges(edges).each{ |edge| add_border_at(edge) }
21
+ selected_edges(edges).each { |edge| add_border_at(edge) }
17
22
  end
18
23
 
19
24
  private
@@ -23,7 +23,7 @@ module AxlsxStyler
23
23
  new_style = raw_style.deep_merge style
24
24
  if with_border?(raw_style) && with_border?(style)
25
25
  border_at = raw_style[:border][:edges] + style[:border][:edges]
26
- new_style[:border][:edges] = border_at
26
+ new_style[:border][:edges] = border_at.uniq
27
27
  elsif with_border?(style)
28
28
  new_style[:border] = style[:border]
29
29
  end
@@ -6,10 +6,10 @@ module AxlsxStyler
6
6
 
7
7
  # An index for cell styles
8
8
  # {
9
- # < style_hash > => 1,
10
- # < style_hash > => 2,
9
+ # 1 => < style_hash >,
10
+ # 2 => < style_hash >,
11
11
  # ...
12
- # < style_hash > => K
12
+ # K => < style_hash >
13
13
  # }
14
14
  # where keys are Cell#raw_style and values are styles
15
15
  # codes as per Axlsx::Style
@@ -34,18 +34,15 @@ module AxlsxStyler
34
34
  # @TODO fix this hack
35
35
  self.style_index ||= {}
36
36
 
37
- style = style_index[cell.raw_style]
38
- if style
39
- cell.style = style
37
+ index_item = style_index.select { |_, v| v == cell.raw_style }.first
38
+ if index_item
39
+ cell.style = index_item.first
40
40
  else
41
+ old_style = cell.raw_style.dup
41
42
  new_style = styles.add_style(cell.raw_style)
42
43
  cell.style = new_style
43
-
44
- # :num_fmt is distinct even though the styles are
45
- # the same; not sure if it's intended functionality
46
- cell.raw_style.delete(:num_fmt)
47
-
48
- style_index[cell.raw_style] = new_style
44
+ # cell.raw_style.delete(:num_fmt)
45
+ style_index[new_style] = old_style
49
46
  end
50
47
  end
51
48
  end
@@ -1,3 +1,3 @@
1
1
  module AxlsxStyler
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -29,6 +29,7 @@ class IntegrationTest < MiniTest::Test
29
29
  __FILE__
30
30
  )
31
31
  assert_equal 12, workbook.style_index.count
32
+ assert_equal 12 + 2, workbook.style_index.keys.max
32
33
  end
33
34
 
34
35
  def test_table_with_num_fmt
@@ -52,4 +53,26 @@ class IntegrationTest < MiniTest::Test
52
53
  __FILE__
53
54
  )
54
55
  end
56
+
57
+ def test_duplicate_styles
58
+ axlsx = Axlsx::Package.new
59
+ workbook = axlsx.workbook
60
+ workbook.add_worksheet do |sheet|
61
+ sheet.add_row %w(Index City)
62
+ sheet.add_row [1, 'Ottawa']
63
+ sheet.add_row [2, 'Boston']
64
+
65
+ sheet['A1:B1'].add_border [:bottom]
66
+ sheet['A1:B1'].add_border [:bottom]
67
+ sheet['A1:A3'].add_style b: true
68
+ sheet['A1:A3'].add_style b: true
69
+ end
70
+ workbook.apply_styles
71
+ assert_equal 4, workbook.styled_cells.count
72
+ assert_equal 3, workbook.style_index.count
73
+ axlsx.serialize File.expand_path(
74
+ '../../tmp/duplicate_styles.xlsx',
75
+ __FILE__
76
+ )
77
+ end
55
78
  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.0.4
4
+ version: 0.0.5
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-02-25 00:00:00.000000000 Z
11
+ date: 2015-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: axlsx