dotiw 4.0.1 → 5.3.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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +45 -0
  3. data/.rspec +2 -0
  4. data/Appraisals +19 -0
  5. data/CHANGELOG.md +42 -6
  6. data/Gemfile +2 -0
  7. data/MIT-LICENSE +1 -1
  8. data/README.markdown +151 -63
  9. data/Rakefile +3 -1
  10. data/benchmarks/time_hash_bench.rb +19 -0
  11. data/dotiw.gemspec +17 -19
  12. data/gemfiles/rails_4.gemfile +5 -3
  13. data/gemfiles/rails_5.0.gemfile +5 -3
  14. data/gemfiles/rails_5.1.gemfile +5 -3
  15. data/gemfiles/rails_5.2.gemfile +9 -0
  16. data/gemfiles/rails_6.0.gemfile +9 -0
  17. data/lib/dotiw.rb +33 -14
  18. data/lib/dotiw/action_view/helpers/date_helper.rb +32 -0
  19. data/lib/dotiw/locale/ar.yml +84 -26
  20. data/lib/dotiw/locale/da.yml +35 -0
  21. data/lib/dotiw/locale/de.yml +36 -1
  22. data/lib/dotiw/locale/en.yml +35 -0
  23. data/lib/dotiw/locale/es.yml +36 -1
  24. data/lib/dotiw/locale/fr.yml +35 -0
  25. data/lib/dotiw/locale/id.yml +35 -0
  26. data/lib/dotiw/locale/it.yml +35 -0
  27. data/lib/dotiw/locale/ja.yml +35 -0
  28. data/lib/dotiw/locale/ko.yml +23 -0
  29. data/lib/dotiw/locale/nb.yml +36 -1
  30. data/lib/dotiw/locale/nl.yml +35 -0
  31. data/lib/dotiw/locale/pl.yml +42 -0
  32. data/lib/dotiw/locale/pt-BR.yml +35 -0
  33. data/lib/dotiw/locale/ru.yml +37 -0
  34. data/lib/dotiw/locale/sv.yml +48 -0
  35. data/lib/dotiw/locale/vi.yml +48 -0
  36. data/lib/dotiw/locale/zh-CN.yml +23 -0
  37. data/lib/dotiw/locale/zh-TW.yml +60 -0
  38. data/lib/dotiw/methods.rb +108 -0
  39. data/lib/dotiw/time_hash.rb +52 -40
  40. data/lib/dotiw/version.rb +2 -2
  41. data/spec/lib/dotiw_spec.rb +304 -159
  42. data/spec/lib/i18n/ar.yml +2 -0
  43. data/spec/lib/i18n/da.yml +2 -0
  44. data/spec/lib/i18n/de.yml +2 -0
  45. data/spec/lib/i18n/en.yml +2 -0
  46. data/spec/lib/i18n/es.yml +3 -0
  47. data/spec/lib/i18n/fr.yml +2 -0
  48. data/spec/lib/i18n/id.yml +2 -0
  49. data/spec/lib/i18n/it.yml +3 -0
  50. data/spec/lib/i18n/ja.yml +2 -0
  51. data/spec/lib/i18n/ko.yml +2 -0
  52. data/spec/lib/i18n/nb.yml +2 -0
  53. data/spec/lib/i18n/nl.yml +2 -0
  54. data/spec/lib/i18n/pl.yml +2 -0
  55. data/spec/lib/i18n/pt-BR.yml +2 -0
  56. data/spec/lib/i18n/ru.yml +5 -0
  57. data/spec/lib/i18n/sv.yml +2 -0
  58. data/spec/lib/i18n/vi.yml +22 -0
  59. data/spec/lib/i18n/zh-CN.yml +2 -0
  60. data/spec/lib/i18n/zh-TW.yml +2 -0
  61. data/spec/spec_helper.rb +2 -9
  62. metadata +76 -30
  63. data/.travis.yml +0 -27
  64. data/lib/dotiw/action_view_ext/helpers/date_helper.rb +0 -103
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 452b08e7e56c1727f5a05056ea6b6f5d61465eae7661b026b226b9e43c6e2919
4
- data.tar.gz: '0687798a0b46e6d69b56936aa78b850f9d778cb3089109b93587507243205b02'
3
+ metadata.gz: 36c95ebe9c3f26cad8de3f4671810af863f765b14f0c5066d761b84881515935
4
+ data.tar.gz: 76b3a723afd1e060a71e148c1b2f839460e325848de32b94d1d0fe701266f266
5
5
  SHA512:
6
- metadata.gz: 57e70d36c9a7fbd88af495f454318cf91775cf58eb5fe0854f3ad2ca97ef3c8727f30dd1ba695977dbc62d820d7d8cbc92f715bb4480914014717eab1487d1bf
7
- data.tar.gz: 555464020ec01e55ee22d171465ff577b1cdb9790be50baf00f694c83847ede0d79874787f76cebe6eeca822c03d02fb9dbdc6410e0c63e2151955c780f99aca
6
+ metadata.gz: 25bbeae402bf0addf41bfdd5b0a7b7e23c51c528c1905714abad73696fa62cc8fb79eb6721fac8e69e1c8ca86c1d72c0fb04e7d8728b196d1dde5158df1cc035
7
+ data.tar.gz: 8d63f397602b8f07df9c4d0a1f60f10c48a19b8e01ee3346305bb364e3a18b74670032cdb37f6b1c6da8f26eb2e056ebb5b7f0940798c5bc133b612765500233
@@ -0,0 +1,45 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request:
8
+ branches:
9
+ - master
10
+
11
+ jobs:
12
+ build:
13
+ runs-on: ubuntu-latest
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ include:
18
+ - ruby-version: 2.5
19
+ - ruby-version: 2.6
20
+ - ruby-version: 2.4
21
+ bundler-version: 1.17.3
22
+ gemfile: gemfiles/rails_4.gemfile
23
+ - ruby-version: 2.6
24
+ gemfile: gemfiles/rails_5.0.gemfile
25
+ - ruby-version: 2.6
26
+ gemfile: gemfiles/rails_5.1.gemfile
27
+ - ruby-version: 2.6
28
+ gemfile: gemfiles/rails_5.2.gemfile
29
+ - ruby-version: 2.6
30
+ gemfile: gemfiles/rails_6.0.gemfile
31
+ steps:
32
+ - uses: actions/checkout@v2
33
+ - name: Set up Ruby
34
+ uses: ruby/setup-ruby@v1
35
+ with:
36
+ ruby-version: ${{ matrix.ruby-version }}
37
+ - name: Build and test
38
+ env:
39
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
40
+ BUNDLER: ${{ matrix.bundler-version }}
41
+ run: |
42
+ gem uninstall bundler
43
+ gem install bundler -v ${BUNDLER:-2.1.4}
44
+ bundle install --jobs 4 --retry 3
45
+ bundle exec rake
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/Appraisals ADDED
@@ -0,0 +1,19 @@
1
+ appraise 'rails_4' do
2
+ gem 'rails', '~> 4.0'
3
+ end
4
+
5
+ appraise 'rails_5.0' do
6
+ gem 'rails', '~> 5.0.0'
7
+ end
8
+
9
+ appraise 'rails_5.1' do
10
+ gem 'rails', '~> 5.1.0'
11
+ end
12
+
13
+ appraise 'rails_5.2' do
14
+ gem 'rails', '~> 5.2.0'
15
+ end
16
+
17
+ appraise 'rails_6.0' do
18
+ gem 'rails', '~> 6.0.0'
19
+ end
data/CHANGELOG.md CHANGED
@@ -1,10 +1,46 @@
1
+ ## 5.3.1 (2021/03/26)
2
+
3
+ * [#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).
4
+
5
+ ## 5.3.0 (2021/03/18)
6
+
7
+ * [#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).
8
+ * [#117](https://github.com/radar/distance_of_time_in_words/pull/117): Support `#distance_of_time_in_words_to_now` with `vague: true` - [@joshuapinter](https://github.com/joshuapinter).
9
+ * [#118](https://github.com/radar/distance_of_time_in_words/pull/118): Raise `ArgumentError` when `nil` is passed for time, to match original `distance_of_time_in_words` - [@joshuapinter](https://github.com/joshuapinter).
10
+ * [#119](https://github.com/radar/distance_of_time_in_words/pull/119): Do not mutate input options - [@joshuapinter](https://github.com/joshuapinter).
11
+
12
+ ## 5.2.0 (2020/10/03)
13
+
14
+ * [#94](https://github.com/radar/distance_of_time_in_words/pull/94): Add :compact formatting option - [@booty](https://github.com/booty).
15
+ * [#112](https://github.com/radar/distance_of_time_in_words/pull/112): Add Swedish language support - [@davidwessman](https://github.com/davidwessman).
16
+ * [#114](https://github.com/radar/distance_of_time_in_words/pull/114): Add Traditional Chinese (Taiwan) language support - [@sibevin](https://github.com/sibevin).
17
+
18
+ ## 5.1.0 (2020/08/05)
19
+
20
+ * [#111](https://github.com/radar/distance_of_time_in_words/pull/111): Fix: `NoMethodError` when calling `ActionController::Base.helpers.distance_of_time_in_words` - [@denisahearn](https://github.com/denisahearn).
21
+ * [#106](https://github.com/radar/distance_of_time_in_words/pull/106): Add Vietnamese language support - [@runlevel5 ](https://github.com/runlevel5).
22
+
23
+ ## 5.0.0 (2020/05/07)
24
+
25
+ * [#105](https://github.com/radar/distance_of_time_in_words/pull/105): Support for Ruby w/o Rails - [@dblock](https://github.com/dblock).
26
+ * [#108](https://github.com/radar/distance_of_time_in_words/pull/108): Fix negative weeks - [@ivanovaleksey](https://github.com/ivanovaleksey).
27
+
28
+ ## 4.0.1 (2018/06/01)
29
+
1
30
  ## 3.1.1 (2016/03/08)
2
- * Add CHANGELOG.md
3
31
 
4
32
  ## 3.1.0 (2016/03/07)
5
33
 
6
- * [#68](https://github.com/radar/dotiw/pull/68): Add support for weeks - [@lauranjansen](https://github.com/lauranjansen)
7
- * [#69](https://github.com/radar/dotiw/pull/69): Add Indonesian language support - [@avidmaulanas](https://github.com/avidmaulanas)
8
- * [#70](https://github.com/radar/dotiw/pull/70): Add French language support - [@geo1004](https://github.com/geo1004)
9
- * [#72](https://github.com/radar/dotiw/pull/72): Add Danish language support - [@kaspernj](https://github.com/kaspernj)
10
- * [#71](https://github.com/radar/dotiw/pull/71): Update bundler and ruby versions for Travis CI - [@lauranjansen](https://github.com/lauranjansen)
34
+ * [#68](https://github.com/radar/dotiw/pull/68): Add support for weeks - [@lauranjansen](https://github.com/lauranjansen).
35
+ * [#69](https://github.com/radar/dotiw/pull/69): Add Indonesian language support - [@avidmaulanas](https://github.com/avidmaulanas).
36
+ * [#70](https://github.com/radar/dotiw/pull/70): Add French language support - [@geo1004](https://github.com/geo1004).
37
+ * [#72](https://github.com/radar/dotiw/pull/72): Add Danish language support - [@kaspernj](https://github.com/kaspernj).
38
+ * [#71](https://github.com/radar/dotiw/pull/71): Update bundler and ruby versions for Travis CI - [@lauranjansen](https://github.com/lauranjansen).
39
+
40
+ ## 3.0.1 (2015/04/09)
41
+
42
+ ## 3.0 (2015/04/09)
43
+
44
+ ## 0.2.4 (2009/10/18)
45
+
46
+ * Initial public release - [@radar](https://github.com/radar).
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'http://rubygems.org'
2
4
 
3
5
  gemspec
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 Ryan Bigg
1
+ Copyright (c) 2009-2020 Ryan Bigg
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.markdown CHANGED
@@ -1,65 +1,99 @@
1
- # dotiw [![](https://travis-ci.org/radar/dotiw.svg)](https://travis-ci.org/radar/dotiw)
1
+ # dotiw ![Ruby](https://github.com/radar/distance_of_time_in_words/workflows/Ruby/badge.svg)
2
2
 
3
- dotiw is a gem for Rails that overrides the default `distance_of_time_in_words` and provides a more accurate output. Do you crave accuracy down to the second? So do I. That's why I made this gem. Take this for a totally kickass example:
3
+ The `dotiw` library that adds `distance_of_time_in_words` to any Ruby project, or overrides the default implementation in Rails with more accurate output.
4
4
 
5
- >> distance_of_time_in_words(Time.now, Time.now + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds, true)
6
- => "1 year, 2 months, 3 weeks, 4 days, 5 hours, 6 minutes, and 7 seconds"
5
+ Do you crave accuracy down to the second? So do I. That's why I made this gem.
7
6
 
8
- Also if one of the measurement is zero it will not output it:
7
+ ## Install
9
8
 
10
- >> distance_of_time_in_words(Time.now, Time.now + 1.year + 2.months + 5.hours + 6.minutes + 7.seconds, true)
11
- => "1 year, 2 months, 4 days, 6 minutes, and 7 seconds"
9
+ Add to your `Gemfile`.
12
10
 
13
- Better than "about 1 year", am I right? Of course I am.
11
+ ```ruby
12
+ gem 'dotiw'
13
+ ```
14
14
 
15
- "But Ryan!", you say, "What happens if the time is only in seconds but because of the default the seconds aren't shown? Won't it be blank?"
16
- "No!" I triumphantly reply:
15
+ Run `bundle install`.
17
16
 
18
- >> distance_of_time_in_words(Time.now, Time.now + 1.second, false)
19
- => "1 second"
17
+ ### Pure Ruby
20
18
 
21
- 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:
19
+ ```ruby
20
+ require 'dotiw'
22
21
 
23
- >> distance_of_time_in_words(Time.now, Time.now + 1.year + 1.second, true)
24
- => "1 year, and 1 second"
22
+ include DOTIW::Methods
23
+ ```
25
24
 
26
- Yes this could just be merged into the options hash but I'm leaving it here to ensure "backwards-compatibility",
27
- because that's just an insanely radical thing to do. \m/
25
+ ### Rails
28
26
 
29
- The last argument is an optional options hash that can be used to manipulate behavior and (which uses `to_sentence`).
27
+ ```ruby
28
+ require 'dotiw'
30
29
 
31
- Don't like having to pass in `Time.now` all the time? Then use `time_ago_in_words` which also will *rock your
32
- world*:
30
+ include ActionView::Helpers::DateHelper
31
+ include ActionView::Helpers::TextHelper
32
+ include ActionView::Helpers::NumberHelper
33
+ ```
33
34
 
34
- >> time_ago_in_words(Time.now + 3.days + 1.second)
35
- => "3 days, and 1 second"
35
+ ## distance\_of\_time\_in\_words
36
36
 
37
- Oh, and did I mention it supports I18n? Oh yeah. Rock on!
37
+ Take this for a totally kick-ass example:
38
38
 
39
- ## Install
39
+ ```ruby
40
+ >> distance_of_time_in_words(Time.now, Time.now + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds, true)
41
+ => "1 year, 2 months, 3 weeks, 4 days, 5 hours, 6 minutes, and 7 seconds"
42
+ ```
40
43
 
41
- Install it as a gem:
44
+ Also if one of the measurement is zero it will not output it:
42
45
 
43
46
  ```ruby
44
- gem 'dotiw'
47
+ >> distance_of_time_in_words(Time.now, Time.now + 1.year + 2.months + 5.hours + 6.minutes + 7.seconds, true)
48
+ => "1 year, 2 months, 4 days, 6 minutes, and 7 seconds"
45
49
  ```
46
50
 
47
- Or from GitHub:
51
+ Better than "about 1 year", am I right? Of course I am.
52
+
53
+ "But Ryan!", you say, "What happens if the time is only in seconds but because of the default the seconds aren't shown? Won't it be blank?"
54
+ "No!" I triumphantly reply:
48
55
 
49
56
  ```ruby
50
- gem 'dotiw', github: 'radar/dotiw'
57
+ >> distance_of_time_in_words(Time.now, Time.now + 1.second, false)
58
+ => "1 second"
51
59
  ```
52
60
 
61
+ 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
+
63
+ ```ruby
64
+ >> distance_of_time_in_words(Time.now, Time.now + 1.year + 1.second, true)
65
+ => "1 year, and 1 second"
66
+ ```
67
+
68
+ 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
+
70
+ The last argument is an optional options hash that can be used to manipulate behavior and (which uses `to_sentence`).
71
+
72
+ 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
73
+ world*:
74
+
75
+ ```ruby
76
+ >> time_ago_in_words(Time.now + 3.days + 1.second)
77
+ => "3 days, and 1 second"
78
+
79
+ >> distance_of_time_in_words_to_now(Time.now + 3.days + 1.second)
80
+ => "3 days, and 1 second"
81
+ ```
82
+
83
+ Oh, and did I mention it supports I18n? Oh yeah. Rock on!
84
+
53
85
  ### Options
54
86
 
55
87
  #### :locale
56
88
 
57
89
  You can pass in a locale and it'll output it in whatever language you want (provided you have translations, otherwise it'll default to your app's default locale (the `config.i18n.default_locale` you have set in `/config/application.rb`):
58
90
 
59
- >> distance_of_time_in_words(Time.now, Time.now + 1.minute, false, :locale => :es)
60
- => "1 minuto"
91
+ ```ruby
92
+ >> distance_of_time_in_words(Time.now, Time.now + 1.minute, false, locale: :es)
93
+ => "1 minuto"
94
+ ```
61
95
 
62
- This will also be passed to `to_sentence`
96
+ This will also be passed to `to_sentence`.
63
97
 
64
98
  #### :vague
65
99
 
@@ -67,46 +101,60 @@ Specify this if you want it to use the old `distance_of_time_in_words`. The valu
67
101
 
68
102
  #### :accumulate_on
69
103
 
70
- 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. Here's a code example:
104
+ 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.
71
105
 
72
- >> distance_of_time_in_words(Time.now, Time.now + 2.hours + 70.seconds, true, :accumulate_on => :minutes)
73
- => "121 minutes and 10 seconds"
106
+ ```ruby
107
+ >> distance_of_time_in_words(Time.now, Time.now + 2.hours + 70.seconds, true, accumulate_on: :minutes)
108
+ => "121 minutes and 10 seconds"
109
+ ```
74
110
 
75
111
  #### :only
76
112
 
77
113
  Only want a specific measurement of time? No problem!
78
114
 
79
- >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute, false, :only => :minutes)
80
- => "1 minute"
115
+ ```ruby
116
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute, false, only: :minutes)
117
+ => "1 minute"
118
+ ```
81
119
 
82
120
  You only want some? No problem too!
83
121
 
84
- >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.day + 1.minute, false, :only => [:minutes, :hours])
85
- => "1 hour and 1 minute"
122
+ ```ruby
123
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.day + 1.minute, false, only: [:minutes, :hours])
124
+ => "1 hour and 1 minute"
125
+ ```
86
126
 
87
127
  #### :except
88
128
 
89
129
  Don't want a measurement of time? No problem!
90
130
 
91
- >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute, false, :except => :minutes)
92
- => "1 hour"
131
+ ```ruby
132
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute, false, except: :minutes)
133
+ => "1 hour"
134
+ ```
93
135
 
94
136
  Culling a whole group of measurements of time:
95
137
 
96
- >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.day + 1.minute, false, :except => [:minutes, :hours])
97
- => "1 day"
138
+ ```ruby
139
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.day + 1.minute, false, except: [:minutes, :hours])
140
+ => "1 day"
141
+ ```
98
142
 
99
143
  #### :highest\_measure\_only
100
144
 
101
145
  For times when Rails `distance_of_time_in_words` is not precise enough and `DOTIW` is too precise. For instance, if you only want to know the highest time part (measure) that elapsed between two dates.
102
146
 
103
- >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute + 1.second, true, :highest_measure_only => true)
104
- => "1 hour"
147
+ ```ruby
148
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute + 1.second, true, highest_measure_only: true)
149
+ => "1 hour"
150
+ ```
105
151
 
106
152
  Notice how minutes and seconds were removed from the output. Another example:
107
153
 
108
- >> distance_of_time_in_words(Time.now, Time.now + 1.minute + 1.second, true, :highest_measure_only => true)
109
- => "1 minute"
154
+ ```ruby
155
+ >> distance_of_time_in_words(Time.now, Time.now + 1.minute + 1.second, true, highest_measure_only: true)
156
+ => "1 minute"
157
+ ```
110
158
 
111
159
  Minutes are the highest measure, so seconds were discarded from the output.
112
160
 
@@ -114,58 +162,97 @@ Minutes are the highest measure, so seconds were discarded from the output.
114
162
 
115
163
  When you want variable precision from `DOTIW`:
116
164
 
117
- >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute + 1.second, true, :highest_measures => 2)
118
- => "1 hour and 1 minute"
165
+ ```ruby
166
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute + 1.second, true, highest_measures: 2)
167
+ => "1 hour and 1 minute"
168
+ ```
119
169
 
120
170
  #### :words_connector
121
171
 
122
- **This is an option for `to_sentence`, defaults to ', '**
172
+ This is an option for `to_sentence`, defaults to ', '.
123
173
 
124
174
  Using something other than a comma:
125
175
 
126
- >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute + 1.second, true, :words_connector => ' - ')
127
- => "1 hour - 1 minute, and 1 second"
176
+ ```ruby
177
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute + 1.second, true, words_connector: ' - ')
178
+ => "1 hour - 1 minute, and 1 second"
179
+ ```
128
180
 
129
181
  #### :two\_words\_connector
130
182
 
131
- **This is an option for `to_sentence`, defaults to ' and '**
183
+ This is an option for `to_sentence`, defaults to ' and '.
132
184
 
133
185
  Using something other than 'and':
134
186
 
135
- >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute, true, :two_words_connector => ' plus ')
136
- => "1 hour plus 1 minute"
187
+ ```ruby
188
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute, true, two_words_connector: ' plus ')
189
+ => "1 hour plus 1 minute"
190
+ ```
137
191
 
138
192
  #### :last\_word\_connector
139
193
 
140
- **This is an option for `to_sentence`, defaults to ', and '**
194
+ This is an option for `to_sentence`, defaults to ', and '.
141
195
 
142
196
  Using something other than ', and':
143
197
 
144
- >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute + 1.second, true, :last_word_connector => ', finally ')
145
- => "1 hour, 1 minute, finally 1 second"
198
+ ```ruby
199
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute + 1.second, true, last_word_connector: ', finally ')
200
+ => "1 hour, 1 minute, finally 1 second"
201
+ ```
146
202
 
147
203
  ## distance\_of\_time
148
204
 
149
205
  If you have simply a number of seconds you can get the "stringified" version of this by using `distance_of_time`:
150
206
 
151
- >> distance_of_time(300)
152
- => "5 minutes"
207
+ ```ruby
208
+ >> distance_of_time(300)
209
+ => "5 minutes"
210
+ ```
153
211
 
154
212
  ## distance\_of\_time\_in\_words\_hash
155
213
 
156
214
  Don't like any format you're given? That's cool too! Here, have an indifferent hash version:
157
215
 
158
- >> distance_of_time_in_words_hash(Time.now, Time.now + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds)
159
- => {:days => 4, :weeks => 3, :seconds => 7, :minutes => 6, :years => 1, :hours => 5, :months => 2}
216
+ ```ruby
217
+ >> distance_of_time_in_words_hash(Time.now, Time.now + 1.year + 2.months + 3.weeks + 4.days + 5.hours + 6.minutes + 7.seconds)
218
+ => { days: 4, weeks: 3, seconds: 7, minutes: 6, years: 1, hours: 5, months: 2 }
219
+ ```
160
220
 
161
221
  Indifferent means that you can access all keys by their `String` or `Symbol` version.
162
222
 
163
223
  ## distance\_of\_time\_in\_percent
164
224
 
165
- If you want to calculate a distance of time in percent, use `distance_of_time_in_percent`. The first argument is the beginning time, the second argument the "current" time and the third argument is the end time. This method takes the same options as [`number_with_precision`](http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_with_precision).
225
+ This method is only available with Rails ActionView.
166
226
 
167
- distance_of_time_in_percent("04-12-2009".to_time, "29-01-2010".to_time, "04-12-2010".to_time, options)
227
+ If you want to calculate a distance of time in percent, use `distance_of_time_in_percent`. The first argument is the beginning time, the second argument the "current" time and the third argument is the end time.
168
228
 
229
+ ```ruby
230
+ >> distance_of_time_in_percent("04-12-2009".to_time, "29-01-2010".to_time, "04-12-2010".to_time)
231
+ => '15%'
232
+ ```
233
+
234
+ This method takes the same options as [`number_with_precision`](http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_with_precision).
235
+
236
+ ```ruby
237
+ >> distance_of_time_in_percent("04-12-2009".to_time, "29-01-2010".to_time, "04-12-2010".to_time, precision: 1)
238
+ => '15.3%'
239
+ ```
240
+
241
+ ## :compact
242
+
243
+ Pressed for space? Try `compact: true`.
244
+
245
+ ```ruby
246
+ >> distance_of_time_in_words(Time.now, Time.now + 2.year + 1.day + 1.second, compact: true)
247
+ => "2y1d"
248
+ ```
249
+
250
+ Pairs well with `words_connector`, `last_word_connector`, and `two_words_connector` if you can spare just a little more room:
251
+
252
+ ```ruby
253
+ >> distance_of_time_in_words(Time.now, Time.now + 5.years + 1.day + 23.seconds, words_connector: " ", last_word_connector: " ", two_words_connector: " ", compact: true)
254
+ => "5y 1d 23s"
255
+ ```
169
256
 
170
257
  ## Contributors
171
258
 
@@ -173,3 +260,4 @@ If you want to calculate a distance of time in percent, use `distance_of_time_in
173
260
  * [Derander](http://github.com/derander) - correct Spanish translations
174
261
  * [DBA](http://github.com/dba) - commits leading up to the 0.7 release
175
262
  * [Sija](http://github.com/Sija) - rails 4 support, v2.0 release
263
+ * [dblock](http://github.com/dblock) - Ruby w/o Rails support