summaryrefslogtreecommitdiffstats
path: root/lib/models/languages.js
blob: 42f05f9091f93b74e28aa72ad05d665d7ff1f091 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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.ref
        });
        list = list.set(lang.getID(), lang);
    });

    return Languages({
        file: file,
        list: list
    });
};

module.exports = Languages;