attribute_serializer 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/VERSION +1 -1
  2. data/examples.rb +4 -0
  3. data/lib/attribute_serializer.rb +13 -6
  4. metadata +12 -5
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.1
1
+ 0.5.0
@@ -146,4 +146,8 @@ end
146
146
 
147
147
  eg "Hashes are passed straight through" do
148
148
  Assert(AttributeSerializer({ :foo => 'bar' }) == { :foo => 'bar' })
149
+ end
150
+
151
+ eg "Arrays of strings are passed straight through" do
152
+ Assert(AttributeSerializer(['a','b']) == ['a','b'])
149
153
  end
@@ -12,7 +12,7 @@ module AttributeSerializer
12
12
  @attribs = attribs
13
13
  @delegate_class = DelegateClass(klass)
14
14
  @delegate_class.class_eval do
15
- def delegatee; __getobj__ end
15
+ def delegatee; __getobj__ end
16
16
  def id; formatee.id end # DelegateClass was written before object_id became the new world order
17
17
  alias_method :formatee, :delegatee # this was a stupid name
18
18
  end
@@ -49,6 +49,7 @@ module AttributeSerializer
49
49
  end
50
50
 
51
51
  def generate_single(klass, context_name, object)
52
+ return object if klass == String
52
53
  context = context_for(klass, context_name)
53
54
  raise ArgumentError, "no contextual attributes setup for #{klass}:#{context_name}" unless context
54
55
  context.generate(object)
@@ -64,9 +65,11 @@ module AttributeSerializer
64
65
 
65
66
  end
66
67
 
67
- # The interface
68
+ # Public: Define a serializer or serialize an object or collection
68
69
  #
69
- # A default formatter:
70
+ # Examples
71
+ #
72
+ # Define a default serializer on your class:
70
73
  #
71
74
  # AttributeSerializer BlogPost, %w(id created_at title body) do
72
75
  # def body
@@ -74,18 +77,22 @@ end
74
77
  # end
75
78
  # end
76
79
  #
77
- # Then call with:
80
+ # Then serialize and instance like:
78
81
  #
79
82
  # AttributeSerializer @post
80
83
  #
81
- # You can also define other formatters
84
+ # You can also define other serializers:
82
85
  #
83
86
  # AttributeSerializer BlogPost, :summary, %w(id created_at title)
84
87
  #
85
- # And you AttributeSerializer can produce formatted collections:
88
+ # And serialize collections:
86
89
  #
87
90
  # AttributeSerializer @posts, :summary
88
91
  #
92
+ # AttributeSerializer returns an OrderedHash as the serialization, it's up to
93
+ # you to call #to_json or #to_yaml on that object
94
+ #
95
+ # Returns an OrderedHash serialization when given an object or collection
89
96
  def AttributeSerializer(*args, &blk)
90
97
  if args.first.is_a?(Class)
91
98
  klass, context_name, attribs = (args.size == 3) ? args : [args[0], :default, args[1]]
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attribute_serializer
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 11
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
- - 4
8
- - 1
9
- version: 0.4.1
8
+ - 5
9
+ - 0
10
+ version: 0.5.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Myles Byrne
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-05-15 00:00:00 -05:00
18
+ date: 2010-05-26 00:00:00 -05:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: exemplor
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 24027
27
30
  segments:
28
31
  - 3000
29
32
  - 1
@@ -55,23 +58,27 @@ rdoc_options:
55
58
  require_paths:
56
59
  - lib
57
60
  required_ruby_version: !ruby/object:Gem::Requirement
61
+ none: false
58
62
  requirements:
59
63
  - - ">="
60
64
  - !ruby/object:Gem::Version
65
+ hash: 3
61
66
  segments:
62
67
  - 0
63
68
  version: "0"
64
69
  required_rubygems_version: !ruby/object:Gem::Requirement
70
+ none: false
65
71
  requirements:
66
72
  - - ">="
67
73
  - !ruby/object:Gem::Version
74
+ hash: 3
68
75
  segments:
69
76
  - 0
70
77
  version: "0"
71
78
  requirements: []
72
79
 
73
80
  rubyforge_project:
74
- rubygems_version: 1.3.6
81
+ rubygems_version: 1.3.7
75
82
  signing_key:
76
83
  specification_version: 3
77
84
  summary: Takes an object, serializes the attributes to an ordered hash based on a pre-defined schema