From 7bbc8bf46e161c49c458e7915b64db3975273be5 Mon Sep 17 00:00:00 2001 From: Danny Hieber Date: Mon, 2 Mar 2020 19:15:07 -0600 Subject: [PATCH 1/3] write failing test --- src/models/Language.test.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/models/Language.test.js b/src/models/Language.test.js index 1f2103b..f267086 100644 --- a/src/models/Language.test.js +++ b/src/models/Language.test.js @@ -22,6 +22,11 @@ describe(`Language`, () => { expect(lang.name).toBeInstanceOf(MultiLangString); }); + it(`enumerable`, () => { + const lang = new Language({ name: 'Chitimacha' }); + expect(Object.keys(lang)).toContain(`name`); + }); + it(`Success: String`, () => { const name = `Chitimacha`; From 1ed82d05898a84369bfe606662779dfe9af42326 Mon Sep 17 00:00:00 2001 From: Danny Hieber Date: Mon, 2 Mar 2020 19:24:52 -0600 Subject: [PATCH 2/3] passing tests --- src/models/Language.js | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/models/Language.js b/src/models/Language.js index 682deb3..c66d465 100644 --- a/src/models/Language.js +++ b/src/models/Language.js @@ -8,6 +8,10 @@ import MultiLangString from './MultiLangString.js'; */ class Language extends Model { + /** + * The name of this language, as a [MultiLangString]{@link models.MultiLangString} + * @type {Map} + */ #name; /** @@ -18,20 +22,19 @@ class Language extends Model { super(data); - this.name = new MultiLangString(data.name); - - } + this.#name = new MultiLangString(data.name); - /** - * The name of this language, as a [MultiLangString]{@link models.MultiLangString} - * @type {Map} - */ - get name() { - return this.#name; - } + Object.defineProperty(this, `name`, { + configurable: true, + enumerable: true, + get() { + return this.#name; + }, + set(val) { + this.#name = new MultiLangString(val); + }, + }); - set name(val) { - this.#name = new MultiLangString(val); } } From da09944d891f7b0d8ed9b782245f436f8e6b8f25 Mon Sep 17 00:00:00 2001 From: Danny Hieber Date: Mon, 2 Mar 2020 19:29:54 -0600 Subject: [PATCH 3/3] update docs --- src/models/Language.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/models/Language.js b/src/models/Language.js index c66d465..047da59 100644 --- a/src/models/Language.js +++ b/src/models/Language.js @@ -4,12 +4,13 @@ import MultiLangString from './MultiLangString.js'; /** * A class representing a language, formatted according to the [DLx Data Format for a language]{@link https://format.digitallinguistics.io/schemas/Language.html} * @memberof models - * @extends Model + * @extends core.Model */ class Language extends Model { /** * The name of this language, as a [MultiLangString]{@link models.MultiLangString} + * @name models.Language#name * @type {Map} */ #name;