-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathextension.js
66 lines (63 loc) · 1.79 KB
/
extension.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
const vscode = require('vscode');
const clipboardy = require('clipboardy');
/**
* @param {vscode.ExtensionContext} context
*/
function activate(context) {
console.log(
'Congratulations, your extension "react-css-copypaste" is now active!'
);
let disposable = vscode.commands.registerCommand(
'react-css-copypaste.pasteCSS',
function () {
const clipboard = clipboardy.readSync();
let paste = '';
if (clipboard) {
const rows = clipboard.trim().split('\n');
rows.forEach((row) => {
const _row = row.trim().split(':');
let rules = _row[0].trim().split('-');
let rule = rules.shift();
for (let i = 0; i < rules.length; i++) {
rule +=
rules[i][0].toUpperCase() +
rules[i].substring(1, rules[i].length).toLowerCase();
}
let value = _row[1].trim().replace(';', '');
paste += `${rule}: '${value}',\n`;
});
clipboardy.writeSync(paste);
vscode.commands.executeCommand('editor.action.clipboardPasteAction'); // this should be formated paste
// clipboardy.writeSync(clipboard);
}
}
);
context.subscriptions.push(disposable);
}
function convertCss(css = '') {
const converted = css
.trim()
.split('\n')
.map((item) => item.trim().split(':'))
.reduce(
(acc, [key, value]) => ({
...acc,
[key
.split('-')
.map((item, idx) =>
idx === 0
? item
: item.slice(0, 1).toUpperCase() + item.slice(1, item.length)
)
.join('')]: value.trim(),
}),
{}
);
return converted;
}
// this method is called when your extension is deactivated
function deactivate() {}
module.exports = {
activate,
deactivate,
};