time_math2 0.0.7 → 0.0.8
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/.rubocop_todo.yml +9 -0
- data/CHANGELOG.md +7 -0
- data/lib/time_math/units/base.rb +3 -3
- data/lib/time_math/units/month.rb +3 -3
- data/lib/time_math/units/simple.rb +3 -3
- data/lib/time_math/units/year.rb +4 -4
- data/lib/time_math/util.rb +18 -4
- data/lib/time_math/version.rb +1 -1
- data/time_math2.gemspec +1 -0
- metadata +17 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 35d2a3523dac20994a38d19862500ce1eae98854
         | 
| 4 | 
            +
              data.tar.gz: 82b7664f95fb1879a4911886cd257c41282f9327
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 99dc9701481d961e93e9d803e4b943ce390bd03e55e8b23a779456094051d1fce129c5bb2a3900cf7f1d8c64f20be684839e2f1f80234c6a6c79912e78eb7954
         | 
| 7 | 
            +
              data.tar.gz: 22dcc1315f78bd1d323ae9faed9b5e8ef6b39267ddd65b7c3be40cfe33b4f4ec217c79eecfc89c49c14b37ce60c92497ac49d5b5fa7b5d69a6afbd947687da8b
         | 
    
        data/.rubocop_todo.yml
    ADDED
    
    | @@ -0,0 +1,9 @@ | |
| 1 | 
            +
            # This configuration was generated by
         | 
| 2 | 
            +
            # `rubocop --auto-gen-config`
         | 
| 3 | 
            +
            # on 2017-06-28 17:58:01 +0300 using RuboCop version 0.49.1.
         | 
| 4 | 
            +
            # The point is for the user to remove these configuration records
         | 
| 5 | 
            +
            # one by one as the offenses are removed from the code base.
         | 
| 6 | 
            +
            # Note that changes in the inspected code, or installation of new
         | 
| 7 | 
            +
            # versions of RuboCop, may require this file to be generated again.
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            # Offense count: 13
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,5 +1,12 @@ | |
| 1 1 | 
             
            # TimeMath Changelog
         | 
| 2 2 |  | 
| 3 | 
            +
            # 0.0.8 (2017-06-02)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * Fix `Units::Base#measure` to correctly measure negative distances (e.g. from > to, thanks @kenn for
         | 
| 6 | 
            +
              pointing it);
         | 
| 7 | 
            +
            * Cleanup the same method to work correctly with sub-second precisions and different Time-y types.
         | 
| 8 | 
            +
            * Drop Ruby 2.0 support, finally.
         | 
| 9 | 
            +
             | 
| 3 10 | 
             
            # 0.0.7 (2017-05-31)
         | 
| 4 11 |  | 
| 5 12 | 
             
            * Fix month advancing/decreasing. Thanks @dikond for pointing to problem!
         | 
    
        data/lib/time_math/units/base.rb
    CHANGED
    
    | @@ -195,9 +195,9 @@ module TimeMath | |
| 195 195 | 
             
                  #
         | 
| 196 196 | 
             
                  # @return [Integer] how many full units are inside the period.
         | 
| 197 197 | 
             
                  # :nocov:
         | 
| 198 | 
            -
                  def measure(from, to) | 
| 199 | 
            -
                     | 
| 200 | 
            -
             | 
| 198 | 
            +
                  def measure(from, to)
         | 
| 199 | 
            +
                    from, to = from.to_time, to.to_time unless from.class == to.class
         | 
| 200 | 
            +
                    from <= to ? _measure(from, to) : -_measure(to, from)
         | 
| 201 201 | 
             
                  end
         | 
| 202 202 | 
             
                  # :nocov:
         | 
| 203 203 |  | 
| @@ -8,15 +8,15 @@ module TimeMath | |
| 8 8 | 
             
                    super(:month)
         | 
| 9 9 | 
             
                  end
         | 
| 10 10 |  | 
| 11 | 
            -
                   | 
| 11 | 
            +
                  protected
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  def _measure(from, to)
         | 
| 12 14 | 
             
                    ydiff = to.year - from.year
         | 
| 13 15 | 
             
                    mdiff = to.month - from.month
         | 
| 14 16 |  | 
| 15 17 | 
             
                    to.day >= from.day ? (ydiff * 12 + mdiff) : (ydiff * 12 + mdiff - 1)
         | 
| 16 18 | 
             
                  end
         | 
| 17 19 |  | 
| 18 | 
            -
                  protected
         | 
| 19 | 
            -
             | 
| 20 20 | 
             
                  def _advance(tm, steps)
         | 
| 21 21 | 
             
                    target = tm.month + steps.to_i
         | 
| 22 22 | 
             
                    m = (target - 1) % 12 + 1
         | 
| @@ -6,12 +6,12 @@ module TimeMath | |
| 6 6 | 
             
                    sz * MULTIPLIERS[index..-1].inject(:*)
         | 
| 7 7 | 
             
                  end
         | 
| 8 8 |  | 
| 9 | 
            -
                   | 
| 9 | 
            +
                  protected
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  def _measure(from, to)
         | 
| 10 12 | 
             
                    ((to.to_time - from.to_time) / to_seconds).to_i
         | 
| 11 13 | 
             
                  end
         | 
| 12 14 |  | 
| 13 | 
            -
                  protected
         | 
| 14 | 
            -
             | 
| 15 15 | 
             
                  def _advance(tm, steps)
         | 
| 16 16 | 
             
                    _shift(tm, to_seconds(steps))
         | 
| 17 17 | 
             
                  end
         | 
    
        data/lib/time_math/units/year.rb
    CHANGED
    
    | @@ -6,16 +6,16 @@ module TimeMath | |
| 6 6 | 
             
                    super(:year)
         | 
| 7 7 | 
             
                  end
         | 
| 8 8 |  | 
| 9 | 
            -
                   | 
| 10 | 
            -
             | 
| 9 | 
            +
                  protected
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  def _measure(from, to)
         | 
| 12 | 
            +
                    if Util.merge(from, year: to.year) <= to
         | 
| 11 13 | 
             
                      to.year - from.year
         | 
| 12 14 | 
             
                    else
         | 
| 13 15 | 
             
                      to.year - from.year - 1
         | 
| 14 16 | 
             
                    end
         | 
| 15 17 | 
             
                  end
         | 
| 16 18 |  | 
| 17 | 
            -
                  protected
         | 
| 18 | 
            -
             | 
| 19 19 | 
             
                  def _advance(tm, steps)
         | 
| 20 20 | 
             
                    Util.merge(tm, year: tm.year + steps.to_i)
         | 
| 21 21 | 
             
                  end
         | 
    
        data/lib/time_math/util.rb
    CHANGED
    
    | @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            module TimeMath
         | 
| 2 2 | 
             
              # @private
         | 
| 3 3 | 
             
              module Util
         | 
| 4 | 
            -
                 | 
| 5 | 
            -
                NATURAL_UNITS =  | 
| 4 | 
            +
                COMMON_UNITS = %i[year month day hour min sec].freeze
         | 
| 5 | 
            +
                NATURAL_UNITS = [*COMMON_UNITS, :subsec].freeze
         | 
| 6 6 | 
             
                EMPTY_VALUES = [nil, 1, 1, 0, 0, 0].freeze
         | 
| 7 7 |  | 
| 8 8 | 
             
                module_function
         | 
| @@ -43,11 +43,12 @@ module TimeMath | |
| 43 43 | 
             
                end
         | 
| 44 44 |  | 
| 45 45 | 
             
                def tm_to_hash(tm)
         | 
| 46 | 
            -
                   | 
| 46 | 
            +
                  NATURAL_UNITS.map { |s| [s, extract_component(tm, s)] }.to_h
         | 
| 47 47 | 
             
                end
         | 
| 48 48 |  | 
| 49 49 | 
             
                def hash_to_tm(origin, hash)
         | 
| 50 | 
            -
                  components = NATURAL_UNITS.map { |s| hash[s] || 0 }
         | 
| 50 | 
            +
                  components = NATURAL_UNITS[0..-2].map { |s| hash[s] || 0 }
         | 
| 51 | 
            +
                  components[-1] += (hash[:subsec] || hash[:sec_fraction] || 0)
         | 
| 51 52 | 
             
                  array_to_tm(origin, *components)
         | 
| 52 53 | 
             
                end
         | 
| 53 54 |  | 
| @@ -63,5 +64,18 @@ module TimeMath | |
| 63 64 | 
             
                    end
         | 
| 64 65 | 
             
                  components[2] = [components[2], days_in_month].min
         | 
| 65 66 | 
             
                end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                private
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                module_function
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                def extract_component(tm, component)
         | 
| 73 | 
            +
                  case component
         | 
| 74 | 
            +
                  when :subsec, :sec_fraction
         | 
| 75 | 
            +
                    tm.is_a?(Time) ? tm.subsec : tm.send(:sec_fraction)
         | 
| 76 | 
            +
                  when *COMMON_UNITS
         | 
| 77 | 
            +
                    tm.send(component)
         | 
| 78 | 
            +
                  end
         | 
| 79 | 
            +
                end
         | 
| 66 80 | 
             
              end
         | 
| 67 81 | 
             
            end
         | 
    
        data/lib/time_math/version.rb
    CHANGED
    
    
    
        data/time_math2.gemspec
    CHANGED
    
    | @@ -31,6 +31,7 @@ Gem::Specification.new do |s| | |
| 31 31 |  | 
| 32 32 | 
             
              s.add_development_dependency 'rubocop', '>= 0.30'
         | 
| 33 33 | 
             
              s.add_development_dependency 'rspec', '>= 3'
         | 
| 34 | 
            +
              s.add_development_dependency 'rubocop-rspec'
         | 
| 34 35 | 
             
              s.add_development_dependency 'rspec-its', '~> 1'
         | 
| 35 36 | 
             
              s.add_development_dependency 'simplecov', '~> 0.9'
         | 
| 36 37 | 
             
              s.add_development_dependency 'rake'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: time_math2
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.8
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Victor Shepelev
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017- | 
| 11 | 
            +
            date: 2017-07-02 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rubocop
         | 
| @@ -38,6 +38,20 @@ dependencies: | |
| 38 38 | 
             
                - - ">="
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 40 | 
             
                    version: '3'
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: rubocop-rspec
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - ">="
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: '0'
         | 
| 48 | 
            +
              type: :development
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - ">="
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '0'
         | 
| 41 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 56 | 
             
              name: rspec-its
         | 
| 43 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -118,6 +132,7 @@ executables: [] | |
| 118 132 | 
             
            extensions: []
         | 
| 119 133 | 
             
            extra_rdoc_files: []
         | 
| 120 134 | 
             
            files:
         | 
| 135 | 
            +
            - ".rubocop_todo.yml"
         | 
| 121 136 | 
             
            - ".yardopts"
         | 
| 122 137 | 
             
            - CHANGELOG.md
         | 
| 123 138 | 
             
            - LICENSE.txt
         |