time_compact 0.3.0 → 0.4.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 81ad0a9403e46694eda26d158cef5d9aa76b2ee7
4
- data.tar.gz: fddc40df215da1c9748201616ffc610ee0450c17
3
+ metadata.gz: 5d07aa8f198853c7de9c5b06bc61a0d7dbcf5ba5
4
+ data.tar.gz: a573d4b81b7e331df8c2f18e6baca67526f04ecd
5
5
  SHA512:
6
- metadata.gz: fccd9c748f371cbae30d3d66913db61512ece8b54ac853f6b7429f040a106b641e0b647a51ccbb908f31a59a32c0022b34e2d1d86e3636e632e37c172d77ae4e
7
- data.tar.gz: b511b5bdb40bf03f42c15969dcc561eb905f554716a489bded1ace4268ea513f7675493c051bcca8c6ce9032c2ca44e2bc38a38b5150496f3932ed415b567bb3
6
+ metadata.gz: 2dbb595242a53742bb510e9908f84d38de9b7b653f8d661419fccbc959872f73dd957f7a4e814fb3bf7a0bd2c0d58b75a88aa8c34d4d872cba0db3b41c39c62c
7
+ data.tar.gz: a6a7861bb73c604cc23616d586f7b3d608564a7b707e730e6c3a6702dbee9f86d20d3646a5d455f141ec4bdf69afe03ff3facec49641a8747d9acf89c9aa5105
data/.hound.yml ADDED
@@ -0,0 +1,66 @@
1
+ # tolerant of https://github.com/airbnb/ruby styles
2
+ LineLength:
3
+ Max: 128
4
+
5
+ MethodLength:
6
+ Max: 30
7
+
8
+ NumericLiterals:
9
+ MinDigits: 12
10
+
11
+ ClassAndModuleChildren:
12
+ Enabled: false
13
+
14
+ Documentation:
15
+ Enabled: false
16
+
17
+ DotPosition:
18
+ Enabled: false
19
+
20
+ EmptyLinesAroundAccessModifier:
21
+ Enabled: false
22
+
23
+ HandleExceptions:
24
+ Enabled: false
25
+
26
+ IfUnlessModifier:
27
+ Enabled: false
28
+
29
+ IndentHash:
30
+ Enabled: false
31
+
32
+ NegatedIf:
33
+ Enabled: false
34
+
35
+ PercentLiteralDelimiters:
36
+ Enabled: false
37
+
38
+ RedundantSelf:
39
+ Enabled: false
40
+
41
+ Semicolon:
42
+ Enabled: false
43
+
44
+ TrailingComma:
45
+ Enabled: false
46
+
47
+ UselessAssignment:
48
+ Enabled: false
49
+
50
+ Style/StringLiterals:
51
+ EnforcedStyle: single_quotes
52
+
53
+ Style/AlignParameters:
54
+ EnforcedStyle: with_fixed_indentation
55
+
56
+ Style/SpaceAroundEqualsInParameterDefault:
57
+ EnforcedStyle: space
58
+
59
+ Style/SpaceBeforeBlockBraces:
60
+ EnforcedStyle: space
61
+
62
+ Style/Lambda:
63
+ Enabled: false
64
+
65
+ Style/GuardClause:
66
+ Enabled: false
data/.rubocop.yml ADDED
@@ -0,0 +1,66 @@
1
+ # tolerant of https://github.com/airbnb/ruby styles
2
+ LineLength:
3
+ Max: 128
4
+
5
+ MethodLength:
6
+ Max: 30
7
+
8
+ NumericLiterals:
9
+ MinDigits: 12
10
+
11
+ ClassAndModuleChildren:
12
+ Enabled: false
13
+
14
+ Documentation:
15
+ Enabled: false
16
+
17
+ DotPosition:
18
+ Enabled: false
19
+
20
+ EmptyLinesAroundAccessModifier:
21
+ Enabled: false
22
+
23
+ HandleExceptions:
24
+ Enabled: false
25
+
26
+ IfUnlessModifier:
27
+ Enabled: false
28
+
29
+ IndentHash:
30
+ Enabled: false
31
+
32
+ NegatedIf:
33
+ Enabled: false
34
+
35
+ PercentLiteralDelimiters:
36
+ Enabled: false
37
+
38
+ RedundantSelf:
39
+ Enabled: false
40
+
41
+ Semicolon:
42
+ Enabled: false
43
+
44
+ TrailingComma:
45
+ Enabled: false
46
+
47
+ UselessAssignment:
48
+ Enabled: false
49
+
50
+ Style/StringLiterals:
51
+ EnforcedStyle: single_quotes
52
+
53
+ Style/AlignParameters:
54
+ EnforcedStyle: with_fixed_indentation
55
+
56
+ Style/SpaceAroundEqualsInParameterDefault:
57
+ EnforcedStyle: space
58
+
59
+ Style/SpaceBeforeBlockBraces:
60
+ EnforcedStyle: space
61
+
62
+ Style/Lambda:
63
+ Enabled: false
64
+
65
+ Style/GuardClause:
66
+ Enabled: false
data/README.md CHANGED
@@ -61,6 +61,36 @@ You can customize the format.
61
61
  same_hour: '%1M分'
62
62
  other: '%Y年%1m月%1d日'
63
63
 
64
+ ### Options
65
+
66
+ `time_compact` method takes `options` on the last args.
67
+
68
+ #### `i18n_key_prefix`
69
+
70
+ Prefix to i18n keys. Usage:
71
+
72
+ ```
73
+ # config/locales/en.yml:
74
+ en:
75
+ time_compact:
76
+ same_year: '%1m/%1d'
77
+ same_month: '%1m/%1d'
78
+ same_day: '%1H:%M'
79
+ same_hour: '%1M min'
80
+ other: '%Y/%1m/%1d'
81
+ verbose: # <- Set sub locales here!
82
+ same_year: '%1m/%1d %1H:%M'
83
+ same_month: '%1m/%1d %1H:%M'
84
+ same_day: '%1H:%M'
85
+ same_hour: '%1M min'
86
+ other: '%Y/%1m/%1d %1H:%M'
87
+ ```
88
+
89
+ ```
90
+ # in the view
91
+ <%= time_compact(@post.created_at, i18n_key_prefix: :verbose) %>
92
+ ```
93
+
64
94
  ## Contributing
65
95
 
66
96
  1. Fork it ( https://github.com/komagata/time_compact/fork )
data/lib/time_compact.rb CHANGED
@@ -4,11 +4,17 @@ require 'i18n'
4
4
  require 'yaml'
5
5
 
6
6
  module TimeCompact
7
- def time_compact(time, now = Time.now)
7
+ def time_compact(time, *options)
8
+ now, opts = time_compact_process_optional_args(options)
9
+
10
+ opts = {
11
+ i18n_key_prefix: ''
12
+ }.merge(opts)
13
+
8
14
  locale_dir = File.expand_path('../../locale', __FILE__)
9
15
  I18n.enforce_available_locales = true
10
16
  I18n.load_path += Dir["#{locale_dir}/*.yml"]
11
- messages = I18n.t('time_compact')
17
+ messages = I18n.t(time_compact_i18n_key(opts[:i18n_key_prefix]))
12
18
 
13
19
  if time.year == now.year
14
20
  if time.month == now.month
@@ -28,4 +34,21 @@ module TimeCompact
28
34
  time.strftime(messages[:other])
29
35
  end
30
36
  end
37
+
38
+ private
39
+
40
+ def time_compact_process_optional_args(args)
41
+ case args[0]
42
+ when Time, DateTime
43
+ [args[0], args[1] || {}]
44
+ when Hash
45
+ [Time.now, args[0]]
46
+ else
47
+ [Time.now, {}]
48
+ end
49
+ end
50
+
51
+ def time_compact_i18n_key(prefix = '')
52
+ ['time_compact', prefix.to_s].reject(&:empty?).join('.')
53
+ end
31
54
  end
@@ -1,3 +1,3 @@
1
1
  module TimeCompact
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.0'
3
3
  end
data/locale/en.yml CHANGED
@@ -5,3 +5,9 @@ en:
5
5
  same_day: '%1H:%M'
6
6
  same_hour: '%1M min'
7
7
  other: '%Y/%1m/%1d'
8
+ verbose:
9
+ same_year: '%1m/%1d %1H:%M'
10
+ same_month: '%1m/%1d %1H:%M'
11
+ same_day: '%1H:%M'
12
+ same_hour: '%1M min'
13
+ other: '%Y/%1m/%1d %1H:%M'
data/locale/ja.yml CHANGED
@@ -5,3 +5,9 @@ ja:
5
5
  same_day: '%1H時%1M分'
6
6
  same_hour: '%1M分'
7
7
  other: '%Y年%1m月%1d日'
8
+ verbose:
9
+ same_year: '%1m月%1d日 %1H時%1M分'
10
+ same_month: '%1d日 %1H時%1M分'
11
+ same_day: '%1H時%1M分'
12
+ same_hour: '%1M分'
13
+ other: '%Y年%1m月%1d日 %1H時%1M分'
@@ -35,6 +35,35 @@ class TestTimeCompact < MiniTest::Test
35
35
  ), 'same hour'
36
36
  end
37
37
 
38
+ def test_time_compact_en_verbose
39
+ I18n.locale = 'en'
40
+ assert_equal '2014/1/1 0:00', @object.time_compact(
41
+ Time.new(2014, 1, 1, 0, 0, 0),
42
+ Time.new(2015, 1, 1, 0, 0, 0),
43
+ i18n_key_prefix: :verbose
44
+ ), 'defferent year'
45
+ assert_equal '1/1 0:00', @object.time_compact(
46
+ Time.new(2014, 1, 1, 0, 0, 0),
47
+ Time.new(2014, 2, 1, 0, 0, 0),
48
+ i18n_key_prefix: :verbose
49
+ ), 'same year'
50
+ assert_equal '1/1 0:00', @object.time_compact(
51
+ Time.new(2014, 1, 1, 0, 0, 0),
52
+ Time.new(2014, 1, 2, 0, 0, 0),
53
+ i18n_key_prefix: :verbose
54
+ ), 'same month'
55
+ assert_equal '0:00', @object.time_compact(
56
+ Time.new(2014, 1, 1, 0, 0, 0),
57
+ Time.new(2014, 1, 1, 1, 0, 0),
58
+ i18n_key_prefix: :verbose
59
+ ), 'same day'
60
+ assert_equal '0 min', @object.time_compact(
61
+ Time.new(2014, 1, 1, 0, 0, 0),
62
+ Time.new(2014, 1, 1, 0, 1, 0),
63
+ i18n_key_prefix: :verbose
64
+ ), 'same hour'
65
+ end
66
+
38
67
  def test_time_compact_ja
39
68
  I18n.locale = 'ja'
40
69
  assert_equal '2014年1月1日', @object.time_compact(
@@ -58,4 +87,66 @@ class TestTimeCompact < MiniTest::Test
58
87
  Time.new(2014, 1, 1, 0, 1, 0)
59
88
  ), 'same hour'
60
89
  end
90
+
91
+ def test_time_compact_ja_verbose
92
+ I18n.locale = 'ja'
93
+ assert_equal '2014年1月1日 0時0分', @object.time_compact(
94
+ Time.new(2014, 1, 1, 0, 0, 0),
95
+ Time.new(2015, 1, 1, 0, 0, 0),
96
+ i18n_key_prefix: 'verbose'
97
+ ), 'defferent year'
98
+ assert_equal '1月1日 0時0分', @object.time_compact(
99
+ Time.new(2014, 1, 1, 0, 0, 0),
100
+ Time.new(2014, 2, 1, 0, 0, 0),
101
+ i18n_key_prefix: 'verbose'
102
+ ), 'same year'
103
+ assert_equal '1日 0時0分', @object.time_compact(
104
+ Time.new(2014, 1, 1, 0, 0, 0),
105
+ Time.new(2014, 1, 2, 0, 0, 0),
106
+ i18n_key_prefix: 'verbose'
107
+ ), 'same month'
108
+ assert_equal '0時0分', @object.time_compact(
109
+ Time.new(2014, 1, 1, 0, 0, 0),
110
+ Time.new(2014, 1, 1, 1, 0, 0),
111
+ i18n_key_prefix: 'verbose'
112
+ ), 'same day'
113
+ assert_equal '0分', @object.time_compact(
114
+ Time.new(2014, 1, 1, 0, 0, 0),
115
+ Time.new(2014, 1, 1, 0, 1, 0),
116
+ i18n_key_prefix: 'verbose'
117
+ ), 'same hour'
118
+ end
119
+
120
+ def test_time_compact_process_optional_args
121
+ time = Time.new(2014, 1, 1, 0, 0, 0)
122
+
123
+ Time.stub(:now, time) do
124
+ assert_equal [time, {}],
125
+ @object.send(:time_compact_process_optional_args, []),
126
+ 'no optional args'
127
+
128
+ assert_equal [time, { awesome_option: 'yaay!' }],
129
+ @object.send(:time_compact_process_optional_args,
130
+ [{ awesome_option: 'yaay!' }]),
131
+ 'only options hash is passed'
132
+ end
133
+
134
+ assert_equal [time, {}],
135
+ @object.send(:time_compact_process_optional_args, [time]),
136
+ 'only time is passed'
137
+
138
+ assert_equal [time, { fantastic_option: 'woohoo!!!' }],
139
+ @object.send(:time_compact_process_optional_args,
140
+ [time, { fantastic_option: 'woohoo!!!' }]),
141
+ 'time and options hash are passed'
142
+ end
143
+
144
+ def test_time_compact_i18n_key
145
+ assert_equal 'time_compact',
146
+ @object.send(:time_compact_i18n_key),
147
+ 'no prefix'
148
+ assert_equal 'time_compact.prefix',
149
+ @object.send(:time_compact_i18n_key, 'prefix'),
150
+ 'with prefix'
151
+ end
61
152
  end
data/time_compact.gemspec CHANGED
@@ -4,23 +4,23 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'time_compact/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "time_compact"
7
+ spec.name = 'time_compact'
8
8
  spec.version = TimeCompact::VERSION
9
- spec.authors = ["Masaki Komagata"]
10
- spec.email = ["komagata@gmail.com"]
11
- spec.summary = %q{Displays time compactly.}
12
- spec.description = %q{Displays time compactly.}
13
- spec.homepage = "https://github.com/komagata/time_compact"
14
- spec.license = "MIT"
9
+ spec.authors = ['Masaki Komagata']
10
+ spec.email = ['komagata@gmail.com']
11
+ spec.summary = 'Displays time compactly.'
12
+ spec.description = 'Displays time compactly.'
13
+ spec.homepage = 'https://github.com/komagata/time_compact'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
21
  spec.add_runtime_dependency 'i18n'
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.6"
24
- spec.add_development_dependency "rake"
25
- spec.add_development_dependency "minitest"
23
+ spec.add_development_dependency 'bundler', '~> 1.6'
24
+ spec.add_development_dependency 'rake'
25
+ spec.add_development_dependency 'minitest'
26
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: time_compact
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masaki Komagata
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-03 00:00:00.000000000 Z
11
+ date: 2014-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -74,6 +74,8 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - ".gitignore"
77
+ - ".hound.yml"
78
+ - ".rubocop.yml"
77
79
  - ".travis.yml"
78
80
  - Gemfile
79
81
  - LICENSE.txt
@@ -112,4 +114,3 @@ specification_version: 4
112
114
  summary: Displays time compactly.
113
115
  test_files:
114
116
  - test/test_time_compact.rb
115
- has_rdoc: