diff options
Diffstat (limited to 'lib/models/languages.js')
-rw-r--r-- | lib/models/languages.js | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/lib/models/languages.js b/lib/models/languages.js new file mode 100644 index 0000000..1e58d88 --- /dev/null +++ b/lib/models/languages.js @@ -0,0 +1,71 @@ +var Immutable = require('immutable'); + +var File = require('./file'); +var Language = require('./language'); + +var Languages = Immutable.Record({ + file: File(), + list: Immutable.OrderedMap() +}); + +Languages.prototype.getFile = function() { + return this.get('file'); +}; + +Languages.prototype.getList = function() { + return this.get('list'); +}; + +/** + Get default languages + + @return {Language} +*/ +Languages.prototype.getDefaultLanguage = function() { + return this.getList().first(); +}; + +/** + Get a language by its ID + + @param {String} lang + @return {Language} +*/ +Languages.prototype.getLanguage = function(lang) { + return this.getList().get(lang); +}; + +/** + Return count of langs + + @return {Number} +*/ +Languages.prototype.getCount = function() { + return this.getList().size; +}; + +/** + Create a languages list from a JS object + + @param {File} + @param {Array} + @return {Language} +*/ +Languages.createFromList = function(file, langs) { + var list = Immutable.OrderedMap(); + + langs.forEach(function(lang) { + lang = Language({ + title: lang.title, + path: lang.path + }); + list = list.set(lang.getID(), lang); + }); + + return Languages({ + file: file, + list: list + }); +}; + +module.exports = Languages; |