laserlemon-dry_serial 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/dry_serial.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{dry_serial}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["laserlemon"]
12
- s.date = %q{2009-08-24}
12
+ s.date = %q{2009-08-30}
13
13
  s.description = %q{Define serialization styles for your ActiveRecord models}
14
14
  s.email = %q{steve@laserlemon.com}
15
15
  s.extra_rdoc_files = [
@@ -17,8 +17,7 @@ Gem::Specification.new do |s|
17
17
  "README.rdoc"
18
18
  ]
19
19
  s.files = [
20
- ".document",
21
- ".gitignore",
20
+ ".gitignore",
22
21
  "LICENSE",
23
22
  "README.rdoc",
24
23
  "Rakefile",
data/lib/dry_serial.rb CHANGED
@@ -4,19 +4,24 @@ module LaserLemon
4
4
  module DrySerial
5
5
  def self.included(base)
6
6
  base.class_eval do
7
+ extend ClassMethods
8
+
7
9
  class_inheritable_hash :serialization_options
8
10
  self.serialization_options = {}
9
11
 
10
12
  class_inheritable_accessor :default_serialization_style
11
13
  self.default_serialization_style = nil
14
+
15
+ alias_method_chain :to_xml, :breakfast
16
+ alias_method_chain :to_json, :breakfast
12
17
  end
13
- base.extend ClassMethods
14
18
  end
15
19
 
16
20
  module ClassMethods
17
21
  def dry_serial(*args)
18
22
  options = args.extract_options!
19
23
  style = args.first || :default
24
+
20
25
  self.serialization_options[style] = options
21
26
  self.default_serialization_style ||= style
22
27
  end
@@ -24,6 +29,24 @@ module LaserLemon
24
29
  def default_serialization_options
25
30
  self.serialization_options.fetch(self.default_serialization_style, {})
26
31
  end
32
+
33
+ def styled_serialization_options(*args)
34
+ options = args.extract_options!
35
+ style = args.first || options[:style] || default_serialization_style
36
+
37
+ style_options = serialization_options.fetch(style, default_serialization_options)
38
+ style_options.merge(options).merge(:style => style)
39
+ end
40
+ end
41
+
42
+ def to_xml_with_breakfast(*args, &block)
43
+ options = self.class.styled_serialization_options(*args)
44
+ to_xml_without_breakfast(options, &block)
45
+ end
46
+
47
+ def to_json_with_breakfast(*args)
48
+ options = self.class.styled_serialization_options(*args)
49
+ to_json_without_breakfast(options)
27
50
  end
28
51
  end
29
52
  end
data/lib/serialization.rb CHANGED
@@ -2,26 +2,10 @@ module LaserLemon
2
2
  module DrySerial
3
3
  module Serializer
4
4
  def self.included(base)
5
- base.alias_method_chain :initialize, :breakfast
6
5
  base.alias_method_chain :add_includes, :breakfast
7
6
  base.alias_method_chain :serializable_names, :breakfast
8
7
  end
9
8
 
10
- def initialize_with_breakfast(record, options = nil)
11
- default_options = record.class.default_serialization_options
12
-
13
- new_options = case options
14
- when Hash
15
- options.reverse_merge!(:style => record.class.default_serialization_style)
16
- style_options = record.class.serialization_options.fetch(options[:style], default_options)
17
- options.reverse_merge(style_options)
18
- else
19
- record.class.serialization_options.fetch(options, default_options).merge(:style => options)
20
- end
21
-
22
- initialize_without_breakfast(record, new_options)
23
- end
24
-
25
9
  def add_includes_with_breakfast(&block)
26
10
  if include_associations = options.delete(:include)
27
11
  include_has_options = include_associations.is_a?(Hash)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: laserlemon-dry_serial
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
  - laserlemon
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-24 00:00:00 -07:00
12
+ date: 2009-08-30 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -42,7 +42,6 @@ extra_rdoc_files:
42
42
  - LICENSE
43
43
  - README.rdoc
44
44
  files:
45
- - .document
46
45
  - .gitignore
47
46
  - LICENSE
48
47
  - README.rdoc
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE