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 +4 -4
- data/extendible.gemspec +11 -9
- data/lib/extendible/version.rb +1 -1
- data/lib/extendible.rb +12 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00f23811e464675bc843dc76dfd25a1cdca487c7
|
4
|
+
data.tar.gz: fc9b3627be129ef3bb1c8a049bab354e5ada2830
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 =
|
7
|
+
spec.name = 'extendible'
|
8
8
|
spec.version = Extendible::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
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 =
|
14
|
-
spec.license =
|
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 = [
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
21
|
spec.add_dependency 'active_model_serializers'
|
22
22
|
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
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
|
data/lib/extendible/version.rb
CHANGED
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
|
47
|
+
serialize(object, child_sym).as_json
|
41
48
|
else # only extend with attributes provided with dot notation
|
42
|
-
object
|
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
|
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:
|
98
|
+
version: 1.9.3
|
99
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - '>='
|