iterm-theme-parser
Version:
Parser for iTerm2 itermcolors files to work with HyperTerm configuration
61 lines (48 loc) • 1.34 kB
JavaScript
const fs = require('fs');
const plist = require('plist');
const _ = require('lodash');
// Helper functions
function itermColorToColor(itermColor) {
const color = {};
color.a = itermColor['Alpha Component'];
color.r = itermColor['Red Component'];
color.g = itermColor['Green Component'];
color.b = itermColor['Blue Component'];
return color;
}
// Module object
const itermColors = {};
itermColors.parse = function parse(str) {
const paletteColorNames = [
'black',
'red',
'green',
'yellow',
'blue',
'magenta',
'cyan',
'white',
'lightBlack',
'lightRed',
'lightGreen',
'lightYellow',
'lightBlue',
'lightMagenta',
'lightCyan',
'lightWhite',
];
const htColors = {};
const plistColors = plist.parse(str);
const plistPaletteColors = [];
for (let i = 0; i < 16; i++) {
plistPaletteColors.push(itermColorToColor(plistColors[`Ansi ${i} Color`]));
}
htColors.foregroundColor = itermColorToColor(plistColors['Foreground Color']);
htColors.backgroundColor = itermColorToColor(plistColors['Background Color']);
htColors.colors = _.zipObject(paletteColorNames, plistPaletteColors);
return htColors;
};
itermColors.parseFile = function parseFile(filePath) {
return this.parse(fs.readFileSync(filePath, 'utf8'));
};
module.exports = itermColors;