Sha256: 0ae246deae3ce13a427dfd40b1976bb03d3104959637794c5acb9bf3ac96445d

Contents?: true

Size: 1.71 KB

Versions: 6

Compression:

Stored size: 1.71 KB

Contents

// Backbone Factory JS
// https://github.com/SupportBee/Backbone-Factory

(function(){
  window.BackboneFactory = {

    factories: {},
    sequences: {},

    define: function(factory_name, klass, defaults){

      // Check for arguments' sanity
      if(factory_name.match(/[^\w-_]+/)){
        throw "Factory name should not contain spaces or other funky characters";
      }

      if(defaults === undefined) defaults = function(){return {}};

      // The object creator
      this.factories[factory_name] = function(options){
        if(options === undefined) options = function(){return {}};
        arguments =  _.extend({}, {id: BackboneFactory.next("_" + factory_name + "_id")}, defaults.call(), options.call());
        return new klass(arguments);
      };

      // Lets define a sequence for id
      BackboneFactory.define_sequence("_"+ factory_name +"_id", function(n){
        return n
      });
    },

    create: function(factory_name, options){
      if(this.factories[factory_name] === undefined){
        throw "Factory with name " + factory_name + " does not exist";
      }
      return this.factories[factory_name].apply(null, [options]);
    },

    define_sequence: function(sequence_name, callback){
      this.sequences[sequence_name] = {}
      this.sequences[sequence_name]['counter'] = 0;
      this.sequences[sequence_name]['callback'] = callback;
    },

    next: function(sequence_name){
      if(this.sequences[sequence_name] === undefined){
        throw "Sequence with name " + sequence_name + " does not exist";
      }
      this.sequences[sequence_name]['counter'] += 1;
      return this.sequences[sequence_name]['callback'].apply(null, [this.sequences[sequence_name]['counter']]); //= callback;
    }
  }
})();

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rails-backbone-generator-0.1.9 lib/generators/backbone_generator/setup_generator/templates/vendor/assets/javascripts/testing/backbone-factory.js
rails-backbone-generator-0.1.8 lib/generators/backbone_generator/setup_generator/templates/vendor/assets/javascripts/testing/backbone-factory.js
rails-backbone-generator-0.1.7 lib/generators/backbone_generator/setup_generator/templates/vendor/assets/javascripts/testing/backbone-factory.js
rails-backbone-generator-0.1.6 lib/generators/backbone_generator/setup_generator/templates/vendor/assets/javascripts/testing/backbone-factory.js
rails-backbone-generator-0.1.5 lib/generators/backbone_generator/setup_generator/templates/vendor/assets/javascripts/testing/backbone-factory.js
rails-backbone-generator-0.1.4 lib/generators/backbone_generator/setup_generator/templates/vendor/assets/javascripts/testing/backbone-factory.js