Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit55e5517

Browse files
committed
Move comments so they are on their own line
1 parent811f849 commit55e5517

File tree

1 file changed

+156
-141
lines changed

1 file changed

+156
-141
lines changed

‎src/webview/leetCodePreviewProvider.ts

Lines changed: 156 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -8,51 +8,54 @@ import { ILeetCodeWebviewOption, LeetCodeWebview } from "./LeetCodeWebview";
88
import{markdownEngine}from"./markdownEngine";
99

1010
classLeetCodePreviewProviderextendsLeetCodeWebview{
11-
12-
protectedreadonlyviewType:string="leetcode.preview";
13-
privatenode:IProblem;
14-
privatedescription:IDescription;
15-
privatesideMode:boolean=false;
16-
17-
publicisSideMode():boolean{
18-
returnthis.sideMode;
19-
}
20-
21-
publicshow(descString:string,node:IProblem,isSideMode:boolean=false):void{
22-
this.description=this.parseDescription(descString,node);
23-
this.node=node;
24-
this.sideMode=isSideMode;
25-
this.showWebviewInternal();
26-
// Comment out this operation since it sometimes may cause the webview become empty.
27-
// Waiting for the progress of the VS Code side issue: https://github.com/microsoft/vscode/issues/3742
28-
// if (this.sideMode) {
29-
// this.hideSideBar(); // For better view area
30-
// }
31-
}
32-
33-
protectedgetWebviewOption():ILeetCodeWebviewOption{
34-
if(!this.sideMode){
35-
return{
36-
title:`${this.node.name}: Preview`,
37-
viewColumn:ViewColumn.One,
38-
};
39-
}else{
40-
return{
41-
title:"Description",
42-
viewColumn:ViewColumn.Two,
43-
preserveFocus:true,
44-
};
45-
}
11+
protectedreadonlyviewType:string="leetcode.preview";
12+
privatenode:IProblem;
13+
privatedescription:IDescription;
14+
privatesideMode:boolean=false;
15+
16+
publicisSideMode():boolean{
17+
returnthis.sideMode;
18+
}
19+
20+
publicshow(
21+
descString:string,
22+
node:IProblem,
23+
isSideMode:boolean=false
24+
):void{
25+
this.description=this.parseDescription(descString,node);
26+
this.node=node;
27+
this.sideMode=isSideMode;
28+
this.showWebviewInternal();
29+
// Comment out this operation since it sometimes may cause the webview become empty.
30+
// Waiting for the progress of the VS Code side issue: https://github.com/microsoft/vscode/issues/3742
31+
// if (this.sideMode) {
32+
// this.hideSideBar(); // For better view area
33+
// }
34+
}
35+
36+
protectedgetWebviewOption():ILeetCodeWebviewOption{
37+
if(!this.sideMode){
38+
return{
39+
title:`${this.node.name}: Preview`,
40+
viewColumn:ViewColumn.One,
41+
};
42+
}else{
43+
return{
44+
title:"Description",
45+
viewColumn:ViewColumn.Two,
46+
preserveFocus:true,
47+
};
4648
}
49+
}
4750

48-
protectedgetWebviewContent():string{
49-
constbutton:{element:string,script:string,style:string}={
50-
element:`<button>Code Now</button>`,
51-
script:`const button = document.getElementById('solve');
51+
protectedgetWebviewContent():string{
52+
constbutton:{element:string;script:string;style:string}={
53+
element:`<button>Code Now</button>`,
54+
script:`const button = document.getElementById('solve');
5255
button.onclick = () => vscode.postMessage({
5356
command: 'ShowProblem',
5457
});`,
55-
style:`<style>
58+
style:`<style>
5659
#solve {
5760
position: fixed;
5861
bottom: 1rem;
@@ -70,36 +73,41 @@ class LeetCodePreviewProvider extends LeetCodeWebview {
7073
border: 0;
7174
}
7275
</style>`,
73-
};
74-
const{ title, url, category, difficulty, likes, dislikes, body}=this.description;
75-
consthead:string=markdownEngine.render(`# [${title}](${url})`);
76-
constinfo:string=markdownEngine.render([
77-
`| Category | Difficulty | Likes | Dislikes |`,
78-
`| :------: | :--------: | :---: | :------: |`,
79-
`|${category} |${difficulty} |${likes} |${dislikes} |`,
80-
].join("\n"));
81-
consttags:string=[
82-
`<details>`,
83-
`<summary><strong>Tags</strong></summary>`,
84-
markdownEngine.render(
85-
this.description.tags
86-
.map((t:string)=>`[\`${t}\`](https://leetcode.com/tag/${t})`)
87-
.join(" | "),
88-
),
89-
`</details>`,
90-
].join("\n");
91-
constcompanies:string=[
92-
`<details>`,
93-
`<summary><strong>Companies</strong></summary>`,
94-
markdownEngine.render(
95-
this.description.companies
96-
.map((c:string)=>`\`${c}\``)
97-
.join(" | "),
98-
),
99-
`</details>`,
100-
].join("\n");
101-
constlinks:string=markdownEngine.render(`[Discussion](${this.getDiscussionLink(url)}) | [Solution](${this.getSolutionLink(url)})`);
102-
return`
76+
};
77+
const{ title, url, category, difficulty, likes, dislikes, body}=
78+
this.description;
79+
consthead:string=markdownEngine.render(`# [${title}](${url})`);
80+
constinfo:string=markdownEngine.render(
81+
[
82+
`| Category | Difficulty | Likes | Dislikes |`,
83+
`| :------: | :--------: | :---: | :------: |`,
84+
`|${category} |${difficulty} |${likes} |${dislikes} |`,
85+
].join("\n")
86+
);
87+
consttags:string=[
88+
`<details>`,
89+
`<summary><strong>Tags</strong></summary>`,
90+
markdownEngine.render(
91+
this.description.tags
92+
.map((t:string)=>`[\`${t}\`](https://leetcode.com/tag/${t})`)
93+
.join(" | ")
94+
),
95+
`</details>`,
96+
].join("\n");
97+
constcompanies:string=[
98+
`<details>`,
99+
`<summary><strong>Companies</strong></summary>`,
100+
markdownEngine.render(
101+
this.description.companies.map((c:string)=>`\`${c}\``).join(" | ")
102+
),
103+
`</details>`,
104+
].join("\n");
105+
constlinks:string=markdownEngine.render(
106+
`[Discussion](${this.getDiscussionLink(
107+
url
108+
)}) | [Solution](${this.getSolutionLink(url)})`
109+
);
110+
return`
103111
<!DOCTYPE html>
104112
<html>
105113
<head>
@@ -126,87 +134,94 @@ class LeetCodePreviewProvider extends LeetCodeWebview {
126134
</body>
127135
</html>
128136
`;
137+
}
138+
139+
protectedonDidDisposeWebview():void{
140+
super.onDidDisposeWebview();
141+
this.sideMode=false;
142+
}
143+
144+
protectedasynconDidReceiveMessage(message:IWebViewMessage):Promise<void>{
145+
switch(message.command){
146+
case"ShowProblem":{
147+
awaitcommands.executeCommand("leetcode.showProblem",this.node);
148+
break;
149+
}
129150
}
130-
131-
protectedonDidDisposeWebview():void{
132-
super.onDidDisposeWebview();
133-
this.sideMode=false;
134-
}
135-
136-
protectedasynconDidReceiveMessage(message:IWebViewMessage):Promise<void>{
137-
switch(message.command){
138-
case"ShowProblem":{
139-
awaitcommands.executeCommand("leetcode.showProblem",this.node);
140-
break;
141-
}
142-
}
151+
}
152+
153+
// private async hideSideBar(): Promise<void> {
154+
// await commands.executeCommand("workbench.action.focusSideBar");
155+
// await commands.executeCommand("workbench.action.toggleSidebarVisibility");
156+
// }
157+
158+
privateparseDescription(descString,problem){
159+
// Parse body by looking for the first html tag
160+
constbodyStartIdx=descString.search(/<.*>/);
161+
constbodyRaw=descString.substring(bodyStartIdx);
162+
163+
const{name:title, tags, companies}=problem;
164+
return{
165+
title,
166+
tags,
167+
companies,
168+
url:descString.match(/https:.*leetcode.*/)?.[0]||"??",
169+
// Category is the first element in list
170+
category:descString.match(/\*.*/)?.[0]?.slice(2)||"??",
171+
// Difficulty is the first element in list with a percentage sign
172+
difficulty:descString.match(/.*\%.*/)?.[0]?.slice(2)||"??",
173+
likes:
174+
descString
175+
.match(/Likes.*?\n/)?.[0]
176+
?.split(": ")[1]
177+
?.trim()||"0",
178+
dislikes:
179+
descString
180+
.match(/Dislikes.*?\n/)?.[0]
181+
?.split(": ")[1]
182+
?.trim()||"0",
183+
body:bodyRaw.replace(
184+
/<pre>[\r\n]*([^]+?)[\r\n]*<\/pre>/g,
185+
"<pre><code>$1</code></pre>"
186+
),
187+
};
188+
}
189+
190+
privategetDiscussionLink(url:string):string{
191+
constendPoint:string=getLeetCodeEndpoint();
192+
if(endPoint===Endpoint.LeetCodeCN){
193+
returnurl.replace("/description/","/comments/");
194+
}elseif(endPoint===Endpoint.LeetCode){
195+
returnurl.replace(
196+
"/description/",
197+
"/discuss/?currentPage=1&orderBy=most_votes&query="
198+
);
143199
}
144200

145-
// private async hideSideBar(): Promise<void> {
146-
// await commands.executeCommand("workbench.action.focusSideBar");
147-
// await commands.executeCommand("workbench.action.toggleSidebarVisibility");
148-
// }
149-
150-
privateparseDescription(descString,problem){
151-
// Parse body by looking for the first html tag
152-
constbodyStartIdx=descString.search(/<.*>/);
153-
constbodyRaw=descString.substring(bodyStartIdx);
154-
155-
const{name:title, tags, companies}=problem;
156-
return{
157-
title,
158-
tags,
159-
companies,
160-
url:descString.match(/https:.*leetcode.*/)?.[0]||"??",
161-
category:descString.match(/\*.*/)?.[0]?.slice(2)||"??",// Category is the first element in list
162-
difficulty:descString.match(/.*\%.*/)?.[0]?.slice(2)||"??",// Difficulty is the first element in list with a percentage sign
163-
likes:
164-
descString
165-
.match(/Likes.*?\n/)?.[0]
166-
?.split(": ")[1]
167-
?.trim()||"0",
168-
dislikes:
169-
descString
170-
.match(/Dislikes.*?\n/)?.[0]
171-
?.split(": ")[1]
172-
?.trim()||"0",
173-
body:bodyRaw.replace(
174-
/<pre>[\r\n]*([^]+?)[\r\n]*<\/pre>/g,
175-
"<pre><code>$1</code></pre>"
176-
),
177-
};
178-
}
179-
privategetDiscussionLink(url:string):string{
180-
constendPoint:string=getLeetCodeEndpoint();
181-
if(endPoint===Endpoint.LeetCodeCN){
182-
returnurl.replace("/description/","/comments/");
183-
}elseif(endPoint===Endpoint.LeetCode){
184-
returnurl.replace("/description/","/discuss/?currentPage=1&orderBy=most_votes&query=");
185-
}
186-
187-
return"https://leetcode.com";
188-
}
201+
return"https://leetcode.com";
202+
}
189203

190-
privategetSolutionLink(url:string):string{
191-
returnurl.replace("/description/","/solution/");
192-
}
204+
privategetSolutionLink(url:string):string{
205+
returnurl.replace("/description/","/solution/");
206+
}
193207
}
194208

195209
interfaceIDescription{
196-
title:string;
197-
url:string;
198-
tags:string[];
199-
companies:string[];
200-
category:string;
201-
difficulty:string;
202-
likes:string;
203-
dislikes:string;
204-
body:string;
210+
title:string;
211+
url:string;
212+
tags:string[];
213+
companies:string[];
214+
category:string;
215+
difficulty:string;
216+
likes:string;
217+
dislikes:string;
218+
body:string;
205219
}
206220

207221
interfaceIWebViewMessage{
208-
command:string;
222+
command:string;
209223
}
210224

211-
exportconstleetCodePreviewProvider:LeetCodePreviewProvider=newLeetCodePreviewProvider();
225+
exportconstleetCodePreviewProvider:LeetCodePreviewProvider=
226+
newLeetCodePreviewProvider();
212227

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp