backbone-relational-hal-rails 0.1.1 → 0.1.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
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
Y2Y4OTA2MmEwMjUzMzA3M2UzMTIwMDg0MmU5ZDQ4MmNhNTNlY2E2Mw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MGM1MTQ5YjRiYzk5MDU4ODhmMzQzNzY1MjUwZTAzZGM5ZTFmMGY0ZA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZTJkMjc4MDM0N2VjN2E1ZTE2MTkyYzEzZWRlNGI1ZGJiOGU5MjFiZjJlYmJm
|
10
|
+
MjQ0ZjE1NTRjMDVjODAyZmYzOGVkN2E3MWQxMGU2NDNkNDM5YTYyNDkxNTU0
|
11
|
+
OGYyZTMzMGE2YWNlZTM2MzhmM2VkNTVkYmU4YWUxODU3MDY0ZjE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDA4ZWE3ZTFhZTBiYjk5M2IwMTA2YmFlYTViY2RhYjdiNDY2YWEwMGQ2OGZj
|
14
|
+
NmZhNzZhMzU2ODVlYzA2MzA0ODY2ZGIxZDFlYTZiY2IyZjljNzUxZDI2ZTBh
|
15
|
+
NWJjODExZDZiNGY3OTg0ZWJjZjJiZGEwNDFkZDI0ZmE1Y2IxYmY=
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* backbone-relational-hal v0.1.
|
2
|
+
* backbone-relational-hal v0.1.2
|
3
3
|
* Copyright (c) 2014 Simon Oulevay
|
4
4
|
* Distributed under MIT license
|
5
5
|
* https://github.com/AlphaHydrae/backbone-relational-hal
|
@@ -24,6 +24,11 @@ var HalLink = RelationalModel.extend({
|
|
24
24
|
return href;
|
25
25
|
},
|
26
26
|
|
27
|
+
tag: function(contents, options) {
|
28
|
+
options = options || {};
|
29
|
+
return $('<a />').attr('href', this.href(options.href))[options.html ? 'html' : 'text'](contents);
|
30
|
+
},
|
31
|
+
|
27
32
|
model: function(options) {
|
28
33
|
options = _.extend({}, options);
|
29
34
|
|
@@ -70,17 +75,53 @@ var HalResourceLinks = RelationalModel.extend({
|
|
70
75
|
|
71
76
|
var HalModelEmbedded = RelationalModel.extend({
|
72
77
|
|
78
|
+
toJSON: function() {
|
79
|
+
return _.omit(RelationalModel.prototype.toJSON.apply(this, arguments), 'id');
|
80
|
+
},
|
81
|
+
|
73
82
|
embedded: function(rel) {
|
74
|
-
return this.get(rel);
|
83
|
+
return this.get(rel) || null;
|
75
84
|
}
|
76
85
|
});
|
77
86
|
|
87
|
+
var n = 1;
|
88
|
+
|
78
89
|
var HalResource = Backbone.RelationalHalResource = RelationalModel.extend({
|
79
90
|
|
91
|
+
initialize: function(attrs, options) {
|
92
|
+
|
93
|
+
this.halEmbeddedId = n++;
|
94
|
+
|
95
|
+
if (this.has('_embedded') && !this.get('_embedded').id) {
|
96
|
+
this.get('_embedded').set({ id: this.halEmbeddedId }, { silent: true });
|
97
|
+
}
|
98
|
+
|
99
|
+
_.extend(this, _.pick(options || {}, 'halUrlTemplate'));
|
100
|
+
|
101
|
+
this.initializeResource.apply(this, arguments);
|
102
|
+
},
|
103
|
+
|
104
|
+
initializeResource: function() {},
|
105
|
+
|
106
|
+
parse: function(response) {
|
107
|
+
|
108
|
+
if (response._embedded) {
|
109
|
+
response._embedded.id = this.halEmbeddedId;
|
110
|
+
}
|
111
|
+
|
112
|
+
return response;
|
113
|
+
},
|
114
|
+
|
80
115
|
url: function() {
|
81
116
|
|
82
117
|
if (this.hasLink('self')) {
|
83
|
-
|
118
|
+
|
119
|
+
var options = {};
|
120
|
+
if (this.halUrlTemplate) {
|
121
|
+
options.template = _.result(this, 'halUrlTemplate');
|
122
|
+
}
|
123
|
+
|
124
|
+
return this.link('self').href(options);
|
84
125
|
} else if (this._cachedHalUrl) {
|
85
126
|
return this._cachedHalUrl;
|
86
127
|
}
|
@@ -161,18 +202,34 @@ var HalResource = Backbone.RelationalHalResource = RelationalModel.extend({
|
|
161
202
|
|
162
203
|
var relationalHalResourceExtend = HalResource.extend;
|
163
204
|
|
164
|
-
|
205
|
+
var customExtend = function(options) {
|
165
206
|
|
166
207
|
options = _.defaults({}, options, {
|
167
|
-
relations: []
|
168
|
-
halEmbedded: []
|
208
|
+
relations: []
|
169
209
|
});
|
170
210
|
|
171
|
-
var
|
211
|
+
var embeddedRelations;
|
212
|
+
if (_.isArray(options.halEmbedded)) {
|
213
|
+
embeddedRelations = _.map(options.halEmbedded, function(rel) {
|
214
|
+
return _.clone(rel);
|
215
|
+
});
|
216
|
+
} else if (_.isObject(options.halEmbedded)) {
|
217
|
+
embeddedRelations = _.reduce(options.halEmbedded, function(memo, rel, key) {
|
218
|
+
memo.push(_.extend({}, rel, { key: key }));
|
219
|
+
return memo;
|
220
|
+
}, []);
|
221
|
+
} else if (typeof(options.halEmbedded) != 'undefined') {
|
222
|
+
throw new Error('halEmbedded must be an array or object');
|
223
|
+
} else {
|
224
|
+
|
225
|
+
var previousEmbedded = _.findWhere(this.prototype.relations, { key: '_embedded' });
|
226
|
+
if (previousEmbedded && previousEmbedded.relatedModel) {
|
227
|
+
embeddedRelations = (previousEmbedded.relatedModel.prototype.relations || []).slice();
|
228
|
+
}
|
229
|
+
}
|
172
230
|
|
173
|
-
|
174
|
-
|
175
|
-
})
|
231
|
+
var EmbeddedModel = HalModelEmbedded.extend({
|
232
|
+
relations: embeddedRelations
|
176
233
|
});
|
177
234
|
|
178
235
|
options.relations.push({
|
@@ -186,13 +243,18 @@ HalResource.extend = function(options) {
|
|
186
243
|
options.relations.push({
|
187
244
|
type: Backbone.HasOne,
|
188
245
|
key: '_embedded',
|
189
|
-
relatedModel:
|
246
|
+
relatedModel: EmbeddedModel,
|
190
247
|
includeInJSON: false
|
191
248
|
});
|
192
249
|
|
193
|
-
|
250
|
+
var res = relationalHalResourceExtend.call(this, options);
|
251
|
+
res.extend = customExtend;
|
252
|
+
|
253
|
+
return res;
|
194
254
|
};
|
195
255
|
|
256
|
+
HalResource.extend = customExtend;
|
257
|
+
|
196
258
|
Backbone.originalSync = Backbone.sync;
|
197
259
|
|
198
260
|
Backbone.sync = function(method, model, options) {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backbone-relational-hal-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Oulevay
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
64
64
|
version: '0'
|
65
65
|
requirements: []
|
66
66
|
rubyforge_project:
|
67
|
-
rubygems_version: 2.2.
|
67
|
+
rubygems_version: 2.2.1
|
68
68
|
signing_key:
|
69
69
|
specification_version: 4
|
70
70
|
summary: Backbone-relational-hal assets for Ruby on Rails.
|