time_of_day_attr 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 89598098237c1f05d5e43ddd93cab45dd9dac493
4
- data.tar.gz: 8d777ae07c21629d8ede0408356e864295a5ab83
3
+ metadata.gz: 918454e7a1335742ab83a0756f6a736976f997a1
4
+ data.tar.gz: 5c8561a4f1d40431c167c1b75eed948bf56e1043
5
5
  SHA512:
6
- metadata.gz: 08051c9d5b9c057fcfed48111cca292b6695815383dd12eb818931f8130fd0805b1621b6961d59d174c215204e516d0fa02a0744079d6f9d1da9c9ac910cb652
7
- data.tar.gz: 8b3f4cce1f11cb6207aee0d3485774023ce3e25fb4827b28b6a1a82df01789f724d6ef54506cc18cc0025925b59fee7161440f0bb59a901c0aa4bb4bd479db01
6
+ metadata.gz: e27f14a0adf5295b5d0681963d932e40ae79f1999e4055e8ae497bd63be7809c084d37e3489b51a0319774136105ce4ba05206829502a2b7d0fa11ff1aaea871
7
+ data.tar.gz: 967e0f9f3f3e5ef2f459112fdb3652dbea0eed12e96d506b381fc08a5b9d3e70e86b0d01cf271bfd3518cead2e8beebf3c792fb1a2a08cb4903b9a9d44630969
@@ -6,13 +6,13 @@ files = Dir[File.join(File.dirname(__FILE__), '../config/locales/*.yml')]
6
6
  I18n.load_path.concat(files)
7
7
 
8
8
  module TimeOfDayAttr
9
-
9
+
10
10
  class << self
11
11
 
12
12
  def delocalize(value, options = {})
13
13
  format = options[:format] || :default
14
14
  format = translate_format(format) if format.is_a?(Symbol)
15
- time = Time.strptime(value, format)
15
+ time = Time.strptime(value, format).change(month: 1, day: 1)
16
16
  time.seconds_since_midnight.to_i
17
17
  end
18
18
 
@@ -20,17 +20,19 @@ module TimeOfDayAttr
20
20
  return value unless value.respond_to?(:seconds)
21
21
  format = options[:format] || :default
22
22
  format = translate_format(format) if format.is_a?(Symbol)
23
- time = Time.now.at_midnight + value.seconds
23
+ time = Time.now.beginning_of_year.at_midnight + value.seconds
24
24
  time_of_day = time.strftime(format)
25
25
  if options[:omit_minutes_at_full_hour]
26
26
  if time_of_day.end_with?('00')
27
- time_of_day = time_of_day[0...-3]
27
+ time_of_day = time_of_day[0...-3]
28
28
  end
29
29
  end
30
30
  time_of_day
31
31
  end
32
32
  alias :l :localize
33
33
 
34
+ private
35
+
34
36
  def translate_format(format)
35
37
  I18n.translate("time_of_day.formats.#{format}")
36
38
  end
@@ -4,16 +4,23 @@ module TimeOfDayAttr
4
4
 
5
5
  module ClassMethods
6
6
 
7
- def time_of_day_attr *attrs
7
+ def time_of_day_attr(*attrs)
8
8
  options = attrs.extract_options!
9
9
  options[:formats] ||= [:default, :hour]
10
10
  attrs.each do |attr|
11
11
  define_method("#{attr}=") do |value|
12
12
  if value.is_a?(String)
13
- delocalized_values = options[:formats].map { |format| TimeOfDayAttr.delocalize(value, format: format) rescue nil }
14
- value = delocalized_values.compact.first || send(attr)
13
+ delocalized_values = options[:formats].map do |format|
14
+ begin
15
+ TimeOfDayAttr.delocalize(value, format: format)
16
+ rescue ArgumentError
17
+ nil
18
+ end
19
+ end
20
+ delocalized_value = delocalized_values.compact.first
21
+ raise(ArgumentError, "invalid time of day #{value} for formats #{options[:formats].join(', ')}") unless delocalized_value
15
22
  end
16
- super(value)
23
+ super(delocalized_value || value)
17
24
  end
18
25
  end
19
26
  end
@@ -1,3 +1,3 @@
1
1
  module TimeOfDayAttr
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
data/test/schema.rb CHANGED
@@ -4,6 +4,6 @@ ActiveRecord::Schema.define do
4
4
 
5
5
  create_table :business_hours, :force => true do |t|
6
6
  t.integer :opening
7
- t.string :closing
7
+ t.integer :closing
8
8
  end
9
9
  end
@@ -40,13 +40,18 @@ class TimeOfDayAttrTest < ActiveSupport::TestCase
40
40
  assert_equal 61200, business_hour.closing
41
41
  end
42
42
 
43
- test 'time of day attr setter should ignore invalid formats' do
44
- business_hour = BusinessHour.new(opening: 'Nine', closing: 'Five')
43
+ test 'time of day attr setter should raise invalid formats' do
44
+ assert_raise ArgumentError do
45
+ business_hour = BusinessHour.new(opening: 'Nine', closing: 'Five')
46
+ end
47
+ business_hour = BusinessHour.new
45
48
  assert_nil business_hour.opening
46
49
  assert_nil business_hour.closing
47
50
  business_hour.opening = '9'
48
51
  assert_equal 32400, business_hour.opening
49
- business_hour.opening = 'Nine'
52
+ assert_raise ArgumentError do
53
+ business_hour.opening = 'Nine'
54
+ end
50
55
  assert_equal 32400, business_hour.opening
51
56
  business_hour.opening = '9:30'
52
57
  assert_equal 34200, business_hour.opening
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: time_of_day_attr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clemens Teichmann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-25 00:00:00.000000000 Z
11
+ date: 2015-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails