extendible 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cf2096b90c342157893afa133b45e9a61f3eccb0
4
- data.tar.gz: d4aec8e5d1729ea0886514815cd176bde73d3dde
3
+ metadata.gz: 00f23811e464675bc843dc76dfd25a1cdca487c7
4
+ data.tar.gz: fc9b3627be129ef3bb1c8a049bab354e5ada2830
5
5
  SHA512:
6
- metadata.gz: 27b0174585d3c96bcf100da65d703d8d20ac6a830f18e473f8a2afe662085038b68e97678c7bbbd577f524ff81eac26522b66fe849b296094c666002f4b452e1
7
- data.tar.gz: 2ee0d6ae8a28df83826730edb699fc295507aa2a4e7f942d0f50fea4f6caeaa72947a1562430ff976996b902e6b2aaed201c7609267878c01233ade0aaa64532
6
+ metadata.gz: 89c25defd4890c5debb8e6b960502d3663f1cde741d1bb5a318c18367ceb16e0c6482388fee02276f3b943ea6cbcc6e56291f3c37d42b7016a97af8d0f2cda78
7
+ data.tar.gz: 8233cc272325889c6ec0eed8dc6b792c3a8dcef1bd5ef906fee3c3db988fe513884448888c089f65626e0adc3a2d8653c49aece998c8d31808bd5a9ad1ec0fcd
data/extendible.gemspec CHANGED
@@ -4,23 +4,25 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'extendible/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "extendible"
7
+ spec.name = 'extendible'
8
8
  spec.version = Extendible::VERSION
9
- spec.authors = ["Robert Falkén"]
10
- spec.email = ["f@lken.se"]
9
+ spec.authors = ['Robert Falkén']
10
+ spec.email = ['f@lken.se']
11
11
  spec.description = %q{Makes ActiveModel::Serializer objects extendible by URL parameters}
12
12
  spec.summary = %q{Serializer extension}
13
- spec.homepage = "https://github.com/robertfalken/extendible"
14
- spec.license = "MIT"
13
+ spec.homepage = 'https://github.com/robertfalken/extendible'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
21
  spec.add_dependency 'active_model_serializers'
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.3"
24
- spec.add_development_dependency "rake"
25
- spec.add_development_dependency "rspec"
23
+ spec.add_development_dependency 'bundler', '~> 1.3'
24
+ spec.add_development_dependency 'rake'
25
+ spec.add_development_dependency 'rspec'
26
+
27
+ spec.required_ruby_version = '>= 1.9.3'
26
28
  end
@@ -1,3 +1,3 @@
1
1
  module Extendible
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/extendible.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'extendible/version'
2
+
1
3
  module Extendible
2
4
 
3
5
  def self.included(base)
@@ -27,6 +29,11 @@ module Extendible
27
29
  @extended_objects = all
28
30
  end
29
31
 
32
+ def serialize(object, child_sym)
33
+ serializer_name = "#{child_sym.to_s.camelize}Serializer"
34
+ serializer_name.constantize.new(object.try(child_sym)) rescue object.try(child_sym)
35
+ end
36
+
30
37
  module ClassMethods
31
38
  def extendible(*children)
32
39
  # iterate through all obects that are supposed to be extendible
@@ -37,9 +44,11 @@ module Extendible
37
44
  return nil if object.try(child_sym).nil?
38
45
  if extended_objects.has_key?(child_sym) # params[:extend] includes child, extend attributes
39
46
  if extended_objects[child_sym].nil? # no attributes are specified, extend with all
40
- object.try(child_sym)
47
+ serialize(object, child_sym).as_json
41
48
  else # only extend with attributes provided with dot notation
42
- object.try(child_sym).attributes.extract!(*extended_objects[child_sym].map(&:to_s))
49
+ serialized_object = serialize(object, child_sym)
50
+ mapper = (serialized_object.class < ActiveModel::Serializer) ? :to_sym : :to_s
51
+ serialized_object.attributes.extract!(*extended_objects[child_sym].map(&mapper))
43
52
  end
44
53
  else # child is not in params[:extend], only include id
45
54
  object.try(child_sym).attributes.extract!('id')
@@ -47,6 +56,7 @@ module Extendible
47
56
  end
48
57
  end
49
58
  end
59
+
50
60
  end
51
61
 
52
62
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: extendible
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Falkén
@@ -95,7 +95,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - '>='
97
97
  - !ruby/object:Gem::Version
98
- version: '0'
98
+ version: 1.9.3
99
99
  required_rubygems_version: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - '>='