add parse-color to css extension

This commit is contained in:
Joao Moreno 2017-07-27 00:03:54 +02:00
parent 21a81d08b8
commit 3cda472710
4 changed files with 46 additions and 4 deletions

View file

@ -5,6 +5,7 @@
'use strict';
import * as path from 'path';
import * as parse from 'parse-color';
import { languages, window, commands, workspace, ExtensionContext, DocumentColorProvider, Color, CancellationToken, TextDocument, ColorInfo } from 'vscode';
import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, RequestType, Range, TextEdit } from 'vscode-languageclient';
@ -24,14 +25,23 @@ class ColorProvider implements DocumentColorProvider {
async provideDocumentColors(document: TextDocument, token: CancellationToken): Promise<ColorInfo[]> {
const ranges = await this.client.sendRequest(ColorSymbolRequest.type, document.uri.toString());
return ranges.map(r => {
return ranges.reduce((result, r) => {
const range = this.client.protocol2CodeConverter.asRange(r);
const color = Color.fromHex('#000000');
const value = document.getText(range);
const parsedColor = parse(value);
if (!parsedColor || !parsedColor.rgba) {
return result;
}
const [red, green, blue, alpha] = parsedColor.rgba;
const color = new Color(red, green, blue, alpha);
const format = '#{red:X}{green:X}{blue:X}';
const availableFormats = [format];
return new ColorInfo(range, color, format, availableFormats);
});
result.push(new ColorInfo(range, color, format, availableFormats));
return result;
}, []);
}
}

View file

@ -0,0 +1,21 @@
declare module "parse-color" {
interface Color {
rgb: [number, number, number],
hsl: [number, number, number],
hsv: [number, number, number],
cmyk: [number, number, number, number],
keyword: string,
hex: string,
rgba: [number, number, number, number],
hsla: [number, number, number, number],
hsva: [number, number, number, number],
cmyka: [number, number, number, number, number]
}
function parse(value: string): Color;
module parse { }
export = parse;
}

View file

@ -2,6 +2,16 @@
"name": "css",
"version": "0.1.0",
"dependencies": {
"color-convert": {
"version": "0.5.3",
"from": "color-convert@>=0.5.0 <0.6.0",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz"
},
"parse-color": {
"version": "1.0.0",
"from": "parse-color@latest",
"resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz"
},
"vscode-jsonrpc": {
"version": "3.2.0",
"from": "vscode-jsonrpc@>=3.2.0 <4.0.0",

View file

@ -673,6 +673,7 @@
}
},
"dependencies": {
"parse-color": "^1.0.0",
"vscode-languageclient": "^3.2.0",
"vscode-nls": "^2.0.2"
},