-
Notifications
You must be signed in to change notification settings - Fork 0
/
extension.js
34 lines (32 loc) · 1.44 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
let vscode = require('vscode');
let fs = require("fs");
function activate(context) {
let codeReplace = vscode.commands.registerCommand("extension.codeReplace", function () {
let editor = vscode.window.activeTextEditor;
if (!editor) return;
let ename = editor.document.fileName.substring(editor.document.fileName.lastIndexOf("."), editor.document.fileName.length);
let res = editor.document.getText().match(/\{\{(((?!}}).)+)\}\}/g); //["{{key}}","{{key1}}"]
let errorArr = [];
editor.edit(function (builder) {
res.map(function (value) {
let text = editor.document.getText();
let prop = value.replace(/[{}\s]/g, ""); //key
let start = editor.document.positionAt(text.indexOf(value));
let end = editor.document.positionAt(text.indexOf(value) + value.length);
let range = new vscode.Range(start, end);
try {
let filestr = fs.readFileSync(`${vscode.workspace.rootPath}/ctr-tmps/${prop}${ename}`);
builder.replace(range, filestr.toString());
} catch (error) {
errorArr.push(prop);
}
})
}).then(function (res) {
console.log(res, errorArr);
});
})
context.subscriptions.push(codeReplace);
}
exports.activate = activate;
function deactivate() {}
exports.deactivate = deactivate;