summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-core/src/models
diff options
context:
space:
mode:
authorSamy Pesse <samypesse@gmail.com>2016-10-14 23:05:37 +0200
committerSamy Pesse <samypesse@gmail.com>2016-10-14 23:05:37 +0200
commitf262a7cd89d0d555c27bf3a25bb2054a5af1e7fd (patch)
tree1512b033eee4eb8146096a039c1f547d1e184972 /packages/gitbook-core/src/models
parentb63b0cc50d1714c428ff6c540d4b2773e2c51347 (diff)
downloadgitbook-f262a7cd89d0d555c27bf3a25bb2054a5af1e7fd.zip
gitbook-f262a7cd89d0d555c27bf3a25bb2054a5af1e7fd.tar.gz
gitbook-f262a7cd89d0d555c27bf3a25bb2054a5af1e7fd.tar.bz2
Add languages to client side state, and add "current" to json repr
Diffstat (limited to 'packages/gitbook-core/src/models')
-rw-r--r--packages/gitbook-core/src/models/File.js4
-rw-r--r--packages/gitbook-core/src/models/Language.js12
-rw-r--r--packages/gitbook-core/src/models/Languages.js40
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;