mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-08-23 23:10:17 +05:30
feat(monospace): add settings schema + safe defaults
getDefaults(), getActiveMonoFont(), isLigaturesEnabled() with TDD.
This commit is contained in:
@@ -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 };
|
||||||
@@ -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);
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user