multiparameter_attributes_handler 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZWFmYjJjMmVhMDMzMGY1NGFlMTY3Yzc1Mjk2OTIyYjdmZjM5MTE3ZA==
4
+ YTE5NGNhNTY0NmE4NzY2MzVmOGM5ZmUyZjM3YzI2MTI4N2U1M2EzNA==
5
5
  data.tar.gz: !binary |-
6
- ZmEzZWIzMzcwMzM5MGQyZmUzMDkyNTBiODlmN2U1NmFjODUyZGU5OQ==
6
+ OGM1NDgzMzZmN2RjNTRiYTYyOWVhMzI0NzM4YWMyYWYxMjAyMmVhMg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OTkwYmE5ZTFmNDRiYzQxMWJhMTNmMTU5N2E5YTUyMjVjZjJiNTZjNzIzMjll
10
- NTVhOTZjZTI2MTg1ODA2M2Y4NTY0MTI0MzQ5MjZmMTI0OGY4YmIxOTRkYzMx
11
- MDI5N2YyNDY5MmFkOTdjODhjNWNhNTNiYzZjMjI3ODQ5NGQ5NzQ=
9
+ OGE5NGRlNzMyNWIxZTIxMjYwYTA5MmUwN2Y3Y2JmM2UxN2EzNjA5NTVlMWJm
10
+ NjJhYTZmYmFmNjQxNDlmNTJkMDJlMjQ1NGYwOGExZDJmZGM1MmUzMjhkMmRi
11
+ YzdmYmViODRhNjIzYzVlYmIzMmNjOWUwZGVhMTAwNGY2MTM1YjI=
12
12
  data.tar.gz: !binary |-
13
- YzVjZTY3NmIyZGU5ODdlMDE3OTc0NWIyZjUwMzQ2OGE0ODMzODM2NWYzMDNi
14
- M2NhZGFlNjI4NTkwMzI0MDU5YzIxNjU5ZTUzOGVhOTdiNzMzOTZiNTA2YWM2
15
- MzA3NzRlNjY2ZWZjY2ViYjdjNjA5NWQzNDEwZGYwMTUyNWZlZGY=
13
+ ZTcxNTlmYmYxMjk3OWRmYmJjMTQxYzcxN2FmYWM3ZTVlYzMyZDg4MzI0NzU2
14
+ NGM0ZTg4M2U1ZTliNWNkZTBlZTAwMGM3OTcyMTY2NmZhNDg2MmRhNDhmYTk1
15
+ NTcxN2U2MzExMWQzZTlmMjI2MjA4NDYzMjJiOWYyYmEwMzlkNmY=
@@ -32,9 +32,12 @@ This creates a last_read key with a time object derived from the values
32
32
  "last_read(1i)" => "2004",
33
33
  "last_read(2i)" => "6",
34
34
  "last_read(3i)" => "24",
35
- "last_read" => Time.local('2004', '6', '24')
35
+ "last_read" => Date.new(2004, 6, 24)
36
36
  }
37
37
 
38
+ Note that if hours and minutes are also present, the derived value will be a
39
+ Time object.
40
+
38
41
  === Modifying the output
39
42
 
40
43
  If you need to modify the derived values, pass a block to manipulate_all, and
@@ -48,7 +51,7 @@ Will create
48
51
  "last_read(1i)" => "2004",
49
52
  "last_read(2i)" => "6",
50
53
  "last_read(3i)" => "24",
51
- "last_read" => Time.local('2004', '6', '24').to_s
54
+ "last_read" => Date.new('2004', '6', '24').to_s
52
55
  }
53
56
 
54
57
  == An ActiveResource example
@@ -45,7 +45,11 @@ module MultiparameterAttributesHandler
45
45
  private
46
46
  def convert_to_time(multiparameter, values)
47
47
  begin
48
- Time.local(*values)
48
+ if values.length == 3
49
+ Date.new *values.collect(&:to_i)
50
+ else
51
+ Time.local *values
52
+ end
49
53
  rescue => e
50
54
  msg = "Error determining value_of #{multiparameter} from #{values} (#{e.message})"
51
55
  raise_assignment_errors(multiparameter, values, msg, e)
@@ -1,11 +1,20 @@
1
1
  module MultiparameterAttributesHandler
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
4
4
 
5
5
  # History
6
6
  # =======
7
- #
8
- # 0.1.0: Allowed a block to be user to modify the output
7
+ #
8
+ # 0.1.1: Returns Date object if only multiparameter only has three elements
9
+ # -------------------------------------------------------------------------
10
+ #
11
+ # A problem was identified where summer time caused a problem with hour offsets
12
+ # if the multiparameter was for a date.
13
+ #
14
+ # The new logic is that if date and time are contained in the multiparameter,
15
+ # a Time object is returned. If only date is present, a date object is returned
16
+ #
17
+ # 0.1.0: Allowes a block to be user to modify the output
9
18
  # ------------------------------------------------------
10
19
  # A use case was found where the resulting data needed to be stored as a
11
20
  # string, rather than a date. As there may be other ways the output needs
@@ -23,18 +23,21 @@ module MultiparameterAttributesHandler
23
23
  end
24
24
 
25
25
  def test_value_of_multiparameter
26
- assert_equal time_for('last_read'), manipulator.value_of('last_read')
27
26
  assert_equal time_for('other'), manipulator.value_of('other')
28
27
  end
29
28
 
30
29
  def test_value_mod_changes_values
31
30
  manipulator = Manipulator.new(hash, &:to_s)
32
- assert_equal time_for('last_read').to_s, manipulator.value_of('last_read')
31
+ assert_equal date_for('last_read').to_s, manipulator.value_of('last_read')
32
+ end
33
+
34
+ def test_value_of_multiparameter_when_date
35
+ assert_equal date_for('last_read'), @manipulator.value_of('last_read')
33
36
  end
34
37
 
35
38
  def test_value_mod_with_lambda
36
39
  manipulator = Manipulator.new(hash) {|value| value + 1}
37
- assert_equal (time_for('last_read') + 1), manipulator.value_of('last_read')
40
+ assert_equal (date_for('last_read') + 1), manipulator.value_of('last_read')
38
41
  end
39
42
 
40
43
  def test_output_returns_original_content
@@ -108,5 +111,9 @@ module MultiparameterAttributesHandler
108
111
  Time.local *manipulator.values_for(field)
109
112
  end
110
113
 
114
+ def date_for(field)
115
+ Date.new *manipulator.values_for(field).collect(&:to_i)
116
+ end
117
+
111
118
  end
112
119
  end
@@ -9,12 +9,12 @@ class MultiparameterAttributesHandlerTest < Test::Unit::TestCase
9
9
 
10
10
  def test_manipulate_all
11
11
  output = MultiparameterAttributesHandler.manipulate_all(attributes)
12
- assert_equal Time.local(2004, 6, 24), output['last_read']
12
+ assert_equal Date.new(2004, 6, 24), output['last_read']
13
13
  end
14
14
 
15
15
  def test_manipulate_all_with_block
16
16
  output = MultiparameterAttributesHandler.manipulate_all(attributes, &:to_s)
17
- assert_equal Time.local(2004, 6, 24).to_s, output['last_read']
17
+ assert_equal Date.new(2004, 6, 24).to_s, output['last_read']
18
18
  end
19
19
 
20
20
  def attributes
@@ -15,7 +15,7 @@ class ThingTest < Test::Unit::TestCase
15
15
  @thing.attributes = attributes
16
16
  # note that extra #to_date call allows test to pass for Oracle, which
17
17
  # treats dates/times the same
18
- assert_equal Time.local(2004, 6, 24), @thing.attributes['last_read']
18
+ assert_equal Date.new(2004, 6, 24), @thing.attributes['last_read']
19
19
  end
20
20
 
21
21
  def test_multiparameter_attributes_on_date_with_empty_year
metadata CHANGED
@@ -1,18 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multiparameter_attributes_handler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Nichols
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-27 00:00:00.000000000 Z
11
+ date: 2015-07-29 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Rails forms helpers for date and time fields generate multiparameter
14
- params. multiparameter_attributes_handler allows objects to assign these to thier
15
- attributes,
14
+ params. multiparameter_attributes_handler allows objects to use these params.
16
15
  email:
17
16
  - rob@undervale.co.uk
18
17
  executables: []
@@ -32,7 +31,8 @@ files:
32
31
  - test/thing.rb
33
32
  - test/thing_test.rb
34
33
  homepage: https://github.com/reggieb/multiparameter_attributes_handler
35
- licenses: []
34
+ licenses:
35
+ - MIT-LICENSE
36
36
  metadata: {}
37
37
  post_install_message:
38
38
  rdoc_options: []
@@ -50,13 +50,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
50
50
  version: '0'
51
51
  requirements: []
52
52
  rubyforge_project:
53
- rubygems_version: 2.4.3
53
+ rubygems_version: 2.4.1
54
54
  signing_key:
55
55
  specification_version: 4
56
- summary: Allows objects with attributes, to handle multiparameter params
56
+ summary: Allows non-active_record objects to handle multiparameter params
57
57
  test_files:
58
- - test/thing_test.rb
59
58
  - test/multiparameter_attributes_handler_test.rb
60
59
  - test/thing.rb
61
60
  - test/multiparameter_attributes_handler/multiparameter_attributes_handler_error_test.rb
62
61
  - test/multiparameter_attributes_handler/manipulator_test.rb
62
+ - test/thing_test.rb