extendible 0.0.2 → 0.1.0

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.
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
  - - '>='