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