oat 0.5.1 → 0.5.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -3
- data/lib/oat/adapters/json_api.rb +12 -11
- data/lib/oat/serializer.rb +1 -1
- data/lib/oat/version.rb +1 -1
- data/lib/support/class_attribute.rb +20 -49
- data/oat.gemspec +0 -1
- metadata +3 -24
- data/gemfiles/Gemfile.as-1.4.4 +0 -6
- data/gemfiles/Gemfile.as-2.3.x +0 -6
- data/gemfiles/Gemfile.as-3.0.x +0 -7
- data/gemfiles/Gemfile.as-3.1.x +0 -7
- data/gemfiles/Gemfile.as-3.2.x +0 -7
- data/gemfiles/Gemfile.as-4.0.x +0 -5
- data/gemfiles/Gemfile.as-4.1.x +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e91756d324b28991b10b9b78aad3dac169ff75ef
|
4
|
+
data.tar.gz: 64cb4030b9179913f78b575848f4f80a919f26e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08264457ae25d020fa01992d7854945d1c553d0e6c8fd5be02cb0641a3daa03195f182bf0bf15ee047e571f11dfe1c18637ee9711b16513eee8195daebdc16fa'
|
7
|
+
data.tar.gz: 4e96b9fcf7bf646a289ff692f7fb7e5b70e4c8becb57258b65e24790327c87b0dc3477f8a4961da17bc24c1375a8a3bdd39b55cea513a02126a368637ea6c164
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
-
## [
|
4
|
-
|
5
|
-
[Full Changelog](https://github.com/ismasan/oat/compare/v0.5.0...HEAD)
|
3
|
+
## [v0.5.1](https://github.com/ismasan/oat/tree/v0.5.1) (2017-06-06)
|
4
|
+
[Full Changelog](https://github.com/ismasan/oat/compare/v0.5.0...v0.5.1)
|
6
5
|
|
7
6
|
**Merged pull requests:**
|
8
7
|
|
@@ -1,12 +1,4 @@
|
|
1
1
|
# http://jsonapi.org/format/#url-based-json-api
|
2
|
-
require 'active_support/inflector'
|
3
|
-
require 'active_support/core_ext/string/inflections'
|
4
|
-
unless defined?(String.new.pluralize)
|
5
|
-
class String
|
6
|
-
include ActiveSupport::CoreExtensions::String::Inflections
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
2
|
module Oat
|
11
3
|
module Adapters
|
12
4
|
|
@@ -24,7 +16,7 @@ module Oat
|
|
24
16
|
end
|
25
17
|
|
26
18
|
def type(*types)
|
27
|
-
@root_name = types.first.to_s.
|
19
|
+
@root_name = pluralize(types.first.to_s).to_sym
|
28
20
|
end
|
29
21
|
|
30
22
|
def link(rel, opts = {})
|
@@ -74,7 +66,7 @@ module Oat
|
|
74
66
|
if ent
|
75
67
|
ent_hash = ent.to_hash
|
76
68
|
_name = entity_name(name)
|
77
|
-
link_name = _name.to_s.
|
69
|
+
link_name = pluralize(_name.to_s).to_sym
|
78
70
|
data[:links][_name] = ent_hash[:id]
|
79
71
|
|
80
72
|
entity_hash[link_name] ||= []
|
@@ -87,7 +79,7 @@ module Oat
|
|
87
79
|
def entities(name, collection, serializer_class = nil, context_options = {}, &block)
|
88
80
|
return if collection.nil? || collection.empty?
|
89
81
|
_name = entity_name(name)
|
90
|
-
link_name = _name.to_s.
|
82
|
+
link_name = pluralize(_name.to_s).to_sym
|
91
83
|
data[:links][link_name] = []
|
92
84
|
|
93
85
|
collection.each do |obj|
|
@@ -155,6 +147,15 @@ module Oat
|
|
155
147
|
ent.to_hash.values.first.first if ent
|
156
148
|
end
|
157
149
|
|
150
|
+
PLURAL = /s$/
|
151
|
+
|
152
|
+
def pluralize(str)
|
153
|
+
if str =~ PLURAL
|
154
|
+
str
|
155
|
+
else
|
156
|
+
"#{str}s"
|
157
|
+
end
|
158
|
+
end
|
158
159
|
end
|
159
160
|
end
|
160
161
|
end
|
data/lib/oat/serializer.rb
CHANGED
data/lib/oat/version.rb
CHANGED
@@ -1,66 +1,37 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
rescue LoadError
|
4
|
-
module Kernel
|
5
|
-
# Returns the object's singleton class.
|
6
|
-
def singleton_class
|
7
|
-
class << self
|
8
|
-
self
|
9
|
-
end
|
10
|
-
end unless respond_to?(:singleton_class) # exists in 1.9.2
|
11
|
-
|
12
|
-
# class_eval on an object acts like singleton_class.class_eval.
|
13
|
-
def class_eval(*args, &block)
|
14
|
-
singleton_class.class_eval(*args, &block)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
class Module
|
19
|
-
def remove_possible_method(method)
|
20
|
-
if method_defined?(method) || private_method_defined?(method)
|
21
|
-
remove_method(method)
|
22
|
-
end
|
23
|
-
rescue NameError
|
24
|
-
# If the requested method is defined on a superclass or included module,
|
25
|
-
# method_defined? returns true but remove_method throws a NameError.
|
26
|
-
# Ignore this.
|
27
|
-
end
|
28
|
-
|
29
|
-
def redefine_method(method, &block)
|
30
|
-
remove_possible_method(method)
|
31
|
-
define_method(method, &block)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
class Class
|
1
|
+
module Oat
|
2
|
+
module ClassAttribute
|
36
3
|
def class_attribute(*attrs)
|
37
4
|
attrs.each do |name|
|
38
5
|
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
39
|
-
|
40
|
-
def self.#{name}?() !!#{name} end
|
6
|
+
def self.#{name}() nil end
|
41
7
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
end
|
8
|
+
def self.#{name}=(val)
|
9
|
+
singleton_class.class_eval do
|
10
|
+
define_method(:#{name}) { val }
|
11
|
+
end
|
47
12
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
13
|
+
if singleton_class?
|
14
|
+
class_eval do
|
15
|
+
def #{name}
|
16
|
+
defined?(@#{name}) ? @#{name} : singleton_class.#{name}
|
17
|
+
end
|
53
18
|
end
|
54
19
|
end
|
20
|
+
val
|
55
21
|
end
|
56
|
-
val
|
57
|
-
end
|
58
22
|
RUBY
|
59
23
|
|
60
24
|
end
|
61
25
|
end
|
62
26
|
|
63
27
|
private
|
28
|
+
|
29
|
+
def singleton_class
|
30
|
+
class << self
|
31
|
+
self
|
32
|
+
end
|
33
|
+
end unless respond_to?(:singleton_class) # exists in 1.9.2
|
34
|
+
|
64
35
|
def singleton_class?
|
65
36
|
ancestors.first != self
|
66
37
|
end
|
data/oat.gemspec
CHANGED
@@ -18,7 +18,6 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "activesupport"
|
22
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
23
22
|
spec.add_development_dependency "rake"
|
24
23
|
spec.add_development_dependency "rspec", ">= 3.0"
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ismael Celis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: activesupport
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: bundler
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,13 +83,6 @@ files:
|
|
97
83
|
- LICENSE
|
98
84
|
- README.md
|
99
85
|
- Rakefile
|
100
|
-
- gemfiles/Gemfile.as-1.4.4
|
101
|
-
- gemfiles/Gemfile.as-2.3.x
|
102
|
-
- gemfiles/Gemfile.as-3.0.x
|
103
|
-
- gemfiles/Gemfile.as-3.1.x
|
104
|
-
- gemfiles/Gemfile.as-3.2.x
|
105
|
-
- gemfiles/Gemfile.as-4.0.x
|
106
|
-
- gemfiles/Gemfile.as-4.1.x
|
107
86
|
- lib/oat.rb
|
108
87
|
- lib/oat/adapter.rb
|
109
88
|
- lib/oat/adapters/hal.rb
|
@@ -140,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
119
|
version: '0'
|
141
120
|
requirements: []
|
142
121
|
rubyforge_project:
|
143
|
-
rubygems_version: 2.
|
122
|
+
rubygems_version: 2.6.13
|
144
123
|
signing_key:
|
145
124
|
specification_version: 4
|
146
125
|
summary: Adapters-based serializers with Hypermedia support
|
data/gemfiles/Gemfile.as-1.4.4
DELETED
data/gemfiles/Gemfile.as-2.3.x
DELETED
data/gemfiles/Gemfile.as-3.0.x
DELETED
data/gemfiles/Gemfile.as-3.1.x
DELETED
data/gemfiles/Gemfile.as-3.2.x
DELETED
data/gemfiles/Gemfile.as-4.0.x
DELETED