|
| 1 | +ObjC.import('AppKit'); |
| 2 | + |
| 3 | +var app = Application.currentApplication() |
| 4 | +app.includeStandardAdditions = true |
| 5 | + |
| 6 | +var input = app.chooseFile({ofType: ["txt", "json"]}) |
| 7 | +var name = input.toString().match(/.+\/([^.]+)/)[1] |
| 8 | +var output = app.chooseFileName({ defaultName: name + '.clr' }) |
| 9 | +var contents = app.read(input) |
| 10 | +var nsclrlist = $.NSColorList.alloc.initWithName(name); |
| 11 | +var colors = [] |
| 12 | + |
| 13 | +if (contents[0] == "{") { |
| 14 | + colors = JSON.parse(contents) |
| 15 | + colors = Object.keys(colors).map(s => ({ name: s, color: colors[s] })) |
| 16 | +} else { |
| 17 | + colors = contents.split("\n") |
| 18 | + colors = colors.map(str => str.match(/(\S+)\s+(.+)/)) |
| 19 | + colors = colors.filter(match => match) |
| 20 | + colors = colors.map(match => ({ name: match[2], color: match[1] })) |
| 21 | +} |
| 22 | +colors.forEach(o => { |
| 23 | + if (o.color.startsWith("#")) |
| 24 | + o.color = o.color.substring(1) |
| 25 | + if (o.color.length < 6) |
| 26 | + o.color = o.color.split('').reduce((str, hex) => str + hex + hex, '') |
| 27 | + o.color += 'ff' |
| 28 | + ; [o.r, o.g, o.b, o.a] = o.color.match(/../g).map(hex => parseInt(hex, 16) / 255) |
| 29 | +}) |
| 30 | + |
| 31 | +colors.forEach((o, i) => o.nscolor = $.NSColor.colorWithCalibratedRedGreenBlueAlpha(o.r, o.g, o.b, o.a)) |
| 32 | +colors.forEach((o, i) => nsclrlist.insertColorKeyAtIndex(o.nscolor, o.name, i)) |
| 33 | +nsclrlist.writeToFile(output.toString()); |
0 commit comments