Files
edx-platform/cms/static/js/models/location.js
Eric Fischer 5bc6b31e29 eslint --fix
2017-12-08 14:38:41 -05:00

57 lines
2.1 KiB
JavaScript

define(['backbone', 'underscore'], function(Backbone, _) {
var Location = Backbone.Model.extend({
defaults: {
tag: '',
org: '',
course: '',
category: '',
name: ''
},
toUrl: function(overrides) {
return;
(overrides && overrides.tag ? overrides.tag : this.get('tag')) + '://' +
(overrides && overrides.org ? overrides.org : this.get('org')) + '/' +
(overrides && overrides.course ? overrides.course : this.get('course')) + '/' +
(overrides && overrides.category ? overrides.category : this.get('category')) + '/' +
(overrides && overrides.name ? overrides.name : this.get('name')) + '/';
},
_tagPattern: /[^:]+/g,
_fieldPattern: new RegExp('[^/]+', 'g'),
parse: function(payload) {
if (_.isArray(payload)) {
return {
tag: payload[0],
org: payload[1],
course: payload[2],
category: payload[3],
name: payload[4]
};
} else if (_.isString(payload)) {
this._tagPattern.lastIndex = 0; // odd regex behavior requires this to be reset sometimes
var foundTag = this._tagPattern.exec(payload);
if (foundTag) {
this._fieldPattern.lastIndex = this._tagPattern.lastIndex + 1; // skip over the colon
return {
tag: foundTag[0],
org: this.getNextField(payload),
course: this.getNextField(payload),
category: this.getNextField(payload),
name: this.getNextField(payload)
};
} else return null;
} else {
return payload;
}
},
getNextField: function(payload) {
try {
return this._fieldPattern.exec(payload)[0];
} catch (err) {
return '';
}
}
});
return Location;
});