attrio 0.6.1 → 0.6.2

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: 82e6aa7dc69c239169c91a04fc181cc98122d07d
4
- data.tar.gz: 5e82a61c7f4c9eadf0a410beb5f69df2c91739c4
3
+ metadata.gz: 8a48e9858e6427010ea2fd9a3eed6bbce23ec937
4
+ data.tar.gz: a12796dd65e3629247a51b3d98934bdf5eda6a8f
5
5
  SHA512:
6
- metadata.gz: 62ed6efe9a4c52eb897e0327fd38af6f737f447607348faf4cee5a38a454f0e0fd58b23f5104b279d37f1935701d09d0026045c48573351f0d89e4044bf17d4f
7
- data.tar.gz: f0d3dfade7af51b4c0094f3f3fca5eb5d5d6f4b1b97ee14f8c44a6ed683e2f209b14cfb16324d60b554540e29dee889b9560b7581f560011d5b0377694c77f3f
6
+ metadata.gz: c39c375f692678255881a6dbd488e9a45cafb931e0a83b745a8fe214a75c5d1d76a62d95efc730af924966998d134990e29469ef43270072c10a99f303cb349f
7
+ data.tar.gz: 5c403918f66223d3c3d3eddf19379ac115505fcf31b2a5fd69185db2d93d1a6adc9444235c58c3ca07fc722f6668bc1d29d7da68b8ed626edb4e4eb3f225843b
@@ -83,6 +83,7 @@ module Attrio
83
83
  autoload :DateTime, 'attrio/types/date_time'
84
84
  autoload :Float, 'attrio/types/float'
85
85
  autoload :Integer, 'attrio/types/integer'
86
+ autoload :Set, 'attrio/types/set'
86
87
  autoload :Symbol, 'attrio/types/symbol'
87
88
  autoload :Time, 'attrio/types/time'
88
89
  end
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+
3
+ module Attrio
4
+ module Types
5
+ class Set < Array
6
+ def self.typecast(value, options = {})
7
+ begin
8
+ set = value.respond_to?(:split) ? value.split(options[:split]).to_set : Attrio::Helpers.to_a(value).to_set
9
+
10
+ if options[:element].present?
11
+ type = Attrio::AttributesParser.cast_type(self.element_type(options[:element]))
12
+ options = self.element_options(options[:element])
13
+
14
+ set.map! do |item|
15
+ if type.respond_to?(:typecast) && type.respond_to?(:typecasted?)
16
+ type.typecasted?(item) ? item : type.typecast(item, options)
17
+ else
18
+ type == Hash && item.is_a?(Hash) ? value : type.new(item)
19
+ end
20
+ end
21
+ end
22
+
23
+ set
24
+ rescue ArgumentError => e
25
+ nil
26
+ end
27
+ end
28
+
29
+ def self.typecasted?(value)
30
+ value.is_a? ::Set
31
+ end
32
+ end
33
+ end
34
+ end
@@ -4,7 +4,7 @@ module Attrio
4
4
  module Version
5
5
  MAJOR = 0
6
6
  MINOR = 6
7
- PATCH = 1
7
+ PATCH = 2
8
8
  BUILD = nil
9
9
 
10
10
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attrio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Alexandrov
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-27 00:00:00.000000000 Z
12
+ date: 2013-10-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -133,6 +133,7 @@ files:
133
133
  - lib/attrio/types/date_time.rb
134
134
  - lib/attrio/types/float.rb
135
135
  - lib/attrio/types/integer.rb
136
+ - lib/attrio/types/set.rb
136
137
  - lib/attrio/types/symbol.rb
137
138
  - lib/attrio/types/time.rb
138
139
  - lib/attrio/version.rb
@@ -175,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
176
  version: '0'
176
177
  requirements: []
177
178
  rubyforge_project:
178
- rubygems_version: 2.0.3
179
+ rubygems_version: 2.0.6
179
180
  signing_key:
180
181
  specification_version: 4
181
182
  summary: Attributes for plain old Ruby objects. No dependencies, only simplicity and
@@ -201,3 +202,4 @@ test_files:
201
202
  - spec/unit/types/integer_spec.rb
202
203
  - spec/unit/types/symbol_spec.rb
203
204
  - spec/unit/types/time_spec.rb
205
+ has_rdoc: