summaryrefslogtreecommitdiffhomepage
path: root/lib
AgeCommit message (Collapse)Author
2023-10-30Version bump to 4.0.0Koza
2023-10-19Fix frozen string error for scatter series with non-default markerKoza
2023-10-19Fix data validations for none type validations to show warnings onlyKoza
2023-10-19Merge pull request #269 from kiskoza/221-icon-set-improvementsZsolt Kozaroczy
Add optional interpolation points to icon sets
2023-10-19Merge pull request #273 from tagliala/chore/fix-unused-block-argumentZsolt Kozaroczy
Fix Lint/UnusedBlockArgument offenses
2023-10-19Add optional interpolation points to icon setsKoza
2023-10-02Set escape_formulas as "true" as a global default.johnnyshields
2023-09-08Use `class.name` instead of `class.to_s`Geremia Taglialatela
`class.name` is faster, uses less memory than `class.to_s`, and can be used in this context. This micro optimization does not have practical effect, it is just a reference for the future in case this approach will be needed in other parts of the library ``` Comparison (IPS): Object.name: 13528803.0 i/s Object.to_s: 8213612.0 i/s - 1.65x (± 0.00) slower Comparison (Memory): Object.name: 0 allocated Object.to_s: 40 allocated - Infx more ```
2023-08-24Fix yard documentation warningsGeremia Taglialatela
[ci skip] Close #298
2023-08-15Added sorting to the AutoFilter class - add sort conditions to the xml (#286)rikweelvoormedia
--------- Co-authored-by: SarahVanHaute <[email protected]> Co-authored-by: Geremia Taglialatela <[email protected]>
2023-07-13Fix Style/AccessorGrouping offenseGeremia Taglialatela
Provide documentation to two attribute readers which triggered the offense.
2023-07-05Merge pull request #293 from tagliala/chore/fix-offenses-in-sheet-protectionZsolt Kozaroczy
Fix offenses in sheet protection
2023-07-05Use encoding constant instead of hardcoded stringGeremia Taglialatela
Ref: https://ruby-doc.org/core-2.6.10/Encoding.html#class-Encoding-label-Changing+an+encoding
2023-07-05Fix offenses in sheet protectionGeremia Taglialatela
- Lint/AmbiguousOperatorPrecedence - Style/PerlBackrefs - Style/StringChars - Style/UnpackFirst
2023-07-04Merge pull request #288 from tagliala/chore/fix-non-local-exit-from-iteratorZsolt Kozaroczy
Fix Lint/NonLocalExitFromIterator offense
2023-07-04Merge pull request #289 from tagliala/chore/282-require-cgi-at-module-levelZsolt Kozaroczy
Require 'cgi' at module level
2023-07-04Merge pull request #290 from tagliala/chore/fix-preferred-hash-method-offenseZsolt Kozaroczy
Fix Style/PreferredHashMethods offense
2023-07-02Remove conditional check for `encode` methodGeremia Taglialatela
All supported Ruby versions now support the `encode` method on strings, so the conditional check for this method has been removed. Even if the default encoding on Ruby >= 2.0 is UTF-8, this is not always the case when the `LANG` environment variable is not set to `C.UTF-8`, so the `encode` method has been preserved. Additionally, this commit updates a link to use the `https` protocol for improved security.
2023-07-02Require 'cgi' at module levelGeremia Taglialatela
Previously, `require 'cgi'` was only called in `cell.rb`, but there are other components in the Axlsx module that also use this dependency, including `Axlsx::SeriesTitle`, `Axlsx::StrVal`, `Axlsx::Title` (drawing), `Axlsx::Comment`, `Axlsx::ConditionalFormattingRule`, and `Axlsx::HeaderFooter`. By requiring cgi at the module level, we ensure that this dependency is available to all components in the Axlsx module, which can prevent issues if someone is requiring specific components that depend on cgi. This change improves the maintainability and reliability of the codebase by ensuring that all components have access to the required dependencies. Close #282
2023-07-01Fix Style/PreferredHashMethods offenseGeremia Taglialatela
`Gem.loaded_specs` is a hash, so it is safe to use `key?` and enable this cop
2023-07-01Fix Lint/NonLocalExitFromIterator offenseGeremia Taglialatela
Uses `Array#any?` instead of `Array#each`. According to benchmarks, `any?` is slightly faster when validation fails (3%) and noticeably faster when validation passes (up to 60%)
2023-06-27Merge pull request #285 from tagliala/chore/fix-redundant-self-offensesZsolt Kozaroczy
Fix redundant self offenses
2023-06-15Fix redundant self offensesGeremia Taglialatela
No performance gain, this can be seen as a cosmetic change to have shorter lines
2023-06-15Fix Lint/UnusedBlockArgument offensesGeremia Taglialatela
Use `each_value` instead of `each` where possible. The performance gain is minimal (3%). ``` Comparison: each_value: 4105733.4 i/s each: 3998011.4 i/s - 1.03x (± 0.00) slower ```
2023-06-14Enable Naming/PredicateName copGeremia Taglialatela
Renaming the existing methods would break the public API, and it is not worth to alias and/or deprecate existing methods, so this commit enables Naming/PredicateName and allows the existing methods to preserve their name
2023-06-13Fix safe Style/Lambda offensesGeremia Taglialatela
- Use literal syntax on single line - Use lambda method on multiple lines Ref: https://rubystyle.guide/#lambda-multi-line
2023-06-12Merge pull request #280 from tagliala/chore/remove-extra-to-sZsolt Kozaroczy
Remove redundant `to_s` calls
2023-06-10Fix safe Style/ColonMethodCall offensesGeremia Taglialatela
Caxlsx is using both `.` and `::`, 220 occurrences vs 280 to invoke methods on `Axlsx` module. This commit standardizes the approach towards `.`, which will also allow shorter lines. Performance is not affected ``` Comparison: Axlsx.validate: 8515252.3 i/s Axlsx::validate: 8512863.7 i/s - same-ish: difference falls within error ```
2023-06-10Remove redundant `to_s` callsGeremia Taglialatela
`clean_value`'s return value is a `String`. That method will return `@value.to_s`, or it will call `Axlsx.sanitize`, which will return a `String` in both conditions (
2023-06-09Merge pull request #278 from tagliala/chore/invert-nil-checksZsolt Kozaroczy
Invert nil checks to improve performance
2023-06-09Refactor random char generationGeremia Taglialatela
Fix the following safe offenses: - Style/OperatorMethodCall - Style/RandomWithOffset And use Array.new to avoid an extra allocation: ``` Comparison (IPS): Array.new(8) { rand(65..89).chr }.join: 492433.7 i/s (0...8).map { 65.+(rand(25)).chr }.join: 432155.8 i/s - 1.14x (± 0.00) slower Comparison (Memory): Array.new(8) { rand(65..89).chr }.join: 440 allocated (0...8).map { 65.+(rand(25)).chr }.join: 560 allocated - 1.27x more ```
2023-06-06Invert nil checks to improve performanceGeremia Taglialatela
Check for `nil` before checking for more expensive conditions which include a method call or an array scan. Also removes redundant comments on self-explanatory code
2023-06-05Prefer `Kernel#format` to `String#%`Geremia Taglialatela
This commit fixes cases that cannot be detected by RuboCop Ref: https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/FormatString
2023-06-05Fix Style/RedundantInterpolation offensesGeremia Taglialatela
`%` is an operation on `String` that will return a new `String`, so the interpolation is redundant Also adds a missing spec on PivotTable#rels_pn ``` IPS: uninterpolated: 4045715.7 i/s interpolated: 2359775.6 i/s - 1.71x (± 0.00) slower Memory: uninterpolated: 160 allocated interpolated: 232 allocated - 1.45x more ```
2023-06-05Fix Style/FormatString offensesGeremia Taglialatela
`Kernel#format` is faster and will avoid to allocate an array compared to `String#%`. ``` IPS: kernel_format: 3877614.2 i/s string_percent: 3531475.0 i/s - 1.10x (± 0.00) slower Memory: kernel_format: 160 allocated string_percent: 200 allocated - 1.25x more ```
2023-06-05Merge pull request #276 from tagliala/performance/avoid-unnecessary-method-callZsolt Kozaroczy
Avoid unnecessary calls to `parse_options`
2023-06-05Merge pull request #274 from tagliala/chore/fix-negated-if-offensesZsolt Kozaroczy
Fix negated if offenses
2023-06-03Avoid unnecessary calls to `parse_options`Geremia Taglialatela
`Cell#initialize` is one of the most used methods in the library, so a small improvement here will make a lot of difference on the overall performance. The impact of this change is negligible when `options` has elements but is substantial when it is empty. ``` Comparison (empty options): parse unless: 11636650.6 i/s parse: 8109825.4 i/s - 1.43x (± 0.00) slower Comparison (1 option): parse: 3548037.5 i/s parse unless: 3459029.7 i/s - same-ish: difference falls within error ```
2023-06-02Fix negated if offensesGeremia Taglialatela
Should also provide a negligible performance improvement, about 3% on Ruby 3.2 and 6% on Ruby 2.6 (M1 Pro)
2023-05-31Remove redundant parenthesesGeremia Taglialatela
- Style/ParenthesesAroundCondition - Style/RedundantParentheses - Style/TernaryParentheses `Style/ParenthesesAroundCondition` may be questionable, but a majority of comparison where not using parentheses, so offenses have been fixed for uniformity across the codebase
2023-05-31Use Ruby 1.9 hash syntaxGeremia Taglialatela
2023-05-31Merge pull request #268 from tagliala/chore/fix-symbol-proc-offensesZsolt Kozaroczy
Fix Style/SymbolProc offenses
2023-05-31Merge pull request #267 from tagliala/chore/freeze-mutable-constantsZsolt Kozaroczy
Fix Style/MutableConstant offenses
2023-05-31Merge pull request #266 from tagliala/chore/fix-yoda-condition-offenseZsolt Kozaroczy
Fix Style/YodaCondition offense
2023-05-31Merge pull request #265 from tagliala/chore/fix-conditional-assignment-offensesZsolt Kozaroczy
Fix Style/ConditionalAssignment offenses
2023-05-31Fix Style/SymbolProc offensesGeremia Taglialatela
This also provides a performance improvement ``` Comparison (array of 4 elements): map(&): 3643131.4 i/s map {}: 3488052.5 i/s - 1.04x (± 0.00) slower Comparison (array of 20 elements): map(&): 466013.9 i/s map {}: 408447.2 i/s - 1.14x (± 0.00) slower ```
2023-05-31Fix Style/MutableConstant offensesGeremia Taglialatela
2023-05-31Fix Style/YodaCondition offenseGeremia Taglialatela
2023-05-31Fix Style/ConditionalAssignment offensesGeremia Taglialatela
2023-05-31Merge pull request #249 from tagliala/chore/use-each-keyZsolt Kozaroczy
Fix Style/HashEachMethods offense