Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 17 additions & 13 deletions src/models/Language.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,10 +4,15 @@ 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;

/**
Expand All@@ -18,20 +23,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);
}

}
Expand Down
5 changes: 5 additions & 0 deletions src/models/Language.test.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -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`;
Expand Down