storable 0.8.3 → 0.8.4

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 (4) hide show
  1. data/CHANGES.txt +7 -0
  2. data/lib/storable.rb +13 -6
  3. data/storable.gemspec +1 -1
  4. metadata +4 -4
@@ -3,6 +3,13 @@ STORABLE, CHANGES
3
3
  * TODO: Handle nested hashes and arrays.
4
4
  * TODO: to_xml, see: http://codeforpeople.com/lib/ruby/xx/xx-2.0.0/README
5
5
 
6
+ #### 0.8.4 (2010-12-23) #############################
7
+
8
+ * CHANGE: Moved initialize logic to Storable.from_array.
9
+
10
+ NOTE: Classes that rely on this logic when creating
11
+ new instances will need to call from_array instead!
12
+
6
13
 
7
14
  #### 0.8.3 (2010-11-02) #############################
8
15
 
@@ -35,7 +35,7 @@ class Storable
35
35
  require 'proc_source'
36
36
  require 'storable/orderedhash' if USE_ORDERED_HASH
37
37
  unless defined?(SUPPORTED_FORMATS) # We can assume all are defined
38
- VERSION = "0.8.3"
38
+ VERSION = "0.8.4"
39
39
  NICE_TIME_FORMAT = "%Y-%m-%d@%H:%M:%S".freeze
40
40
  SUPPORTED_FORMATS = [:tsv, :csv, :yaml, :json, :s, :string].freeze
41
41
  end
@@ -128,11 +128,7 @@ class Storable
128
128
  # +args+ is a list of values to set amongst the fields.
129
129
  # It's assumed that the order values matches the order
130
130
  def initialize(*args)
131
- (self.class.field_names || []).each_with_index do |n,index|
132
- break if (index+1) > args.size
133
- self.send("#{n}=", args[index])
134
- end
135
- preprocess if respond_to?(:preprocess)
131
+ preprocess if respond_to? :preprocess
136
132
  end
137
133
 
138
134
  # See SUPPORTED_FORMATS for available values
@@ -207,6 +203,17 @@ class Storable
207
203
  end
208
204
  end
209
205
 
206
+ def self.from_array(*from)
207
+ from = from.flatten.compact
208
+ return nil if !from || from.empty?
209
+ me = new
210
+ (self.field_names || []).each_with_index do |n,index|
211
+ break if index >= from.size
212
+ me.send("#{n}=", from[index])
213
+ end
214
+ me
215
+ end
216
+
210
217
  def call(fname)
211
218
  unless field_types[fname.to_sym] == Proc &&
212
219
  Proc === self.send(fname)
@@ -1,7 +1,7 @@
1
1
  @spec = Gem::Specification.new do |s|
2
2
  s.name = "storable"
3
3
  s.rubyforge_project = "storable"
4
- s.version = "0.8.3"
4
+ s.version = "0.8.4"
5
5
  s.summary = "Storable: Marshal Ruby classes into and out of multiple formats (yaml, json, csv, tsv)"
6
6
  s.description = s.summary
7
7
  s.author = "Delano Mandelbaum"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: storable
3
3
  version: !ruby/object:Gem::Version
4
- hash: 57
4
+ hash: 55
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 8
9
- - 3
10
- version: 0.8.3
9
+ - 4
10
+ version: 0.8.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Delano Mandelbaum
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-02 00:00:00 -04:00
18
+ date: 2010-12-23 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies: []
21
21