diff --git a/src/extension.ts b/src/extension.ts index 02c5996..e7d5364 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,23 +1,30 @@ import * as vscode from 'vscode'; +function base64(a: string) { + return Buffer.from(a).toString('base64'); // TODO - handle different character encodings +} + +function applyEdit(transform: Function) { + const editor = vscode.window.activeTextEditor; + + if (editor) { + const document = editor.document; + + editor.edit(editBuilder => { + editor.selections.forEach(selection => { + const text = document.getText(selection); + const processed = transform(text); + editBuilder.replace(selection, processed); + }); + }); + } +} + export function activate(context: vscode.ExtensionContext) { console.log('Recombobulator is activated!'); context.subscriptions.push(vscode.commands.registerCommand('recombobulator.base64', () => { - const editor = vscode.window.activeTextEditor; - - if (editor) { - const document = editor.document; - - editor.edit(editBuilder => { - editor.selections.forEach(selection => { - const text = document.getText(selection); - const processed = Buffer.from(text).toString('base64'); // TODO - handle different character encodings - editBuilder.replace(selection, processed); - }); - }); - } - + applyEdit(base64); vscode.window.showInformationMessage('base64-encoded the selection!'); })); }