Skip to content

Commit

Permalink
Handle adding attributes/values/properties/verbs better.
Browse files Browse the repository at this point in the history
  • Loading branch information
toddsundsted committed Mar 27, 2012
1 parent ec1db3f commit 73d00ac
Show file tree
Hide file tree
Showing 4 changed files with 223 additions and 134 deletions.
2 changes: 1 addition & 1 deletion files/public/SpecRunner.html
Expand Up @@ -18,7 +18,7 @@
<script type="text/javascript" src="js/jquery.ui.core-1.8.18.min.js"></script> <script type="text/javascript" src="js/jquery.ui.core-1.8.18.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.widget-1.8.18.min.js"></script> <script type="text/javascript" src="js/jquery.ui.widget-1.8.18.min.js"></script>
<script type="text/javascript" src="js/underscore-1.3.1.min.js"></script> <script type="text/javascript" src="js/underscore-1.3.1.min.js"></script>
<script type="text/javascript" src="js/backbone-0.9.1.min.js"></script> <script type="text/javascript" src="js/backbone-0.9.2.min.js"></script>
<script type="text/javascript" src="js/moo-0.0.1.min.js"></script> <script type="text/javascript" src="js/moo-0.0.1.min.js"></script>


<script type="text/javascript"> <script type="text/javascript">
Expand Down
36 changes: 32 additions & 4 deletions files/public/js/moo-0.0.1.js
Expand Up @@ -226,19 +226,47 @@ var Moo = {};
} }
}); });


Moo.Attributes = Backbone.Collection.extend({ Moo.Collection = Backbone.Collection.extend({

add: function(models, opts) {
models = _.isArray(models) ? models.slice() : [models];

var mapped = this instanceof Moo.Attributes || this instanceof Moo.Values;

models = _.chain(models).map(function (model) {
if (!('id' in model))
if (mapped) {
/* transform attributes and values from {foo: {...}}} to {id: foo, ...} */
return _.map(model, function(v, k) {
v.id = k;
return v;
});
}
else {
/* add an id to properties and verbs */
model.id = models.length;
return model;
}
return model;
}).flatten().value();

return Backbone.Collection.prototype.add.call(this, models, opts);
}
});

Moo.Attributes = Moo.Collection.extend({
model: Moo.Attribute model: Moo.Attribute
}); });


Moo.Values = Backbone.Collection.extend({ Moo.Values = Moo.Collection.extend({
model: Moo.Value model: Moo.Value
}); });


Moo.Properties = Backbone.Collection.extend({ Moo.Properties = Moo.Collection.extend({
model: Moo.Property model: Moo.Property
}); });


Moo.Verbs = Backbone.Collection.extend({ Moo.Verbs = Moo.Collection.extend({
model: Moo.Verb model: Moo.Verb
}); });


Expand Down

0 comments on commit 73d00ac

Please sign in to comment.