diff options
Diffstat (limited to 'packages/gitbook-core/src/models')
-rw-r--r-- | packages/gitbook-core/src/models/File.js | 4 | ||||
-rw-r--r-- | packages/gitbook-core/src/models/Language.js | 12 | ||||
-rw-r--r-- | packages/gitbook-core/src/models/Languages.js | 40 |
3 files changed, 54 insertions, 2 deletions
diff --git a/packages/gitbook-core/src/models/File.js b/packages/gitbook-core/src/models/File.js index 74db11e..c5ac654 100644 --- a/packages/gitbook-core/src/models/File.js +++ b/packages/gitbook-core/src/models/File.js @@ -35,7 +35,7 @@ class File extends Record(DEFAULTS) { /** * Return true if file is an instance of File * @param {Mixed} file - * @return {Boolean} + * @return {Boolean} isFile */ static is(file) { return (file instanceof File); @@ -44,7 +44,7 @@ class File extends Record(DEFAULTS) { /** * Create a file instance * @param {Mixed|File} file - * @return {File} + * @return {File} file */ static create(file) { return File.is(file) ? diff --git a/packages/gitbook-core/src/models/Language.js b/packages/gitbook-core/src/models/Language.js new file mode 100644 index 0000000..20fc237 --- /dev/null +++ b/packages/gitbook-core/src/models/Language.js @@ -0,0 +1,12 @@ +const { Record } = require('immutable'); + +const DEFAULTS = { + id: null, + title: null +}; + +class Language extends Record(DEFAULTS) { + +} + +module.exports = Language; diff --git a/packages/gitbook-core/src/models/Languages.js b/packages/gitbook-core/src/models/Languages.js new file mode 100644 index 0000000..b698d14 --- /dev/null +++ b/packages/gitbook-core/src/models/Languages.js @@ -0,0 +1,40 @@ +const { Record, List } = require('immutable'); +const Language = require('./Language'); +const File = require('./File'); + +const DEFAULTS = { + current: String(), + file: new File(), + list: List() +}; + +class Languages extends Record(DEFAULTS) { + constructor(spec = {}) { + super({ + ...spec, + file: File.create(spec.file), + list: List(spec.list).map(lang => new Language(lang)) + }); + } + + /** + * Return true if file is an instance of Languages + * @param {Mixed} langs + * @return {Boolean} + */ + static is(langs) { + return (langs instanceof Languages); + } + + /** + * Create a Languages instance + * @param {Mixed|Languages} langs + * @return {Languages} + */ + static create(langs) { + return Languages.is(langs) ? + langs : new Languages(langs); + } +} + +module.exports = Languages; |