generator-bat
Version:
BAT, the Backbone Application Template; a Yeoman generator collection created by marviq
95 lines (75 loc) • 2.53 kB
text/coffeescript
'use strict'
( ( factory ) ->
if typeof exports is 'object'
module.exports = factory(
require( 'backbone' )
)
else if typeof define is 'function' and define.amd
define( [
'backbone'
], factory )
return
)((
Backbone
) ->
###*
# @author David Bouman
# @module App
# @submodule Models
###
###*
# Model for the `{{#crossLink 'ApiServicesCollection'}}{{/crossLink}}`.
#
# @class ApiServiceModel
# @extends Backbone.Model
# @constructor
###
class ApiServiceModel extends Backbone.Model
###*
# List of [valid attribute names](#attrs).
#
# @property schema
# @type Array[String]
# @final
###
###*
# The `ApiServiceModel`'s unique identifier.
#
# @attribute id
# @type String
###
###*
# A url path relative to the API's base `url` for accessing this service's API endpoint.
#
# @attribute urlPath
# @type String
###
schema: [
'id'
'urlPath'
]
###*
# This method caters for `Backbone.Model.url()` to not break on `ApiServiceModel` values. It is, in short, a hack.
#
# Not many libraries do ensure to stringify values before invoking `String` prototype methods on them and `Backbone.Model.url()` is no exception.
#
# See:
# [`String.prototype.replace`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#wiki-document-head)
# for a complete description of this method's signature.
#
# @method replace
###
replace: () ->
return @toString().replace( arguments... )
###*
# Creates a complete service API endpoint url from the API's base `url` and the model's `urlPath`.
#
# Most time you won't need to call this method explicitly; simply provide this model wherever you have a need for this value.
#
# @method toString
#
# @return {String} The complete url of the service's API endpoint.
###
toString: () ->
return "#{ @collection.url }/#{ @attributes.urlPath }"
)