Skip to content

Commit 5ab223b

Browse files
author
xusupeng
committed
feat(explorer): 添加英文题目名称支持
在问题列表和展示功能中增加英文题目名称字段,用于生成不同格式的路径名称 修改相关接口和逻辑以支持中英文题目名称切换
1 parent 3f83267 commit 5ab223b

File tree

7 files changed

+48
-4
lines changed

7 files changed

+48
-4
lines changed

.idea/.gitignore

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/indexLayout.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/commands/list.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ export async function listProblems(): Promise<IProblem[]> {
1616

1717
const useEndpointTranslation: boolean = settingUtils.shouldUseEndpointTranslation();
1818
let result = await leetCodeExecutor.listProblems(true, useEndpointTranslation);
19+
let resultEn = await leetCodeExecutor.listProblems(true,false);
20+
const reg: RegExp = /^(.)\s(.{1,2})\s(.)\s\[\s*(\d*)\s*\]\s*(.*)\s*(Easy|Medium|Hard)\s*\((\s*\d+\.\d+ %)\)/;
1921
let classic150Problems = [
2022
88,
2123
27,
@@ -271,8 +273,17 @@ export async function listProblems(): Promise<IProblem[]> {
271273
287
272274
]
273275
const problems: IProblem[] = [];
276+
const linesEn: string[] = resultEn.split("\n");
277+
const enNameMap: { [key: string]: string } = {};
278+
for (const lineEn of linesEn) {
279+
const matchEn: RegExpMatchArray | null = lineEn.match(reg);
280+
if (matchEn && matchEn.length === 8) {
281+
const idEn: string = matchEn[4].trim();
282+
enNameMap[idEn] = matchEn[5].trim();
283+
}
284+
}
274285
const lines: string[] = result.split("\n");
275-
const reg: RegExp = /^(.)\s(.{1,2})\s(.)\s\[\s*(\d*)\s*\]\s*(.*)\s*(Easy|Medium|Hard)\s*\((\s*\d+\.\d+ %)\)/;
286+
276287
const { companies, tags } = await leetCodeExecutor.getCompaniesAndTags();
277288
for (const line of lines) {
278289
const match: RegExpMatchArray | null = line.match(reg);
@@ -286,6 +297,7 @@ export async function listProblems(): Promise<IProblem[]> {
286297
isHot100: hot100Problems.includes(Number(id)),
287298
isClassic150: classic150Problems.includes(Number(id)),
288299
name: match[5].trim(),
300+
nameEn: enNameMap[id] ,
289301
difficulty: match[6].trim(),
290302
passRate: match[7].trim(),
291303
companies: companies[id] || ["Unknown"],

src/commands/show.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,12 +263,12 @@ async function resolveRelativePath(relativePath: string, node: IProblem, selecte
263263
case "name":
264264
return node.name;
265265
case "camelcasename":
266-
return _.camelCase(node.name);
266+
return _.camelCase(node.nameEn);
267267
case "pascalcasename":
268-
return _.upperFirst(_.camelCase(node.name));
268+
return _.upperFirst(_.camelCase(node.nameEn));
269269
case "kebabcasename":
270270
case "kebab-case-name":
271-
return _.kebabCase(node.name);
271+
return _.kebabCase(node.nameEn);
272272
case "snakecasename":
273273
case "snake_case_name":
274274
return _.snakeCase(node.name);

src/explorer/LeetCodeNode.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ export class LeetCodeNode {
3434
public get tags(): string[] {
3535
return this.data.tags;
3636
}
37+
public get nameEn(): string {
38+
return this.data.nameEn;
39+
}
3740

3841
public get companies(): string[] {
3942
return this.data.companies;

src/shared.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export interface IProblem {
7979
state: ProblemState;
8080
id: string;
8181
name: string;
82+
nameEn:string;
8283
difficulty: string;
8384
passRate: string;
8485
companies: string[];
@@ -93,6 +94,7 @@ export const defaultProblem: IProblem = {
9394
isClassic150: false,
9495
id: "",
9596
name: "",
97+
nameEn: "",
9698
difficulty: "",
9799
passRate: "",
98100
companies: [] as string[],

0 commit comments

Comments
 (0)