diff --git a/src/main/java/com/shuzijun/leetcode/plugin/manager/CodeManager.java b/src/main/java/com/shuzijun/leetcode/plugin/manager/CodeManager.java
index 47264215..e72a5eae 100644
--- a/src/main/java/com/shuzijun/leetcode/plugin/manager/CodeManager.java
+++ b/src/main/java/com/shuzijun/leetcode/plugin/manager/CodeManager.java
@@ -48,7 +48,7 @@ public static void openCode(Question question, Project project) {
} else {
if (getQuestion(question, codeTypeEnum, project)) {
- question.setContent(CommentUtils.createComment(question.getContent(), codeTypeEnum));
+ question.setContent(CommentUtils.createComment(question.getContent(), codeTypeEnum,config));
FileUtils.saveFile(file, VelocityUtils.convert(config.getCustomTemplate(), question));
FileUtils.openFileEditorAndSaveState(file,project,question,fillPath,true);
}
@@ -312,7 +312,7 @@ private static String getContent(JSONObject jsonObject) {
sb.append("");
}
sb.append("");
- sb.append("\\n");
+ sb.append("
");
}
sb.append("
\uD83D\uDC4D "+jsonObject.getInteger("likes")+"\uD83D\uDC4E "+jsonObject.getInteger("dislikes")+"");
return sb.toString();
diff --git a/src/main/java/com/shuzijun/leetcode/plugin/model/CodeTypeEnum.java b/src/main/java/com/shuzijun/leetcode/plugin/model/CodeTypeEnum.java
index 3f38b020..1a4d68cd 100644
--- a/src/main/java/com/shuzijun/leetcode/plugin/model/CodeTypeEnum.java
+++ b/src/main/java/com/shuzijun/leetcode/plugin/model/CodeTypeEnum.java
@@ -7,25 +7,25 @@
* @author shuzijun
*/
public enum CodeTypeEnum {
- JAVA("Java", "java", ".java", "//"),
- PYTHON("Python", "python", ".py", "# "),
- CPP("C++", "cpp", ".cpp", "//"),
- PYTHON3("Python3", "python3", ".py", "# "),
- C("C", "c", ".c", "//"),
- CSHARP("C#", "csharp", ".cs", "//"),
- JAVASCRIPT("JavaScript", "javascript", ".js", "//"),
- RUBY("Ruby", "ruby", ".rb", "#"),
- SWIFT("Swift", "swift", ".swift", "///"),
- GO("Go", "golang", ".go", "//"),
- SCALA("Scala", "scala", ".scala", "//"),
- KOTLIN("Kotlin", "kotlin", ".kt", "//"),
- RUST("Rust", "rust", ".rs", "//"),
- PHP("PHP", "php", ".php", "//"),
- BASH("Bash", "bash", ".sh", "#"),
- MYSQL("MySQL", "mysql", ".sql", "#"),
- ORACLE("Oracle", "oraclesql", ".sql", "#"),
- MSSQLSERVER("MS SQL Server", "mssql", ".sql", "#"),
- TypeScript("TypeScript", "typescript", ".ts", "//"),
+ JAVA("Java", "java", ".java", "//", "/**\n%s\n*/"),
+ PYTHON("Python", "python", ".py", "# ","\"\"\"\n%s\n\"\"\""),
+ CPP("C++", "cpp", ".cpp", "//", "/**\n%s\n*/"),
+ PYTHON3("Python3", "python3", ".py", "# ","\"\"\"\n%s\n\"\"\""),
+ C("C", "c", ".c", "//", "/**\n%s\n*/"),
+ CSHARP("C#", "csharp", ".cs", "//", "/**\n%s\n*/"),
+ JAVASCRIPT("JavaScript", "javascript", ".js", "//", "/**\n%s\n*/"),
+ RUBY("Ruby", "ruby", ".rb", "#","=begin\n%s\n=end"),
+ SWIFT("Swift", "swift", ".swift", "///", "/**\n%s\n*/"),
+ GO("Go", "golang", ".go", "//", "/**\n%s\n*/"),
+ SCALA("Scala", "scala", ".scala", "//", "/**\n%s\n*/"),
+ KOTLIN("Kotlin", "kotlin", ".kt", "//", "/**\n%s\n*/"),
+ RUST("Rust", "rust", ".rs", "//", "/**\n%s\n*/"),
+ PHP("PHP", "php", ".php", "//", "/**\n%s\n*/"),
+ BASH("Bash", "bash", ".sh", "#",": '\n%s\n'"),
+ MYSQL("MySQL", "mysql", ".sql", "#", "/**\n%s\n*/"),
+ ORACLE("Oracle", "oraclesql", ".sql", "#", "/**\n%s\n*/"),
+ MSSQLSERVER("MS SQL Server", "mssql", ".sql", "#", "/**\n%s\n*/"),
+ TypeScript("TypeScript", "typescript", ".ts", "//", "/**\n%s\n*/"),
;
@@ -33,12 +33,14 @@ public enum CodeTypeEnum {
private String langSlug;
private String suffix;
private String comment;
+ private String multiLineComment;
- CodeTypeEnum(String type, String langSlug, String suffix, String comment) {
+ CodeTypeEnum(String type, String langSlug, String suffix, String comment, String multiLineComment) {
this.type = type;
this.langSlug = langSlug;
this.suffix = suffix;
this.comment = comment;
+ this.multiLineComment = multiLineComment;
}
private static Map MAP = new HashMap();
@@ -70,4 +72,8 @@ public static CodeTypeEnum getCodeTypeEnumByLangSlug(String langSlug) {
public String getComment() {
return comment;
}
+
+ public String getMultiLineComment() {
+ return multiLineComment;
+ }
}
diff --git a/src/main/java/com/shuzijun/leetcode/plugin/model/Config.java b/src/main/java/com/shuzijun/leetcode/plugin/model/Config.java
index 35c24c7e..bb69e198 100644
--- a/src/main/java/com/shuzijun/leetcode/plugin/model/Config.java
+++ b/src/main/java/com/shuzijun/leetcode/plugin/model/Config.java
@@ -95,6 +95,16 @@ public class Config {
*/
private Boolean questionEditor = true;
+ /**
+ * Content Multiline Comment
+ */
+ private Boolean multilineComment = false;
+
+ /**
+ * html Content
+ */
+ private Boolean htmlContent = false;
+
private List favoriteList;
public String getId() {
@@ -321,6 +331,22 @@ public void setQuestionEditor(Boolean questionEditor) {
this.questionEditor = questionEditor;
}
+ public Boolean getMultilineComment() {
+ return multilineComment;
+ }
+
+ public void setMultilineComment(Boolean multilineComment) {
+ this.multilineComment = multilineComment;
+ }
+
+ public Boolean getHtmlContent() {
+ return htmlContent;
+ }
+
+ public void setHtmlContent(Boolean htmlContent) {
+ this.htmlContent = htmlContent;
+ }
+
public boolean isModified(Config config){
if(config ==null){
return false;
@@ -343,6 +369,10 @@ public boolean isModified(Config config){
return false;
if (questionEditor != null ? !questionEditor.equals(config.questionEditor) : config.questionEditor != null)
return false;
+ if (multilineComment != null ? !multilineComment.equals(config.multilineComment) : config.multilineComment != null)
+ return false;
+ if (htmlContent != null ? !htmlContent.equals(config.htmlContent) : config.htmlContent != null)
+ return false;
return levelColour != null ? levelColour.equals(config.levelColour) : config.levelColour == null;
}
diff --git a/src/main/java/com/shuzijun/leetcode/plugin/setting/SettingUI.form b/src/main/java/com/shuzijun/leetcode/plugin/setting/SettingUI.form
index d3b4a901..4d342bcb 100644
--- a/src/main/java/com/shuzijun/leetcode/plugin/setting/SettingUI.form
+++ b/src/main/java/com/shuzijun/leetcode/plugin/setting/SettingUI.form
@@ -136,6 +136,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/shuzijun/leetcode/plugin/setting/SettingUI.java b/src/main/java/com/shuzijun/leetcode/plugin/setting/SettingUI.java
index 8be20688..45cb6fd3 100644
--- a/src/main/java/com/shuzijun/leetcode/plugin/setting/SettingUI.java
+++ b/src/main/java/com/shuzijun/leetcode/plugin/setting/SettingUI.java
@@ -57,6 +57,8 @@ public class SettingUI {
private JPanel codeTemplate;
private JPanel templateConstant;
private JCheckBox jcefCheckBox;
+ private JCheckBox multilineCheckBox;
+ private JCheckBox htmlContentCheckBox;
private Editor fileNameEditor = null;
@@ -186,6 +188,8 @@ private void loadSetting() {
jcefCheckBox.setSelected(config.getJcef());
questionEditorCheckBox.setSelected(config.getQuestionEditor());
+ multilineCheckBox.setSelected(config.getMultilineComment());
+ htmlContentCheckBox.setSelected(config.getHtmlContent());
} else {
Color[] colors = new Config().getFormatLevelColour();
easyLabel.setForeground(colors[0]);
@@ -254,6 +258,8 @@ public void process(Config config) {
config.setEnglishContent(englishContentBox.isSelected());
config.setJcef(jcefCheckBox.isSelected());
config.setQuestionEditor(questionEditorCheckBox.isSelected());
+ config.setMultilineComment(multilineCheckBox.isSelected());
+ config.setHtmlContent(htmlContentCheckBox.isSelected());
}
diff --git a/src/main/java/com/shuzijun/leetcode/plugin/utils/CommentUtils.java b/src/main/java/com/shuzijun/leetcode/plugin/utils/CommentUtils.java
index faa46e25..2c82cd3f 100644
--- a/src/main/java/com/shuzijun/leetcode/plugin/utils/CommentUtils.java
+++ b/src/main/java/com/shuzijun/leetcode/plugin/utils/CommentUtils.java
@@ -1,7 +1,8 @@
package com.shuzijun.leetcode.plugin.utils;
import com.shuzijun.leetcode.plugin.model.CodeTypeEnum;
-import org.apache.commons.lang.StringUtils;
+import com.shuzijun.leetcode.plugin.model.Config;
+import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import java.util.regex.Matcher;
@@ -14,14 +15,22 @@ public class CommentUtils {
private static final Pattern subPattern = Pattern.compile("(?)?([0-9abcdeghijklmnoprstuvwxyz\\+\\-\\*=\\(\\)\\.\\/]+)()??");
- public static String createComment(String html, CodeTypeEnum codeTypeEnum) {
+ public static String createComment(String html, CodeTypeEnum codeTypeEnum, Config config) {
+ html = html.replaceAll("(\\r\\n|\\r|\\n|\\n\\r)", "\\\\n").replaceAll(" "," ");
+ if(config.getHtmlContent()) {
+ if(config.getMultilineComment()){
+ return String.format(codeTypeEnum.getMultiLineComment(),html.replaceAll("\\\\n", "\n"));
+ }else {
+ return codeTypeEnum.getComment() + html.replaceAll("\\\\n", "\n" + codeTypeEnum.getComment());
+ }
+ }
Matcher subMatcher = subPattern.matcher(html);
while (subMatcher.find()) {
String subStr = SuperscriptUtils.getSup(subMatcher.group(2));
html = html.replace(subMatcher.group(), "" + subStr + "");
}
- html = html.replaceAll("(\\r\\n|\\r|\\n|\\n\\r)", "\\\\n").replaceAll(" "," ");
- String body = codeTypeEnum.getComment() + Jsoup.parse(html).text().replaceAll("\\\\n", "\n" + codeTypeEnum.getComment());
+ String comment = config.getMultilineComment()?"":codeTypeEnum.getComment();
+ String body = comment + Jsoup.parse(html).text().replaceAll("\\\\n", "\n" + comment);
String[] lines = body.split("\n");
StringBuilder sb = new StringBuilder();
for (String line : lines) {
@@ -31,12 +40,19 @@ public static String createComment(String html, CodeTypeEnum codeTypeEnum) {
} else {
StringBuilder lineBuilder = new StringBuilder(line);
for (int i = c; i > 0; i--) {
- lineBuilder.insert(80 * i, "\n" + codeTypeEnum.getComment());
+ int idx = 80 * i;
+ while (idx > (80 * i - 20)) {
+ if (isSplit(lineBuilder.charAt(idx - 1))) {
+ break;
+ }
+ idx = idx - 1;
+ }
+ lineBuilder.insert(idx, "\n" + comment);
}
sb.append(lineBuilder).append("\n");
}
}
- return sb.toString();
+ return config.getMultilineComment()?String.format(codeTypeEnum.getMultiLineComment(),sb):sb.toString();
}
public static String createSubmissions(String html) {
@@ -49,4 +65,11 @@ public static String createSubmissions(String html) {
pageData = pageData.replaceAll("status_code: parseInt\\('\\d+', \\d+\\),", "");
return pageData;
}
+
+ private static boolean isSplit(char c) {
+ if (c == 34 || c == 39 || (c >= 65 && c <= 90) || (c >= 97 && c <= 122)) {
+ return false;
+ }
+ return true;
+ }
}