UNPKG

iterm-theme-parser

Version:

Parser for iTerm2 itermcolors files to work with HyperTerm configuration

61 lines (48 loc) 1.34 kB
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;