UNPKG

foxx_generator

Version:

Generate Foxx APIs using Statecharts and Domain Driven Design

63 lines (50 loc) 1.67 kB
(function () { 'use strict'; var _ = require('underscore'), defaultsForTransitionOptions, parseOptions, Transition = require('./transition').Transition, BaseContext = require('./context').Context, Documentation = require('./documentation').Documentation; defaultsForTransitionOptions = { type: 'follow', to: 'one', condition: function () { return true; } }; parseOptions = function (name, opts, applicationContext) { var options, documentation = new Documentation(applicationContext); opts = opts || {}; options = _.defaults(opts, defaultsForTransitionOptions); options.precondition = options.precondition || options.condition; return _.extend(options, { collectionBaseName: options.as || name, relationName: name, cardinality: options.to, summary: documentation.summary, notes: documentation.notes }); }; var TransitionFactory = function (applicationContext, graph, controller, strategies) { this.applicationContext = applicationContext; this.graph = graph; this.controller = controller; var Context = BaseContext.extend({ strategies: strategies }); this.Transition = Transition.extend({ Context: Context }); }; _.extend(TransitionFactory.prototype, { create: function (name, opts) { var Transition, options = parseOptions(name, opts, this.applicationContext), transition; Transition = this.Transition.extend(options); transition = new Transition(this.graph, this.controller); return transition; } }); exports.TransitionFactory = TransitionFactory; }());