dotiw 5.3.0 → 5.3.3
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/CHANGELOG.md +12 -0
- data/README.markdown +22 -0
- data/lib/dotiw/action_view/helpers/date_helper.rb +16 -4
- data/lib/dotiw/methods.rb +16 -3
- data/lib/dotiw/version.rb +1 -1
- data/spec/lib/dotiw_spec.rb +150 -34
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 156f786ed11b28af2e890b6612fb07fb09bd462dc818a5bb8bb9075a518044d7
         | 
| 4 | 
            +
              data.tar.gz: ca01c5a48869011c7c1fe9f08cf8c6ad953920b4ea5bc4dd26e21850131b6363
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 807d4628412b8d810c072ea5cf4e10ed2cb7e280bdeaeb1b65906f1e203bd1155c5a7457d21d4c8c8c112a5a7d0a9b9b9a3c9ff5f1100d6ff0a255f64380a1f3
         | 
| 7 | 
            +
              data.tar.gz: 78c14c9c5ea09eb378a380fe686672e925665fdebd9f75096a5cdecc1f9d8497d9cf7839a8cad4dd9d84e4938441e1380c076ecb3ccbf0a24359aa70993da9a2
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,15 @@ | |
| 1 | 
            +
            ## 5.3.3 (2022/04/25)
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            * [#128](https://github.com/radar/distance_of_time_in_words/pull/128): Adds support for numeric values for both the `from_time` and `to_time` arguments in the `#distance_of_time_in_words` helper - [@bjedrocha](https://github.com/bjedrocha).
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            ## 5.3.2 (2021/11/08)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            * [#126](https://github.com/radar/distance_of_time_in_words/pull/126): Fixes `#distance_of_time_in_words_to_now` with `vague: true` when supplied without `include_seconds` argument - [@mozcomp](https://github.com/mozcomp).
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            ## 5.3.1 (2021/03/26)
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            * [#124](https://github.com/radar/distance_of_time_in_words/pull/124): Fixes compact formatting for distance_of_time_in_words - [@rposborne](https://github.com/rposborne).
         | 
| 12 | 
            +
             | 
| 1 13 | 
             
            ## 5.3.0 (2021/03/18)
         | 
| 2 14 |  | 
| 3 15 | 
             
            * [#115](https://github.com/radar/distance_of_time_in_words/pull/115): Use constants for time durations (2x faster, 3.5x less memory) - [@krzysiek1507](https://github.com/krzysiek1507).
         | 
    
        data/README.markdown
    CHANGED
    
    | @@ -58,6 +58,22 @@ Better than "about 1 year", am I right? Of course I am. | |
| 58 58 | 
             
            => "1 second"
         | 
| 59 59 | 
             
            ```
         | 
| 60 60 |  | 
| 61 | 
            +
            It also supports numeric arguments like the original Rails version:
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            ```ruby
         | 
| 64 | 
            +
            >> distance_of_time_in_words(0, 150)
         | 
| 65 | 
            +
            => "2 minutes and 30 seconds"
         | 
| 66 | 
            +
            ```
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            as an alternative to:
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            ```ruby
         | 
| 71 | 
            +
            >> distance_of_time_in_words(Time.now, Time.now + 2.5.minutes)
         | 
| 72 | 
            +
            => "2 minutes and 30 seconds"
         | 
| 73 | 
            +
            ```
         | 
| 74 | 
            +
             | 
| 75 | 
            +
            This is useful if you're just interested in "stringifying" the length of time. Alternatively, you can use the `#distance_of_time` helper as described [below](#distance\_of\_time).
         | 
| 76 | 
            +
             | 
| 61 77 | 
             
            The third argument for this method is whether or not to include seconds. By default this is `false` (because in Rails' `distance_of_time_in_words` it is), you can turn it on though by passing `true` as the third argument:
         | 
| 62 78 |  | 
| 63 79 | 
             
            ```ruby
         | 
| @@ -67,6 +83,8 @@ The third argument for this method is whether or not to include seconds. By defa | |
| 67 83 |  | 
| 68 84 | 
             
            Yes this could just be merged into the options hash but I'm leaving it here to ensure "backwards-compatibility", because that's just an insanely radical thing to do. \m/
         | 
| 69 85 |  | 
| 86 | 
            +
            Alternatively this can be included in the options hash as `include_seconds: true` removing this argument altogether.
         | 
| 87 | 
            +
             | 
| 70 88 | 
             
            The last argument is an optional options hash that can be used to manipulate behavior and (which uses `to_sentence`).
         | 
| 71 89 |  | 
| 72 90 | 
             
            Don't like having to pass in `Time.now` all the time? Then use `time_ago_in_words` or `distance_of_time_in_words_to_now` which also will *rock your
         | 
| @@ -99,6 +117,10 @@ This will also be passed to `to_sentence`. | |
| 99 117 |  | 
| 100 118 | 
             
            Specify this if you want it to use the old `distance_of_time_in_words`. The value can be anything except `nil` or `false`.
         | 
| 101 119 |  | 
| 120 | 
            +
            #### :include_seconds
         | 
| 121 | 
            +
             | 
| 122 | 
            +
            As described above this option is the equivalent to the third argument whether to include seconds.
         | 
| 123 | 
            +
             | 
| 102 124 | 
             
            #### :accumulate_on
         | 
| 103 125 |  | 
| 104 126 | 
             
            Specifies the maximum output unit which will accumulate all the surplus. Say you set it to seconds and your time difference is of 2 minutes then the output would be 120 seconds.
         | 
| @@ -9,15 +9,17 @@ module ActionView | |
| 9 9 | 
             
                  include DOTIW::Methods
         | 
| 10 10 |  | 
| 11 11 | 
             
                  def distance_of_time_in_words(from_time, to_time = 0, include_seconds_or_options = {}, options = {})
         | 
| 12 | 
            -
                     | 
| 12 | 
            +
                    options = merge_options(include_seconds_or_options, options)
         | 
| 13 | 
            +
                    return _distance_of_time_in_words(from_time, to_time, options.except(:vague)) if options[:vague]
         | 
| 13 14 |  | 
| 14 | 
            -
                    DOTIW::Methods.distance_of_time_in_words(from_time, to_time,  | 
| 15 | 
            +
                    DOTIW::Methods.distance_of_time_in_words(from_time, to_time, options.except(:vague))
         | 
| 15 16 | 
             
                  end
         | 
| 16 17 |  | 
| 17 18 | 
             
                  def distance_of_time_in_words_to_now(to_time = 0, include_seconds_or_options = {}, options = {})
         | 
| 18 | 
            -
                     | 
| 19 | 
            +
                    options = merge_options(include_seconds_or_options, options)
         | 
| 20 | 
            +
                    return _distance_of_time_in_words(Time.now, to_time, options.except(:vague)) if options[:vague]
         | 
| 19 21 |  | 
| 20 | 
            -
                    DOTIW::Methods.distance_of_time_in_words(Time.now, to_time,  | 
| 22 | 
            +
                    DOTIW::Methods.distance_of_time_in_words(Time.now, to_time, options.except(:vague))
         | 
| 21 23 | 
             
                  end
         | 
| 22 24 |  | 
| 23 25 | 
             
                  def distance_of_time_in_percent(from_time, current_time, to_time, options = {})
         | 
| @@ -27,6 +29,16 @@ module ActionView | |
| 27 29 | 
             
                    result = ((current_time - from_time) / distance) * 100
         | 
| 28 30 | 
             
                    number_with_precision(result, options).to_s + '%'
         | 
| 29 31 | 
             
                  end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  private
         | 
| 34 | 
            +
                  def merge_options(include_seconds_or_options, options)
         | 
| 35 | 
            +
                    if include_seconds_or_options.is_a?(Hash)
         | 
| 36 | 
            +
                      options.merge(include_seconds_or_options)
         | 
| 37 | 
            +
                    else
         | 
| 38 | 
            +
                      options.merge(include_seconds: !!include_seconds_or_options)
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
                  
         | 
| 30 42 | 
             
                end
         | 
| 31 43 | 
             
              end
         | 
| 32 44 | 
             
            end
         | 
    
        data/lib/dotiw/methods.rb
    CHANGED
    
    | @@ -20,7 +20,9 @@ module DOTIW | |
| 20 20 | 
             
                end
         | 
| 21 21 |  | 
| 22 22 | 
             
                def distance_of_time_in_words(from_time, to_time = 0, include_seconds_or_options = {}, options = {})
         | 
| 23 | 
            -
                   | 
| 23 | 
            +
                  from_time = normalize_distance_of_time_argument_to_time(from_time)
         | 
| 24 | 
            +
                  to_time = normalize_distance_of_time_argument_to_time(to_time)
         | 
| 25 | 
            +
                  from_time, to_time = to_time, from_time if from_time > to_time
         | 
| 24 26 |  | 
| 25 27 | 
             
                  if include_seconds_or_options.is_a?(Hash)
         | 
| 26 28 | 
             
                    options = include_seconds_or_options
         | 
| @@ -28,7 +30,8 @@ module DOTIW | |
| 28 30 | 
             
                    options = options.dup
         | 
| 29 31 | 
             
                    options[:include_seconds] ||= !!include_seconds_or_options
         | 
| 30 32 | 
             
                  end
         | 
| 31 | 
            -
             | 
| 33 | 
            +
             | 
| 34 | 
            +
                  return distance_of_time(to_time.to_i, options) if from_time.to_i == 0
         | 
| 32 35 |  | 
| 33 36 | 
             
                  options = options_with_scope(options)
         | 
| 34 37 | 
             
                  hash = distance_of_time_in_words_hash(from_time, to_time, options)
         | 
| @@ -41,6 +44,16 @@ module DOTIW | |
| 41 44 |  | 
| 42 45 | 
             
                private
         | 
| 43 46 |  | 
| 47 | 
            +
                def normalize_distance_of_time_argument_to_time(value)
         | 
| 48 | 
            +
                  if value.is_a?(Numeric)
         | 
| 49 | 
            +
                    Time.at(value)
         | 
| 50 | 
            +
                  elsif value.respond_to?(:to_time)
         | 
| 51 | 
            +
                    value.to_time
         | 
| 52 | 
            +
                  else
         | 
| 53 | 
            +
                    raise ArgumentError, "#{value.inspect} can't be converted to a Time value"
         | 
| 54 | 
            +
                  end
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
             | 
| 44 57 | 
             
                def options_with_scope(options)
         | 
| 45 58 | 
             
                  if options.key?(:compact)
         | 
| 46 59 | 
             
                    options.merge(scope: DOTIW::DEFAULT_I18N_SCOPE_COMPACT)
         | 
| @@ -102,7 +115,7 @@ module DOTIW | |
| 102 115 | 
             
                                                                   default: :'support.array.last_word_connector',
         | 
| 103 116 | 
             
                                                                   locale: options[:locale]
         | 
| 104 117 |  | 
| 105 | 
            -
                  output.to_sentence(options.except(:accumulate_on))
         | 
| 118 | 
            +
                  output.to_sentence(options.except(:accumulate_on, :compact))
         | 
| 106 119 | 
             
                end
         | 
| 107 120 | 
             
              end
         | 
| 108 121 | 
             
            end
         | 
    
        data/lib/dotiw/version.rb
    CHANGED
    
    
    
        data/spec/lib/dotiw_spec.rb
    CHANGED
    
    | @@ -101,11 +101,6 @@ describe 'A better distance_of_time_in_words' do | |
| 101 101 | 
             
                    expect(DOTIW.languages.map(&:to_s).sort).to eq languages.sort
         | 
| 102 102 | 
             
                  end
         | 
| 103 103 |  | 
| 104 | 
            -
                  it 'raises ArgumentError when nil is passed for time' do
         | 
| 105 | 
            -
                    expect { distance_of_time_in_words(nil) }.to raise_error(ArgumentError)
         | 
| 106 | 
            -
                    expect { distance_of_time_in_words(nil, nil) }.to raise_error(ArgumentError)
         | 
| 107 | 
            -
                  end
         | 
| 108 | 
            -
             | 
| 109 104 | 
             
                  DOTIW.languages.each do |lang|
         | 
| 110 105 | 
             
                    context lang do
         | 
| 111 106 | 
             
                      YAML.safe_load(
         | 
| @@ -135,32 +130,33 @@ describe 'A better distance_of_time_in_words' do | |
| 135 130 | 
             
                end
         | 
| 136 131 |  | 
| 137 132 | 
             
                [
         | 
| 138 | 
            -
                  [START_TIME, START_TIME + 5.days + 3.minutes, '5 days and 3 minutes'],
         | 
| 139 | 
            -
                  [START_TIME, START_TIME + 1.minute, '1 minute'],
         | 
| 140 | 
            -
                  [START_TIME, START_TIME + 3.years, '3 years'],
         | 
| 141 | 
            -
                  [START_TIME, START_TIME + 10.years, '10 years'],
         | 
| 142 | 
            -
                  [START_TIME, START_TIME + 8.months, '8 months'],
         | 
| 143 | 
            -
                  [START_TIME, START_TIME + 3.hour, '3 hours'],
         | 
| 144 | 
            -
                  [START_TIME, START_TIME + 13.months, '1 year and 1 month'],
         | 
| 133 | 
            +
                  [START_TIME, START_TIME + 5.days + 3.minutes, '5 days and 3 minutes', '5d3m'],
         | 
| 134 | 
            +
                  [START_TIME, START_TIME + 1.minute, '1 minute', '1m'],
         | 
| 135 | 
            +
                  [START_TIME, START_TIME + 3.years, '3 years', '3y'],
         | 
| 136 | 
            +
                  [START_TIME, START_TIME + 10.years, '10 years', '10y'],
         | 
| 137 | 
            +
                  [START_TIME, START_TIME + 8.months, '8 months', '8mo'],
         | 
| 138 | 
            +
                  [START_TIME, START_TIME + 3.hour, '3 hours', '3h'],
         | 
| 139 | 
            +
                  [START_TIME, START_TIME + 13.months, '1 year and 1 month', '1y1mo'],
         | 
| 145 140 | 
             
                  # Any numeric sequence is merely coincidental.
         | 
| 146 141 | 
             
                  [START_TIME, START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds,
         | 
| 147 | 
            -
                   '1 year, 2 months, 3 weeks, 4 days, 5 hours, 6 minutes, and 7 seconds'],
         | 
| 148 | 
            -
                  ['2009-3-16'.to_time, '2008-4-14'.to_time, '11 months and 2 days'],
         | 
| 149 | 
            -
                  ['2009-3-16'.to_time + 1.minute, '2008-4-14'.to_time, '11 months, 2 days, and 1 minute'],
         | 
| 150 | 
            -
                  ['2009-4-14'.to_time, '2008-3-16'.to_time, '1 year, 4 weeks, and 1 day'],
         | 
| 151 | 
            -
                  ['2009-2-01'.to_time, '2009-3-01'.to_time, '1 month'],
         | 
| 152 | 
            -
                  ['2008-2-01'.to_time, '2008-3-01'.to_time, '1 month'],
         | 
| 153 | 
            -
                  [Date.parse('31.03.2015').to_time, Time.parse('01.03.2016'), '10 months, 4 weeks, and 2 days'],
         | 
| 154 | 
            -
                  [Date.new(2014, 1, 31), Date.new(2014, 3, 1), '4 weeks and 1 day'],
         | 
| 155 | 
            -
                  ['2008-2-01'.to_time, '2008-3-01'.to_time, '1 month'],
         | 
| 156 | 
            -
                  ['2014-1-31'.to_time, '2014-3-01'.to_time, '4 weeks and 1 day'],
         | 
| 157 | 
            -
                  ['2014-1-31'.to_time, '2014-3-02'.to_time, '4 weeks and 2 days'],
         | 
| 158 | 
            -
                  ['2016-1-31'.to_time, '2016-3-01'.to_time, '4 weeks and 2 days'],
         | 
| 159 | 
            -
                  ['2016-1-31'.to_time, '2016-3-02'.to_time, '1 month']
         | 
| 160 | 
            -
                ].each do |start, finish, output|
         | 
| 142 | 
            +
                   '1 year, 2 months, 3 weeks, 4 days, 5 hours, 6 minutes, and 7 seconds', '1y2mo3w4d5h6m7s'],
         | 
| 143 | 
            +
                  ['2009-3-16'.to_time, '2008-4-14'.to_time, '11 months and 2 days', '11mo2d'],
         | 
| 144 | 
            +
                  ['2009-3-16'.to_time + 1.minute, '2008-4-14'.to_time, '11 months, 2 days, and 1 minute', '11mo2d1m'],
         | 
| 145 | 
            +
                  ['2009-4-14'.to_time, '2008-3-16'.to_time, '1 year, 4 weeks, and 1 day', '1y4w1d'],
         | 
| 146 | 
            +
                  ['2009-2-01'.to_time, '2009-3-01'.to_time, '1 month', '1mo'],
         | 
| 147 | 
            +
                  ['2008-2-01'.to_time, '2008-3-01'.to_time, '1 month', '1mo'],
         | 
| 148 | 
            +
                  [Date.parse('31.03.2015').to_time, Time.parse('01.03.2016'), '10 months, 4 weeks, and 2 days', '10mo4w2d'],
         | 
| 149 | 
            +
                  [Date.new(2014, 1, 31), Date.new(2014, 3, 1), '4 weeks and 1 day', '4w1d'],
         | 
| 150 | 
            +
                  ['2008-2-01'.to_time, '2008-3-01'.to_time, '1 month', '1mo'],
         | 
| 151 | 
            +
                  ['2014-1-31'.to_time, '2014-3-01'.to_time, '4 weeks and 1 day', '4w1d'],
         | 
| 152 | 
            +
                  ['2014-1-31'.to_time, '2014-3-02'.to_time, '4 weeks and 2 days', '4w2d'],
         | 
| 153 | 
            +
                  ['2016-1-31'.to_time, '2016-3-01'.to_time, '4 weeks and 2 days', '4w2d'],
         | 
| 154 | 
            +
                  ['2016-1-31'.to_time, '2016-3-02'.to_time, '1 month', '1mo']
         | 
| 155 | 
            +
                ].each do |start, finish, output, compact_result|
         | 
| 161 156 | 
             
                  it "should be #{output}" do
         | 
| 162 157 | 
             
                    expect(distance_of_time_in_words(start, finish, true)).to eq(output)
         | 
| 163 158 | 
             
                    expect(distance_of_time_in_words(finish, start, true)).to eq(output)
         | 
| 159 | 
            +
                    expect(distance_of_time_in_words(start, finish, true, compact: true)).to eq(compact_result)
         | 
| 164 160 | 
             
                  end
         | 
| 165 161 | 
             
                end
         | 
| 166 162 |  | 
| @@ -240,6 +236,38 @@ describe 'A better distance_of_time_in_words' do | |
| 240 236 | 
             
                    end
         | 
| 241 237 | 
             
                  end
         | 
| 242 238 | 
             
                end
         | 
| 239 | 
            +
             | 
| 240 | 
            +
                describe 'with mixed inputs' do
         | 
| 241 | 
            +
                  # Further backwards compatability with the original rails
         | 
| 242 | 
            +
                  # distance_of_time_in_words helper.
         | 
| 243 | 
            +
                  [
         | 
| 244 | 
            +
                    [0, 2.5.minutes.to_i, '2 minutes and 30 seconds'],
         | 
| 245 | 
            +
                    [10.minutes.to_i, 0, '10 minutes'],
         | 
| 246 | 
            +
                    [0, 24.weeks.to_i, '5 months, 2 weeks, and 1 day'],
         | 
| 247 | 
            +
                    [0, 0, 'less than 1 second'],
         | 
| 248 | 
            +
                  ].each do |start, finish, output|
         | 
| 249 | 
            +
                    it "should be #{output}" do
         | 
| 250 | 
            +
                      expect(distance_of_time_in_words(start, finish)).to eq(output)
         | 
| 251 | 
            +
                    end
         | 
| 252 | 
            +
                  end
         | 
| 253 | 
            +
             | 
| 254 | 
            +
                  context "of which one or both can't be converted to a Time value" do
         | 
| 255 | 
            +
                    let(:invalid_inputs) do
         | 
| 256 | 
            +
                      [
         | 
| 257 | 
            +
                        [nil, 5.minutes],
         | 
| 258 | 
            +
                        [nil, double(:does_not_respond_to_time)],
         | 
| 259 | 
            +
                        [nil],
         | 
| 260 | 
            +
                        [nil, nil],
         | 
| 261 | 
            +
                      ]
         | 
| 262 | 
            +
                    end
         | 
| 263 | 
            +
             | 
| 264 | 
            +
                    it "should raise an ArgumentError" do
         | 
| 265 | 
            +
                      invalid_inputs.each do |start, finish|
         | 
| 266 | 
            +
                        expect { distance_of_time_in_words(start, finish) }.to raise_error(ArgumentError)
         | 
| 267 | 
            +
                      end
         | 
| 268 | 
            +
                    end
         | 
| 269 | 
            +
                  end
         | 
| 270 | 
            +
                end
         | 
| 243 271 | 
             
              end
         | 
| 244 272 |  | 
| 245 273 | 
             
              describe 'with output options' do
         | 
| @@ -319,7 +347,34 @@ describe 'A better distance_of_time_in_words' do | |
| 319 347 | 
             
                end
         | 
| 320 348 |  | 
| 321 349 | 
             
                if defined?(ActionView)
         | 
| 322 | 
            -
                  describe 'ActionView' do
         | 
| 350 | 
            +
                  describe 'ActionView without include seconds argument' do
         | 
| 351 | 
            +
                    [
         | 
| 352 | 
            +
                      [START_TIME,
         | 
| 353 | 
            +
                      START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds,
         | 
| 354 | 
            +
                      { vague: true },
         | 
| 355 | 
            +
                      'about 1 year'],
         | 
| 356 | 
            +
                      [START_TIME,
         | 
| 357 | 
            +
                      START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds,
         | 
| 358 | 
            +
                      { vague: 'Yes please' },
         | 
| 359 | 
            +
                      'about 1 year'],
         | 
| 360 | 
            +
                      [START_TIME,
         | 
| 361 | 
            +
                      START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds,
         | 
| 362 | 
            +
                      { vague: false },
         | 
| 363 | 
            +
                      '1 year, 2 months, 3 weeks, 4 days, 5 hours, and 6 minutes'],
         | 
| 364 | 
            +
                      [START_TIME,
         | 
| 365 | 
            +
                      START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds,
         | 
| 366 | 
            +
                      { vague: nil },
         | 
| 367 | 
            +
                      '1 year, 2 months, 3 weeks, 4 days, 5 hours, and 6 minutes']
         | 
| 368 | 
            +
                    ].each do |start, finish, options, output|
         | 
| 369 | 
            +
                      it "should be #{output}" do
         | 
| 370 | 
            +
                        expect(distance_of_time_in_words(start, finish, options)).to eq(output)
         | 
| 371 | 
            +
                      end
         | 
| 372 | 
            +
                    end
         | 
| 373 | 
            +
                  end
         | 
| 374 | 
            +
                end
         | 
| 375 | 
            +
             | 
| 376 | 
            +
                if defined?(ActionView)
         | 
| 377 | 
            +
                  describe 'ActionView with include seconds argument' do
         | 
| 323 378 | 
             
                    [
         | 
| 324 379 | 
             
                      [START_TIME,
         | 
| 325 380 | 
             
                       START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds,
         | 
| @@ -342,7 +397,7 @@ describe 'A better distance_of_time_in_words' do | |
| 342 397 | 
             
                        expect(distance_of_time_in_words(start, finish, true, options)).to eq(output)
         | 
| 343 398 | 
             
                      end
         | 
| 344 399 | 
             
                    end
         | 
| 345 | 
            -
             | 
| 400 | 
            +
              
         | 
| 346 401 | 
             
                    context 'via ActionController::Base.helpers' do
         | 
| 347 402 | 
             
                      it '#distance_of_time_in_words' do
         | 
| 348 403 | 
             
                        end_time = START_TIME + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds
         | 
| @@ -368,32 +423,93 @@ describe 'A better distance_of_time_in_words' do | |
| 368 423 | 
             
                        end
         | 
| 369 424 |  | 
| 370 425 | 
             
                        context 'without options' do
         | 
| 371 | 
            -
                          it 'shows detailed duration' do
         | 
| 426 | 
            +
                          it 'shows detailed duration without seconds' do
         | 
| 372 427 | 
             
                            expected = '3 days and 14 minutes'
         | 
| 373 428 | 
             
                            actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(Time.now - 3.days - 14.minutes)
         | 
| 374 429 | 
             
                            expect(actual).to eq(expected)
         | 
| 375 430 | 
             
                          end
         | 
| 376 431 | 
             
                        end
         | 
| 377 432 |  | 
| 378 | 
            -
                        context 'with vague option true' do
         | 
| 433 | 
            +
                        context 'with seconds false and vague option true' do
         | 
| 434 | 
            +
                          it 'shows vague duration' do
         | 
| 435 | 
            +
                            expected = '3 days'
         | 
| 436 | 
            +
                            actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
         | 
| 437 | 
            +
                              Time.now - 3.days - 14.minutes - 20.seconds, false, vague: true
         | 
| 438 | 
            +
                            )
         | 
| 439 | 
            +
                            expect(actual).to eq(expected)
         | 
| 440 | 
            +
                          end
         | 
| 441 | 
            +
                        end
         | 
| 442 | 
            +
             | 
| 443 | 
            +
                        context 'with seconds true and vague option true' do
         | 
| 379 444 | 
             
                          it 'shows vague duration' do
         | 
| 380 445 | 
             
                            expected = '3 days'
         | 
| 381 446 | 
             
                            actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
         | 
| 382 | 
            -
                              Time.now - 3.days - 14.minutes,  | 
| 447 | 
            +
                              Time.now - 3.days - 14.minutes - 20.seconds, true, vague: true
         | 
| 383 448 | 
             
                            )
         | 
| 384 449 | 
             
                            expect(actual).to eq(expected)
         | 
| 385 450 | 
             
                          end
         | 
| 386 451 | 
             
                        end
         | 
| 387 452 |  | 
| 388 | 
            -
                        context 'with vague option false' do
         | 
| 389 | 
            -
                          it 'shows detailed duration' do
         | 
| 453 | 
            +
                        context 'with seconds false and vague option false' do
         | 
| 454 | 
            +
                          it 'shows detailed duration without seconds' do
         | 
| 390 455 | 
             
                            expected = '3 days and 14 minutes'
         | 
| 391 456 | 
             
                            actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
         | 
| 392 | 
            -
                              Time.now - 3.days - 14.minutes, false, vague: false
         | 
| 457 | 
            +
                              Time.now - 3.days - 14.minutes - 20.seconds, false, vague: false
         | 
| 393 458 | 
             
                            )
         | 
| 394 459 | 
             
                            expect(actual).to eq(expected)
         | 
| 395 460 | 
             
                          end
         | 
| 396 461 | 
             
                        end
         | 
| 462 | 
            +
             | 
| 463 | 
            +
                        context 'with seconds true and vague option false' do
         | 
| 464 | 
            +
                          it 'shows detailed duration with seconds' do
         | 
| 465 | 
            +
                            expected = '3 days, 14 minutes, and 20 seconds'
         | 
| 466 | 
            +
                            actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
         | 
| 467 | 
            +
                              Time.now - 3.days - 14.minutes - 20.seconds, true, vague: false
         | 
| 468 | 
            +
                            )
         | 
| 469 | 
            +
                            expect(actual).to eq(expected)
         | 
| 470 | 
            +
                          end
         | 
| 471 | 
            +
                        end
         | 
| 472 | 
            +
             | 
| 473 | 
            +
                        context 'without seconds and vague option false' do
         | 
| 474 | 
            +
                          it 'shows detailed duration without seconds' do
         | 
| 475 | 
            +
                            expected = '3 days and 14 minutes'
         | 
| 476 | 
            +
                            actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
         | 
| 477 | 
            +
                              Time.now - 3.days - 14.minutes - 20.seconds, vague: false
         | 
| 478 | 
            +
                            )
         | 
| 479 | 
            +
                            expect(actual).to eq(expected)
         | 
| 480 | 
            +
                          end
         | 
| 481 | 
            +
                        end
         | 
| 482 | 
            +
             | 
| 483 | 
            +
                        context 'without seconds and vague option true' do
         | 
| 484 | 
            +
                          it 'shows vague duration' do
         | 
| 485 | 
            +
                            expected = '3 days'
         | 
| 486 | 
            +
                            actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
         | 
| 487 | 
            +
                              Time.now - 3.days - 14.minutes - 20.seconds, vague: true
         | 
| 488 | 
            +
                            )
         | 
| 489 | 
            +
                            expect(actual).to eq(expected)
         | 
| 490 | 
            +
                          end
         | 
| 491 | 
            +
                        end
         | 
| 492 | 
            +
             | 
| 493 | 
            +
                        context 'with options include_seconds true and vague option false' do
         | 
| 494 | 
            +
                          it 'shows detailed duration with seconds' do
         | 
| 495 | 
            +
                            expected = '3 days, 14 minutes, and 20 seconds'
         | 
| 496 | 
            +
                            actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
         | 
| 497 | 
            +
                              Time.now - 3.days - 14.minutes - 20.seconds, {include_seconds: true, vague: false}
         | 
| 498 | 
            +
                            )
         | 
| 499 | 
            +
                            expect(actual).to eq(expected)
         | 
| 500 | 
            +
                          end
         | 
| 501 | 
            +
                        end
         | 
| 502 | 
            +
             | 
| 503 | 
            +
                        context 'with options include_seconds false and vague option true' do
         | 
| 504 | 
            +
                          it 'shows vague duration' do
         | 
| 505 | 
            +
                            expected = '3 days'
         | 
| 506 | 
            +
                            actual = ActionController::Base.helpers.distance_of_time_in_words_to_now(
         | 
| 507 | 
            +
                              Time.now - 3.days - 14.minutes - 20.seconds, {include_seconds: false, vague: true}
         | 
| 508 | 
            +
                            )
         | 
| 509 | 
            +
                            expect(actual).to eq(expected)
         | 
| 510 | 
            +
                          end
         | 
| 511 | 
            +
                        end
         | 
| 512 | 
            +
             | 
| 397 513 | 
             
                      end
         | 
| 398 514 | 
             
                    end
         | 
| 399 515 | 
             
                  end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: dotiw
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 5.3. | 
| 4 | 
            +
              version: 5.3.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ryan Bigg
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire:
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2022-04-25 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: activesupport
         |