feat(monospace): add settings schema + safe defaults

getDefaults(), getActiveMonoFont(), isLigaturesEnabled() with TDD.
This commit is contained in:
2026-08-23 19:31:32 +05:30
parent 5178d91187
commit 57bbf91245
2 changed files with 43 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
'use strict';
const FAMILY_BY_KEY = {
'jetbrains-mono': 'JetBrains Mono',
'fira-code': 'Fira Code',
};
function getDefaults() {
return Object.freeze({ monospaceFont: 'jetbrains-mono', monospaceLigatures: false });
}
function getActiveMonoFont(settings) {
const key = settings && settings.monospaceFont;
return FAMILY_BY_KEY[key] || 'JetBrains Mono';
}
function isLigaturesEnabled(settings) {
return Boolean(settings && settings.monospaceLigatures === true);
}
module.exports = { getDefaults, getActiveMonoFont, isLigaturesEnabled, FAMILY_BY_KEY };
+22
View File
@@ -0,0 +1,22 @@
const { getDefaults, getActiveMonoFont, isLigaturesEnabled } = require('../src/main/settings/monospaceSettings');
describe('monospaceSettings', () => {
test('getDefaults returns sane defaults', () => {
const d = getDefaults();
expect(d.monospaceFont).toBe('jetbrains-mono');
expect(d.monospaceLigatures).toBe(false);
});
test('getActiveMonoFont returns the active family', () => {
expect(getActiveMonoFont({ monospaceFont: 'fira-code' })).toBe('Fira Code');
expect(getActiveMonoFont({})).toBe('JetBrains Mono');
expect(getActiveMonoFont({ monospaceFont: 'bogus' })).toBe('JetBrains Mono');
});
test('isLigaturesEnabled reads boolean strictly', () => {
expect(isLigaturesEnabled({ monospaceLigatures: true })).toBe(true);
expect(isLigaturesEnabled({ monospaceLigatures: false })).toBe(false);
expect(isLigaturesEnabled({})).toBe(false);
expect(isLigaturesEnabled({ monospaceLigatures: 'yes' })).toBe(false);
});
});