to_api 1.0.1 → 1.0.2
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.
- data/lib/to_api.rb +16 -8
- data/spec/spec_helper.rb +4 -2
- data/spec/to_api_spec.rb +6 -0
- metadata +27 -70
- data/Gemfile +0 -7
- data/Gemfile.lock +0 -22
- data/Rakefile +0 -39
- data/VERSION +0 -1
- data/to_api.gemspec +0 -67
data/lib/to_api.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
|
1
3
|
class ActiveRecord::Base
|
2
4
|
def to_api(*includes) #assumes all attribute types are fine
|
3
5
|
hash = {}
|
4
6
|
valid_includes = (self.class.reflect_on_all_associations.map(&:name).map(&:to_s) | self.valid_api_includes)
|
5
|
-
|
7
|
+
|
6
8
|
include_hash = {}
|
7
9
|
includes.each do |i|
|
8
10
|
if i.kind_of?(Hash)
|
@@ -13,9 +15,9 @@ class ActiveRecord::Base
|
|
13
15
|
include_hash[i] = []
|
14
16
|
end
|
15
17
|
end
|
16
|
-
|
18
|
+
|
17
19
|
include_hash.delete_if{|k,v| !valid_includes.include?(k)}
|
18
|
-
|
20
|
+
|
19
21
|
attributes.each do |k, v|
|
20
22
|
attribute_includes = include_hash[k] || []
|
21
23
|
v = v.to_api(*attribute_includes) if v.respond_to?(:to_api)
|
@@ -27,24 +29,24 @@ class ActiveRecord::Base
|
|
27
29
|
api_obj = self.send(relation)
|
28
30
|
hash[relation.to_s] = api_obj.respond_to?(:to_api) ? api_obj.to_api(*relation_includes) : api_obj
|
29
31
|
end
|
30
|
-
|
32
|
+
|
31
33
|
hash
|
32
34
|
end
|
33
|
-
|
35
|
+
|
34
36
|
# override in models
|
35
37
|
def valid_api_includes
|
36
38
|
[]
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
40
|
-
|
42
|
+
#Sadly, Scope isn't enumerable
|
43
|
+
class ActiveRecord::NamedScope::Scope
|
41
44
|
def to_api(*includes)
|
42
45
|
map{|e|e.to_api(*includes)}
|
43
46
|
end
|
44
47
|
end
|
45
48
|
|
46
|
-
|
47
|
-
class ActiveRecord::NamedScope::Scope
|
49
|
+
module Enumerable
|
48
50
|
def to_api(*includes)
|
49
51
|
map{|e|e.to_api(*includes)}
|
50
52
|
end
|
@@ -81,4 +83,10 @@ class Symbol
|
|
81
83
|
def to_api(*includes)
|
82
84
|
to_s
|
83
85
|
end
|
86
|
+
end
|
87
|
+
|
88
|
+
class NilClass
|
89
|
+
def to_api
|
90
|
+
self
|
91
|
+
end
|
84
92
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/to_api_spec.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: to_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 2
|
10
|
+
version: 1.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Shawn Anderson
|
@@ -20,23 +20,7 @@ date: 2010-12-10 00:00:00 -05:00
|
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
|
-
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
|
-
requirements:
|
28
|
-
- - ">="
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
hash: 3
|
31
|
-
segments:
|
32
|
-
- 0
|
33
|
-
version: "0"
|
34
|
-
name: rake
|
35
|
-
requirement: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
type: :runtime
|
38
|
-
prerelease: false
|
39
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
40
24
|
none: false
|
41
25
|
requirements:
|
42
26
|
- - ">="
|
@@ -52,82 +36,55 @@ dependencies:
|
|
52
36
|
segments:
|
53
37
|
- 3
|
54
38
|
version: "3"
|
55
|
-
name: activerecord
|
56
|
-
requirement: *id002
|
57
|
-
- !ruby/object:Gem::Dependency
|
58
39
|
type: :runtime
|
40
|
+
name: activerecord
|
59
41
|
prerelease: false
|
60
|
-
version_requirements:
|
61
|
-
none: false
|
62
|
-
requirements:
|
63
|
-
- - ">="
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
hash: 3
|
66
|
-
segments:
|
67
|
-
- 0
|
68
|
-
version: "0"
|
69
|
-
name: jeweler
|
70
|
-
requirement: *id003
|
42
|
+
version_requirements: *id001
|
71
43
|
- !ruby/object:Gem::Dependency
|
72
|
-
|
73
|
-
prerelease: false
|
74
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
44
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
75
45
|
none: false
|
76
46
|
requirements:
|
77
|
-
- - "
|
47
|
+
- - "="
|
78
48
|
- !ruby/object:Gem::Version
|
79
|
-
hash:
|
49
|
+
hash: 25
|
80
50
|
segments:
|
81
|
-
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
- !ruby/object:Gem::Dependency
|
51
|
+
- 1
|
52
|
+
- 3
|
53
|
+
- 1
|
54
|
+
version: 1.3.1
|
86
55
|
type: :development
|
56
|
+
name: rspec
|
87
57
|
prerelease: false
|
88
|
-
version_requirements:
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ">="
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
hash: 3
|
94
|
-
segments:
|
95
|
-
- 0
|
96
|
-
version: "0"
|
97
|
-
name: jeweler
|
98
|
-
requirement: *id005
|
58
|
+
version_requirements: *id002
|
99
59
|
- !ruby/object:Gem::Dependency
|
100
|
-
|
101
|
-
prerelease: false
|
102
|
-
version_requirements: &id006 !ruby/object:Gem::Requirement
|
60
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
103
61
|
none: false
|
104
62
|
requirements:
|
105
63
|
- - ">="
|
106
64
|
- !ruby/object:Gem::Version
|
107
|
-
hash:
|
65
|
+
hash: 49
|
108
66
|
segments:
|
109
67
|
- 0
|
110
|
-
|
111
|
-
|
112
|
-
|
68
|
+
- 8
|
69
|
+
- 7
|
70
|
+
version: 0.8.7
|
71
|
+
type: :development
|
72
|
+
name: rake
|
73
|
+
prerelease: false
|
74
|
+
version_requirements: *id003
|
113
75
|
description: Helper for simplifying JSON api creation.
|
114
76
|
email: shawn42@gmail.com
|
115
77
|
executables: []
|
116
78
|
|
117
79
|
extensions: []
|
118
80
|
|
119
|
-
extra_rdoc_files:
|
120
|
-
|
81
|
+
extra_rdoc_files: []
|
82
|
+
|
121
83
|
files:
|
122
|
-
- Gemfile
|
123
|
-
- Gemfile.lock
|
124
|
-
- README
|
125
|
-
- Rakefile
|
126
|
-
- VERSION
|
127
84
|
- lib/to_api.rb
|
85
|
+
- README
|
128
86
|
- spec/spec_helper.rb
|
129
87
|
- spec/to_api_spec.rb
|
130
|
-
- to_api.gemspec
|
131
88
|
has_rdoc: true
|
132
89
|
homepage: http://github.com/atomicobject/to_api
|
133
90
|
licenses: []
|
data/Gemfile
DELETED
data/Gemfile.lock
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
activerecord (2.3.5)
|
5
|
-
activesupport (= 2.3.5)
|
6
|
-
activesupport (2.3.5)
|
7
|
-
git (1.2.5)
|
8
|
-
jeweler (1.5.1)
|
9
|
-
bundler (~> 1.0.0)
|
10
|
-
git (>= 1.2.5)
|
11
|
-
rake
|
12
|
-
rake (0.8.7)
|
13
|
-
rspec (1.3.0)
|
14
|
-
|
15
|
-
PLATFORMS
|
16
|
-
ruby
|
17
|
-
|
18
|
-
DEPENDENCIES
|
19
|
-
activerecord (>= 2.3, < 3)
|
20
|
-
jeweler
|
21
|
-
rake
|
22
|
-
rspec (= 1.3.0)
|
data/Rakefile
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
require "rubygems"
|
2
|
-
require "bundler/setup"
|
3
|
-
|
4
|
-
|
5
|
-
begin
|
6
|
-
require 'jeweler'
|
7
|
-
Jeweler::Tasks.new do |gem|
|
8
|
-
gem.name = "to_api"
|
9
|
-
gem.rubyforge_project = "to_api"
|
10
|
-
gem.summary = %Q{Helper for simplifying JSON api creation}
|
11
|
-
gem.description = %Q{Helper for simplifying JSON api creation.}
|
12
|
-
gem.email = "shawn42@gmail.com"
|
13
|
-
gem.homepage = "http://github.com/atomicobject/to_api"
|
14
|
-
gem.authors = ["Shawn Anderson","Ryan Fogle"]
|
15
|
-
gem.add_development_dependency "rspec"
|
16
|
-
gem.add_development_dependency "jeweler"
|
17
|
-
gem.add_dependency 'activerecord'
|
18
|
-
gem.test_files = FileList['{spec,test}/**/*.rb']
|
19
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
20
|
-
end
|
21
|
-
Jeweler::GemcutterTasks.new
|
22
|
-
rescue LoadError
|
23
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
24
|
-
end
|
25
|
-
|
26
|
-
|
27
|
-
begin
|
28
|
-
require 'spec/rake/spectask'
|
29
|
-
desc "Run the code examples in spec/"
|
30
|
-
Spec::Rake::SpecTask.new(:spec) do |t|
|
31
|
-
t.spec_files = FileList["spec/**/*_spec.rb"]
|
32
|
-
end
|
33
|
-
task :default => :spec
|
34
|
-
|
35
|
-
rescue LoadError
|
36
|
-
puts "RSpec (or a dependency) not available. Install it with: gem install rspec"
|
37
|
-
end
|
38
|
-
|
39
|
-
# vim: syntax=Ruby
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.0.1
|
data/to_api.gemspec
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{to_api}
|
8
|
-
s.version = "1.0.1"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Shawn Anderson", "Ryan Fogle"]
|
12
|
-
s.date = %q{2010-12-10}
|
13
|
-
s.description = %q{Helper for simplifying JSON api creation.}
|
14
|
-
s.email = %q{shawn42@gmail.com}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"README"
|
17
|
-
]
|
18
|
-
s.files = [
|
19
|
-
"Gemfile",
|
20
|
-
"Gemfile.lock",
|
21
|
-
"README",
|
22
|
-
"Rakefile",
|
23
|
-
"VERSION",
|
24
|
-
"lib/to_api.rb",
|
25
|
-
"spec/spec_helper.rb",
|
26
|
-
"spec/to_api_spec.rb",
|
27
|
-
"to_api.gemspec"
|
28
|
-
]
|
29
|
-
s.homepage = %q{http://github.com/atomicobject/to_api}
|
30
|
-
s.require_paths = ["lib"]
|
31
|
-
s.rubyforge_project = %q{to_api}
|
32
|
-
s.rubygems_version = %q{1.3.7}
|
33
|
-
s.summary = %q{Helper for simplifying JSON api creation}
|
34
|
-
s.test_files = [
|
35
|
-
"spec/spec_helper.rb",
|
36
|
-
"spec/to_api_spec.rb"
|
37
|
-
]
|
38
|
-
|
39
|
-
if s.respond_to? :specification_version then
|
40
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
41
|
-
s.specification_version = 3
|
42
|
-
|
43
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
44
|
-
s.add_runtime_dependency(%q<rake>, [">= 0"])
|
45
|
-
s.add_runtime_dependency(%q<activerecord>, [">= 2.3", "< 3"])
|
46
|
-
s.add_runtime_dependency(%q<jeweler>, [">= 0"])
|
47
|
-
s.add_development_dependency(%q<rspec>, [">= 0"])
|
48
|
-
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
49
|
-
s.add_runtime_dependency(%q<activerecord>, [">= 0"])
|
50
|
-
else
|
51
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
52
|
-
s.add_dependency(%q<activerecord>, [">= 2.3", "< 3"])
|
53
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
54
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
55
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
56
|
-
s.add_dependency(%q<activerecord>, [">= 0"])
|
57
|
-
end
|
58
|
-
else
|
59
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
60
|
-
s.add_dependency(%q<activerecord>, [">= 2.3", "< 3"])
|
61
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
62
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
63
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
64
|
-
s.add_dependency(%q<activerecord>, [">= 0"])
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|