Skip to content

Commit 45a4e16

Browse files
committed
[feature] - convert selected text
1 parent d4c80e4 commit 45a4e16

File tree

5 files changed

+54
-17
lines changed

5 files changed

+54
-17
lines changed

src/lib/extension.ts

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,10 @@ export function activate(context: vscode.ExtensionContext) {
3030
);
3131
const getFileContentResult = new GetFileContent(vscode, fs);
3232
const { getFileContent } = getFileContentResult;
33-
const fileData = await getFileContent(filePath);
34-
if (fileData) {
33+
const { fileData, selectedTexted } = await getFileContent(
34+
filePath
35+
);
36+
if (fileData && !selectedTexted) {
3537
const translateResult = new Translate(translate, vscode);
3638
const { translation } = translateResult;
3739
const fileDataInUrdu = await translation(fileData);
@@ -59,6 +61,40 @@ export function activate(context: vscode.ExtensionContext) {
5961
'Unable To Translate MD File Data'
6062
);
6163
}
64+
} else if (fileData && selectedTexted) {
65+
const translateResult = new Translate(translate, vscode);
66+
const { translation } = translateResult;
67+
const selectedTextInUrdu = await translation(
68+
selectedTexted
69+
);
70+
if (selectedTextInUrdu) {
71+
const fileDataWithSelectedText = fileData.replace(
72+
selectedTexted,
73+
selectedTextInUrdu
74+
);
75+
const writeFileContentResult = new WriteFileContent(
76+
vscode,
77+
fs
78+
);
79+
const { writeFileContent } = writeFileContentResult;
80+
const writeData = await writeFileContent(
81+
filePath,
82+
fileDataWithSelectedText
83+
);
84+
if (writeData) {
85+
vscode.window.showInformationMessage(
86+
'Successfully Converted MD File To Urdu'
87+
);
88+
} else {
89+
vscode.window.showInformationMessage(
90+
'Unable To Write Urdu Data In MD File'
91+
);
92+
}
93+
} else {
94+
vscode.window.showInformationMessage(
95+
'Unable To Translate MD File Data'
96+
);
97+
}
6298
} else {
6399
vscode.window.showInformationMessage(
64100
'Unable To Get MD File Data'

src/lib/internal/checkFileType.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,16 @@ module.exports = class CheckFileType {
99
}
1010
// this method is called for checking current open file
1111
checkFileType = async () => {
12+
const vscode = this.vscode;
1213
let response;
1314
let filePath;
14-
await Promise.all(
15-
this.vscode.workspace.textDocuments.map(async (file: any) => {
16-
const { languageId, fileName } = file;
17-
if (languageId === 'markdown') {
18-
response = true;
19-
filePath = fileName;
20-
}
21-
})
22-
);
15+
const { _documentData } = vscode.window.activeTextEditor;
16+
const { _languageId, _document } = _documentData;
17+
const { fileName } = _document;
18+
if (_languageId === 'markdown') {
19+
response = true;
20+
filePath = fileName;
21+
}
2322
return { isMDFile: response, filePath };
2423
};
2524
};

src/lib/internal/getFileContent.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@ module.exports = class GetFileContent {
1414
return new Promise(function(resolve: any, reject: any) {
1515
fs.readFile(fileName, async (err: any, data: any) => {
1616
if (!err) {
17+
const selectedTexted = vscode.window.activeTextEditor.document.getText(
18+
vscode.window.activeTextEditor.selection
19+
);
1720
const fileData = await data.toString();
18-
resolve(fileData);
21+
resolve({ fileData, selectedTexted });
1922
} else {
2023
vscode.window.showInformationMessage(
2124
'.md Not Converted to urdu'

test/unit/lib/internal/getWriteFileContent.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ test('getting file content', async () => {
88
const getFileContentResult = new GetFileContent(windowMessage, fs)
99
const { getFileContent } = getFileContentResult
1010
const exampleMdPath = join(__dirname, 'example.md')
11-
const response = await getFileContent(exampleMdPath)
12-
expect(typeof response).toBe('string')
11+
const { fileData } = await getFileContent(exampleMdPath)
12+
expect(typeof fileData).toBe('string')
1313
})
1414

1515
test('writing in file content', async () => {

tsconfig.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,14 @@
88
],
99
"sourceMap": true,
1010
"esModuleInterop": true,
11-
"rootDir": "src",
11+
"rootDir":"src",
1212
"strict": true, /* enable all strict type-checking options */
1313
/* Additional Checks */
1414
"noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
1515
"noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
1616
"noUnusedParameters": true /* Report errors on unused parameters. */
1717
},
1818
"exclude": [
19-
"node_modules",
20-
".vscode-test"
19+
"node_modules"
2120
]
2221
}

0 commit comments

Comments
 (0)