storable 0.8.0 → 0.8.1

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 +5 -0
  2. data/lib/storable.rb +10 -9
  3. data/storable.gemspec +1 -1
  4. metadata +4 -4
@@ -3,6 +3,11 @@ 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.1 (2010-07-31) #############################
7
+
8
+ * CHANGE: to_delimited and from_delimited are sensitive. This means you need to keep
9
+ track of data that is sensitive.
10
+
6
11
  #### 0.8.0 (2010-07-28) #############################
7
12
 
8
13
  * FIXED: from_delimited now gracefully handles String input by splitting it by $/
@@ -40,7 +40,7 @@ class Storable
40
40
  require 'proc_source'
41
41
  require 'storable/orderedhash' if USE_ORDERED_HASH
42
42
  unless defined?(SUPPORTED_FORMATS) # We can assume all are defined
43
- VERSION = "0.8.0"
43
+ VERSION = "0.8.1"
44
44
  NICE_TIME_FORMAT = "%Y-%m-%d@%H:%M:%S".freeze
45
45
  SUPPORTED_FORMATS = [:tsv, :csv, :yaml, :json, :s, :string].freeze
46
46
  end
@@ -322,7 +322,7 @@ class Storable
322
322
  #p [:to, ret.encoding.name] if ret.respond_to?(:encoding)
323
323
  ret
324
324
  elsif JSON_LOADED
325
- hash.to_json(*from, &blk)
325
+ JSON.generate(hash, *from, &blk)
326
326
  else
327
327
  raise "no JSON parser loaded"
328
328
  end
@@ -375,7 +375,8 @@ class Storable
375
375
  # +delim+ is the field delimiter.
376
376
  def to_delimited(with_titles=false, delim=',')
377
377
  values = []
378
- field_names.each do |fname|
378
+ fields = sensitive? ? (field_names-sensitive_fields) : field_names
379
+ fields.each do |fname|
379
380
  values << self.send(fname.to_s) # TODO: escape values
380
381
  end
381
382
  output = values.join(delim)
@@ -394,24 +395,24 @@ class Storable
394
395
  end
395
396
  # Create a new instance from tab-delimited data.
396
397
  # +from+ a JSON string split into an array by line.
397
- def self.from_tsv(from=[])
398
- self.from_delimited(from, "\t")
398
+ def self.from_tsv(from=[], sensitive=false)
399
+ self.from_delimited(from, "\t", sensitive)
399
400
  end
400
401
  # Create a new instance of the object from comma-delimited data.
401
402
  # +from+ a JSON string split into an array by line.
402
- def self.from_csv(from=[])
403
- self.from_delimited(from, ',')
403
+ def self.from_csv(from=[], sensitive=false)
404
+ self.from_delimited(from, ',', sensitive)
404
405
  end
405
406
 
406
407
  # Create a new instance of the object from a delimited string.
407
408
  # +from+ a JSON string split into an array by line.
408
409
  # +delim+ is the field delimiter.
409
- def self.from_delimited(from=[],delim=',')
410
+ def self.from_delimited(from=[],delim=',',sensitive=false)
410
411
  return if from.empty?
411
412
  from = from.split($/) if String === from
412
413
  hash = {}
413
414
 
414
- fnames = self.field_names
415
+ fnames = sensitive ? (field_names-sensitive_fields) : field_names
415
416
  values = from[0].chomp.split(delim)
416
417
 
417
418
  fnames.each_with_index do |key,index|
@@ -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.0"
4
+ s.version = "0.8.1"
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: 63
4
+ hash: 61
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 8
9
- - 0
10
- version: 0.8.0
9
+ - 1
10
+ version: 0.8.1
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-07-28 00:00:00 -04:00
18
+ date: 2010-07-31 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies: []
21
21