thinreports 0.13.1 → 0.14.1
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 +4 -4
- data/.github/workflows/test.yml +5 -5
- data/CHANGELOG.md +17 -1
- data/Gemfile +0 -1
- data/README.md +1 -1
- data/lib/thinreports/basic_report/generator/pdf/document/graphics/attributes.rb +23 -1
- data/lib/thinreports/basic_report/generator/pdf/document/graphics/text.rb +9 -3
- data/lib/thinreports/basic_report/generator/pdf.rb +3 -0
- data/lib/thinreports/version.rb +1 -1
- data/thinreports.gemspec +3 -1
- metadata +31 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 0233a79937eb8039a999b9711cef50a013311af86dd0ccde5ce94559af172235
         | 
| 4 | 
            +
              data.tar.gz: 818dab5e4f71506ed895b2480dddfab7df13d042500322b14d68258af1cfaba8
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 0b1a8a8d67828b3fc901d831cc6087b3dccfbc7b120578a8118ae210d782e6064d80406665e5c0911222cf81ee059692235350cde6f3bcad27bd55d27a2f921f
         | 
| 7 | 
            +
              data.tar.gz: 8600a21f94a6851e4281c09ff4f3a0eab2db5977f5fa6100770ba6d35e6e29ad46364b0f523298d144d5e4f5006d4349c1af5b1bdaa0d88aef8bfd1926ec52d6
         | 
    
        data/.github/workflows/test.yml
    CHANGED
    
    | @@ -1,6 +1,9 @@ | |
| 1 1 | 
             
            name: Test
         | 
| 2 2 |  | 
| 3 | 
            -
            on: | 
| 3 | 
            +
            on:
         | 
| 4 | 
            +
              push:
         | 
| 5 | 
            +
                branches: [ main, dev ]
         | 
| 6 | 
            +
              pull_request:
         | 
| 4 7 |  | 
| 5 8 | 
             
            jobs:
         | 
| 6 9 | 
             
              setup:
         | 
| @@ -8,16 +11,13 @@ jobs: | |
| 8 11 |  | 
| 9 12 | 
             
                runs-on: ubuntu-latest
         | 
| 10 13 |  | 
| 11 | 
            -
                # Run this build only on either pull request or push.
         | 
| 12 | 
            -
                if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
         | 
| 13 | 
            -
             | 
| 14 14 | 
             
                strategy:
         | 
| 15 15 | 
             
                  matrix:
         | 
| 16 16 | 
             
                    ruby:
         | 
| 17 | 
            -
                      - "2.7"
         | 
| 18 17 | 
             
                      - "3.0"
         | 
| 19 18 | 
             
                      - "3.1"
         | 
| 20 19 | 
             
                      - "3.2"
         | 
| 20 | 
            +
                      - "3.3"
         | 
| 21 21 |  | 
| 22 22 | 
             
                steps:
         | 
| 23 23 | 
             
                  - uses: actions/checkout@v4
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,8 +1,24 @@ | |
| 1 1 | 
             
            ## main (Unreleased)
         | 
| 2 2 |  | 
| 3 | 
            +
            ## 0.14.1
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Enhancements:
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            * Add overflow-wrap option #129
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            ## 0.14.0
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            Breaking Changes:
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            * Drop Ruby 2.7 support
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            Bug Fixes:
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            * Fix LoadError: cannot load such file -- matrix #131
         | 
| 18 | 
            +
             | 
| 3 19 | 
             
            ## 0.13.1
         | 
| 4 20 |  | 
| 5 | 
            -
            Bug  | 
| 21 | 
            +
            Bug Fixes:
         | 
| 6 22 |  | 
| 7 23 | 
             
             * allow title argument to be specified in Report.generate method #127
         | 
| 8 24 |  | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    
| @@ -25,6 +25,8 @@ module Thinreports | |
| 25 25 | 
             
                      # @yieldparam [Hash] attrs
         | 
| 26 26 | 
             
                      # @return [Hash]
         | 
| 27 27 | 
             
                      def build_text_attributes(style, &block)
         | 
| 28 | 
            +
                        word_wrap = word_wrap(style['word-wrap'])
         | 
| 29 | 
            +
             | 
| 28 30 | 
             
                        text_attributes = {
         | 
| 29 31 | 
             
                          font: font_family(style['font-family']),
         | 
| 30 32 | 
             
                          size: style['font-size'],
         | 
| @@ -35,12 +37,32 @@ module Thinreports | |
| 35 37 | 
             
                          letter_spacing: letter_spacing(style['letter-spacing']),
         | 
| 36 38 | 
             
                          line_height: line_height(style['line-height']),
         | 
| 37 39 | 
             
                          overflow: text_overflow(style['overflow']),
         | 
| 38 | 
            -
                          word_wrap: word_wrap | 
| 40 | 
            +
                          word_wrap: word_wrap,
         | 
| 41 | 
            +
                          # Deprecated: Use overflow_wrap instead of word_wrap
         | 
| 42 | 
            +
                          overflow_wrap: overflow_wrap(style['overflow-wrap'], word_wrap)
         | 
| 39 43 | 
             
                        }
         | 
| 40 44 | 
             
                        block.call(text_attributes) if block_given?
         | 
| 41 45 | 
             
                        text_attributes
         | 
| 42 46 | 
             
                      end
         | 
| 43 47 |  | 
| 48 | 
            +
                      def overflow_wrap(style, computed_word_wrap)
         | 
| 49 | 
            +
                        case style || migrate_overflow_wrap_from_word_wrap(computed_word_wrap)
         | 
| 50 | 
            +
                        when 'normal', nil then :normal
         | 
| 51 | 
            +
                        when 'anywhere' then :anywhere
         | 
| 52 | 
            +
                        # Deprecated: This is a temporary value for migrating from word_wrap.
         | 
| 53 | 
            +
                        when 'disable-break-word-by-space' then :disable_break_word_by_space
         | 
| 54 | 
            +
                        else :normal
         | 
| 55 | 
            +
                        end
         | 
| 56 | 
            +
                      end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                      def migrate_overflow_wrap_from_word_wrap(computed_word_wrap)
         | 
| 59 | 
            +
                        case computed_word_wrap
         | 
| 60 | 
            +
                        when :none then 'disable-break-word-by-space'
         | 
| 61 | 
            +
                        when :break_word then 'normal'
         | 
| 62 | 
            +
                        else raise ArgumentError, 'Invalid computed word_wrap value'
         | 
| 63 | 
            +
                        end
         | 
| 64 | 
            +
                      end
         | 
| 65 | 
            +
             | 
| 44 66 | 
             
                      # @param [Array<String>] font_names
         | 
| 45 67 | 
             
                      # @return [String]
         | 
| 46 68 | 
             
                      def font_family(font_names)
         | 
| @@ -23,6 +23,7 @@ module Thinreports | |
| 23 23 | 
             
                      # @option attrs [Boolean] :single (false)
         | 
| 24 24 | 
             
                      # @option attrs [:trancate, :shrink_to_fit, :expand] :overflow (:trancate)
         | 
| 25 25 | 
             
                      # @option attrs [:none, :break_word] :word_wrap (:none)
         | 
| 26 | 
            +
                      # @option attrs [:normal, :anywhere, :disable_break_word_by_space] :overflow_wrap (:normal)
         | 
| 26 27 | 
             
                      def text_box(content, x, y, w, h, attrs = {}, &block)
         | 
| 27 28 | 
             
                        w, h = s2f(w, h)
         | 
| 28 29 |  | 
| @@ -32,8 +33,7 @@ module Thinreports | |
| 32 33 | 
             
                          overflow: attrs[:overflow]
         | 
| 33 34 | 
             
                        )
         | 
| 34 35 |  | 
| 35 | 
            -
                         | 
| 36 | 
            -
                        content = text_without_line_wrap(content) if attrs[:word_wrap] == :none
         | 
| 36 | 
            +
                        content = replace_space_to_nbsp(content) if attrs[:overflow_wrap] == :disable_break_word_by_space
         | 
| 37 37 |  | 
| 38 38 | 
             
                        with_text_styles(attrs) do |built_attrs, font_styles|
         | 
| 39 39 | 
             
                          if block
         | 
| @@ -112,6 +112,12 @@ module Thinreports | |
| 112 112 | 
             
                        spacing = attrs.delete(:letter_spacing)
         | 
| 113 113 | 
             
                        attrs[:character_spacing] = s2f(spacing) if spacing
         | 
| 114 114 |  | 
| 115 | 
            +
                        # Disable line breaking on chars such as spaces and hyphens
         | 
| 116 | 
            +
                        attrs[:disable_word_break] = true if attrs.delete(:overflow_wrap) == :anywhere
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                        # Delete unnecessary attributes
         | 
| 119 | 
            +
                        attrs.delete(:word_wrap)
         | 
| 120 | 
            +
             | 
| 115 121 | 
             
                        # Or... with_font_styles(attrs, fontinfo, &block)
         | 
| 116 122 | 
             
                        with_font_styles(attrs, fontinfo) do |modified_attrs, styles|
         | 
| 117 123 | 
             
                          block.call(modified_attrs, styles)
         | 
| @@ -131,7 +137,7 @@ module Thinreports | |
| 131 137 |  | 
| 132 138 | 
             
                      # @param [String] content
         | 
| 133 139 | 
             
                      # @return [String]
         | 
| 134 | 
            -
                      def  | 
| 140 | 
            +
                      def replace_space_to_nbsp(content)
         | 
| 135 141 | 
             
                        content.gsub(/ /, Prawn::Text::NBSP)
         | 
| 136 142 | 
             
                      end
         | 
| 137 143 |  | 
    
        data/lib/thinreports/version.rb
    CHANGED
    
    
    
        data/thinreports.gemspec
    CHANGED
    
    | @@ -15,7 +15,7 @@ Gem::Specification.new do |s| | |
| 15 15 | 
             
              s.license     = 'MIT'
         | 
| 16 16 | 
             
              s.metadata    = { 'rubygems_mfa_required' => 'true' }
         | 
| 17 17 |  | 
| 18 | 
            -
              s.required_ruby_version = '>=  | 
| 18 | 
            +
              s.required_ruby_version = Gem::Requirement.new('>= 3.0.0')
         | 
| 19 19 |  | 
| 20 20 | 
             
              s.files = Dir.chdir(File.expand_path('..', __FILE__)) do
         | 
| 21 21 | 
             
                `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^test/}) }
         | 
| @@ -23,5 +23,7 @@ Gem::Specification.new do |s| | |
| 23 23 | 
             
              s.require_paths = ['lib']
         | 
| 24 24 |  | 
| 25 25 | 
             
              s.add_dependency 'prawn', '>= 2.4.0'
         | 
| 26 | 
            +
              s.add_dependency 'matrix', '~> 0.4'
         | 
| 27 | 
            +
              s.add_dependency 'prawn-disable_word_break', '>= 2.3.1'
         | 
| 26 28 | 
             
              s.add_dependency 'rexml'
         | 
| 27 29 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: thinreports
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.14.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Matsukei Co.,Ltd.
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2023- | 
| 11 | 
            +
            date: 2023-12-30 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: prawn
         | 
| @@ -24,6 +24,34 @@ dependencies: | |
| 24 24 | 
             
                - - ">="
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: 2.4.0
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: matrix
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - "~>"
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '0.4'
         | 
| 34 | 
            +
              type: :runtime
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - "~>"
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '0.4'
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: prawn-disable_word_break
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - ">="
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: 2.3.1
         | 
| 48 | 
            +
              type: :runtime
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - ">="
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: 2.3.1
         | 
| 27 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 56 | 
             
              name: rexml
         | 
| 29 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -180,7 +208,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 180 208 | 
             
              requirements:
         | 
| 181 209 | 
             
              - - ">="
         | 
| 182 210 | 
             
                - !ruby/object:Gem::Version
         | 
| 183 | 
            -
                  version:  | 
| 211 | 
            +
                  version: 3.0.0
         | 
| 184 212 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 185 213 | 
             
              requirements:
         | 
| 186 214 | 
             
              - - ">="
         |