From cddea47ba56add286639e493d5cc0146245eca68 Mon Sep 17 00:00:00 2001 From: Andy Meneely Date: Tue, 21 Jul 2015 21:47:50 -0400 Subject: [PATCH] Upgrade Roo to 2.1.x Looks like the main difference is that xlsm is now supported, so I added test for it. --- CHANGELOG.md | 8 ++++---- spec/api/api_data_spec.rb | 9 ++++++++- spec/data/xlsx/with_macros.xlsm | Bin 0 -> 12561 bytes squib.gemspec | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 spec/data/xlsx/with_macros.xlsm diff --git a/CHANGELOG.md b/CHANGELOG.md index 7130056..500e535 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,13 +4,13 @@ Squib follows [semantic versioning](http://semver.org). ## v0.7.0 / Unreleased Features -* Added `cap` option to `line` and `curve` to define how ends of lines are drawn (#42) +* Added `cap` option to `line` and `curve` to define how those ends are drawn (#42) * Added `join` option to all drawing operations (e.g. `rect`, `star`, even outlines for `text`) to define how corners are drawn. (#42) -* Added `dash` option to all drawing operations (e.g. `rect`, `star`, even outlines for `text`) so you can specify your own dash pattern. Just specify a string with space-separated numbers to specify the on-and-off alternating pattern (e.g. `dash: '2 2'` with a stroke width of `2` is evenly spaced dots). Supports unit conversion (e.g. `dash: '0.02in 0.02in'`) (#42) +* Added `dash` option to all drawing operations (e.g. `rect`, `star`, even outlines for `text`) so you can specify your own dash pattern. Just specify a string with space-separated numbers to specify the on-and-off alternating pattern (e.g. `dash: '2 2'` with a stroke width of 2 is evenly spaced dots). Supports unit conversion (e.g. `dash: '0.02in 0.02in'`) (#42) * Added an idiom to the `ranges.rb` sample for drawing a different number of images based on the column in a table (e.g. 2 arrows to indicate 2 actions). Based on question #90. There are probably even cleaner, Ruby-ish ways to do this too - pull requests are welcome. -* The `text` method and several other methods will throw errors on invalid input. This means your scripts will be more likely to break if you provide bad input. Please report bugs if you thinkg this unfairly breaks your code. +* The `text` method and several other methods will throw errors on invalid input. This means your scripts will be more likely to break if you provided bad input in the past. * The `text` embedding icon now allows singleton expansion, which means that you can have icons have different sizes on different cards. The sample `embed_text.rb` demonstrates this. (#54) -* The `text` method will throw a warning when it needs to ellipsize text (i.e. too much text for a fixed-size text box). Can be turned off in `config.yml`. (#80) +* Upgraded roo (Excel parsing) to 2.1.0. Macro-enabled Excel files can be parsed now (i.e. `xlsm`), although I've only mildly tested this. Compatibility: * All drawn shapes (e.g. circle, triangle, star) will now draw their stroke on top of the fill. This was not consistent before, and now it is (because Squib is more DRY about it!). This means that your `stroke_width` might render wider than before, but now it's accurate. diff --git a/spec/api/api_data_spec.rb b/spec/api/api_data_spec.rb index 4653657..bbb733c 100644 --- a/spec/api/api_data_spec.rb +++ b/spec/api/api_data_spec.rb @@ -46,5 +46,12 @@ describe Squib::Deck do }) end + it 'loads xlsm files with macros' do + expect(Squib.xlsx(file: xlsx_file('with_macros.xlsm'))).to eq({ + 'foo' => %w(8 10), + 'bar' => %w(9 11), + }) + end + end -end \ No newline at end of file +end diff --git a/spec/data/xlsx/with_macros.xlsm b/spec/data/xlsx/with_macros.xlsm new file mode 100644 index 0000000000000000000000000000000000000000..6f2d52b34592a965c860c07a2616dac3f0189619 GIT binary patch literal 12561 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 Ky@LMdzyAl{I3aBS literal 0 HcmV?d00001 diff --git a/squib.gemspec b/squib.gemspec index fdeaf65..3ab04be 100644 --- a/squib.gemspec +++ b/squib.gemspec @@ -29,7 +29,7 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency 'cairo', '~> 1.14.0' spec.add_runtime_dependency 'pango', '~> 2.2.0' - spec.add_runtime_dependency 'roo', '~> 2.0.0' + spec.add_runtime_dependency 'roo', '~> 2.1.0' spec.add_runtime_dependency 'rsvg2', '~> 2.2.0' spec.add_runtime_dependency 'mercenary', '~> 0.3.4' spec.add_runtime_dependency 'ruby-progressbar', '~> 1.6'