From b352dbb9ff7c620f942b1f52abc5f6a9c8fb3ba3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9E=97=E4=B8=87=E7=A8=8B?= <1498425439@qq.com>
Date: Wed, 28 Feb 2024 07:30:30 +0800
Subject: [PATCH] =?UTF-8?q?feat(RubyLangDoc):=20support=20Ruby=20|=20?=
=?UTF-8?q?=E6=94=AF=E6=8C=81=20Ruby?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 8 ++---
build.gradle | 7 ++--
.../plugin/show/lang/RubyLangDoc.java | 28 +++++++++++++++
.../show/settings/AppSettingsComponent.java | 9 +++++
.../settings/AppSettingsConfigurable.java | 3 ++
.../show/settings/AppSettingsState.java | 1 +
src/main/resources/META-INF/plugin.xml | 7 ++--
src/main/resources/META-INF/ruby.xml | 5 +++
.../github/linwancen/plugin/show/demo/ruby.rb | 36 +++++++++++++++++++
9 files changed, 94 insertions(+), 10 deletions(-)
create mode 100644 src/main/java/io/github/linwancen/plugin/show/lang/RubyLangDoc.java
create mode 100644 src/main/resources/META-INF/ruby.xml
create mode 100644 src/test/java/io/github/linwancen/plugin/show/demo/ruby.rb
diff --git a/README.md b/README.md
index 2b3f7cd..d518aba 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@ Show doc comment in the Project view Tree, line End, json, other
English Note
-- support Java Kotlin Scala Groovy JS/TS PHP Python Go Rust C SQL
+
- support Java Kotlin Scala Groovy JS/TS PHP Python Go Rust Ruby C SQL
- tree doc from lang or README.md pom .gradle etc. by settings
- input `doc` `docc` -> /** */
- json doc from xxx.json.tsv
@@ -58,7 +58,7 @@ Show doc comment in the Project view Tree, line End, json, other
- 在结构树显示 文件注释 或 项目说明 (README.md pom.xml 等,可设置)
- 在行末尾显示 引用对象的文档注释,欢迎反馈您想要支持的语言,欢迎 C# 大神研究 CsLineEnd.java
-
- 目前支持 Java Kotlin Scala Groovy JS/TS PHP Python Go Rust C SQL
+
- 目前支持 Java Kotlin Scala Groovy JS/TS PHP Python Go Rust Ruby C SQL
- 输入 doc / docc 等生成 /** */
- json 字段注释从 xxx.json.tsv 读取
- json 字典注释从 键名.tsv 读取
@@ -121,7 +121,7 @@ Show doc comment in the Project view Tree, line End, json, other
English Change Notes:
-- 2.16 Add line-end-comment support Rust, PHP, C/C++/Object C, Scala, Groovy
+
- 2.16 Add line-end-comment support Rust, Ruby, PHP, C/C++/Object C, Scala, Groovy
- 2.15 Add line-end-comment java anno doc
- 2.14 Add line-end-comment java enum doc for Yes(1, "Yes")
- 2.13 ★ Cache for 2023.3
@@ -166,7 +166,7 @@ Show doc comment in the Project view Tree, line End, json, other
中文更新说明:
-- 2.16 增加 行末注释 支持 Rust, PHP, C/C++/Object C, Scala, Groovy
+
- 2.16 增加 行末注释 支持 Rust, Ruby, PHP, C/C++/Object C, Scala, Groovy
- 2.15 增加 行末注释 java 注解注释
- 2.14 增加 行末注释 java 枚举注释用于 Yes(1, "是")
- 2.13 ★ 缓存用于支持 2023.3
diff --git a/build.gradle b/build.gradle
index c5f1124..ea7c13a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -33,12 +33,13 @@ intellij {
'Pythonid:201.6668.121',
'org.rust.lang:0.3.131.3366-201',
'org.toml.lang:0.2.131.3366-201',
- 'org.intellij.scala:2020.1.43',
+ 'org.jetbrains.plugins.ruby:201.6668.113',
]
if ('IC' == ideTypeStr || 'IU' == ideTypeStr) {
plugins.add('java')
plugins.add('org.jetbrains.kotlin')
plugins.add('org.intellij.groovy')
+ plugins.add('org.intellij.scala:2020.1.43')
} else if ('CL' == ideTypeStr) {
plugins.add('com.intellij.clion-swift:201.6668.126')
}
@@ -93,7 +94,7 @@ patchPluginXml {
changeNotes = """
English Change Notes:
-- 2.16 Add line-end-comment support Rust, PHP, C/C++/Object C, Scala, Groovy
+
- 2.16 Add line-end-comment support Rust, Ruby, PHP, C/C++/Object C, Scala, Groovy
- 2.15 Add line-end-comment java anno doc
- 2.14 Add line-end-comment java enum doc for Yes(1, "Yes")
- 2.13 ★ Cache for 2023.3
@@ -138,7 +139,7 @@ patchPluginXml {
中文更新说明:
-- 2.16 增加 行末注释 支持 Rust, PHP, C/C++/Object C, Scala, Groovy
+
- 2.16 增加 行末注释 支持 Rust, Ruby, PHP, C/C++/Object C, Scala, Groovy
- 2.15 增加 行末注释 java 注解注释
- 2.14 增加 行末注释 java 枚举注释用于 Yes(1, "是")
- 2.13 ★ 缓存用于支持 2023.3
diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/RubyLangDoc.java b/src/main/java/io/github/linwancen/plugin/show/lang/RubyLangDoc.java
new file mode 100644
index 0000000..5352f97
--- /dev/null
+++ b/src/main/java/io/github/linwancen/plugin/show/lang/RubyLangDoc.java
@@ -0,0 +1,28 @@
+package io.github.linwancen.plugin.show.lang;
+
+import com.intellij.psi.PsiElement;
+import io.github.linwancen.plugin.show.bean.LineInfo;
+import io.github.linwancen.plugin.show.lang.base.BaseLangDoc;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.plugins.ruby.ruby.lang.RubyLanguage;
+import org.jetbrains.plugins.ruby.ruby.lang.psi.references.RDotReference;
+import org.jetbrains.plugins.ruby.ruby.lang.psi.variables.RIdentifier;
+
+import java.util.List;
+
+public class RubyLangDoc extends BaseLangDoc {
+
+ static {
+ LANG_DOC_MAP.put(RubyLanguage.INSTANCE.getID(), new RubyLangDoc());
+ }
+
+ @Override
+ public @NotNull List> getRefClass() {
+ return List.of(RDotReference.class, RIdentifier.class);
+ }
+
+ @Override
+ public boolean show(@NotNull LineInfo info) {
+ return info.appSettings.showLineEndCommentRubyBase;
+ }
+}
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
index b9a22bd..e43acf5 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
@@ -38,6 +38,7 @@ public class AppSettingsComponent {
private final JBCheckBox showLineEndCommentGo = new JBCheckBox(" Go ");
private final JBCheckBox showLineEndCommentGoBase = new JBCheckBox("// Go ");
private final JBCheckBox showLineEndCommentRustBase = new JBCheckBox("// Rust ");
+ private final JBCheckBox showLineEndCommentRubyBase = new JBCheckBox("// Ruby ");
private final JBCheckBox showLineEndCommentCBase = new JBCheckBox("// C ");
private final JBCheckBox showLineEndCommentSwiftBase = new JBCheckBox("// Swift ");
private final JBCheckBox showLineEndCommentSql = new JBCheckBox(" sql ");
@@ -318,6 +319,14 @@ public class AppSettingsComponent {
showLineEndCommentRustBase.setSelected(newStatus);
}
+ public boolean getShowLineEndCommentRubyBase() {
+ return showLineEndCommentRubyBase.isSelected();
+ }
+
+ public void setShowLineEndCommentRubyBase(boolean newStatus) {
+ showLineEndCommentRubyBase.setSelected(newStatus);
+ }
+
public boolean getShowLineEndCommentCBase() {
return showLineEndCommentCBase.isSelected();
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
index 82b1e75..ec5f0d6 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
@@ -58,6 +58,7 @@ public class AppSettingsConfigurable implements Configurable {
modified |= mySettingsComponent.getShowLineEndCommentPyBase() != settings.showLineEndCommentPyBase;
modified |= mySettingsComponent.getShowLineEndCommentGoBase() != settings.showLineEndCommentGoBase;
modified |= mySettingsComponent.getShowLineEndCommentRustBase() != settings.showLineEndCommentRustBase;
+ modified |= mySettingsComponent.getShowLineEndCommentRubyBase() != settings.showLineEndCommentRubyBase;
modified |= mySettingsComponent.getShowLineEndCommentCBase() != settings.showLineEndCommentCBase;
modified |= mySettingsComponent.getShowLineEndCommentSwiftBase() != settings.showLineEndCommentSwiftBase;
modified |= mySettingsComponent.getShowLineEndCommentSql() != settings.showLineEndCommentSql;
@@ -106,6 +107,7 @@ public class AppSettingsConfigurable implements Configurable {
settings.showLineEndCommentPyBase = mySettingsComponent.getShowLineEndCommentPyBase();
settings.showLineEndCommentGoBase = mySettingsComponent.getShowLineEndCommentGoBase();
settings.showLineEndCommentRustBase = mySettingsComponent.getShowLineEndCommentRustBase();
+ settings.showLineEndCommentRubyBase = mySettingsComponent.getShowLineEndCommentRubyBase();
settings.showLineEndCommentCBase = mySettingsComponent.getShowLineEndCommentCBase();
settings.showLineEndCommentSwiftBase = mySettingsComponent.getShowLineEndCommentSwiftBase();
settings.showLineEndCommentSql = mySettingsComponent.getShowLineEndCommentSql();
@@ -157,6 +159,7 @@ public class AppSettingsConfigurable implements Configurable {
mySettingsComponent.setShowLineEndCommentPyBase(settings.showLineEndCommentPyBase);
mySettingsComponent.setShowLineEndCommentGoBase(settings.showLineEndCommentGoBase);
mySettingsComponent.setShowLineEndCommentRustBase(settings.showLineEndCommentRustBase);
+ mySettingsComponent.setShowLineEndCommentRubyBase(settings.showLineEndCommentRubyBase);
mySettingsComponent.setShowLineEndCommentCBase(settings.showLineEndCommentCBase);
mySettingsComponent.setShowLineEndCommentSwiftBase(settings.showLineEndCommentSwiftBase);
mySettingsComponent.setShowLineEndCommentSql(settings.showLineEndCommentSql);
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
index fdccebe..11de401 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
@@ -46,6 +46,7 @@ public class AppSettingsState implements PersistentStateComponentEnglish Note
-- support Java Kotlin Scala Groovy JS/TS PHP Python Go Rust C SQL
+
- support Java Kotlin Scala Groovy JS/TS PHP Python Go Rust Ruby C SQL
- tree doc from lang or README.md pom .gradle etc. by settings
- input `doc` `docc` -> /** */
- json doc from xxx.json.tsv
@@ -56,7 +56,7 @@ Show doc comment in the Project view Tree, line End, json, other
- 在结构树显示 文件注释 或 项目说明 (README.md pom.xml 等,可设置)
- 在行末尾显示 引用对象的文档注释,欢迎反馈您想要支持的语言,欢迎 C# 大神研究 CsLineEnd.java
-
- 目前支持 Java Kotlin Scala Groovy JS/TS PHP Python Go Rust C SQL
+
- 目前支持 Java Kotlin Scala Groovy JS/TS PHP Python Go Rust Ruby C SQL
- 输入 doc / docc 等生成 /** */
- json 字段注释从 xxx.json.tsv 读取
- json 字典注释从 键名.tsv 读取
@@ -120,9 +120,9 @@ Show doc comment in the Project view Tree, line End, json, other
com.intellij.modules.platform
com.intellij.modules.java
org.jetbrains.kotlin
+ org.intellij.groovy
org.intellij.scala
- org.intellij.groovy
com.intellij.database
JavaScript
com.jetbrains.php
@@ -132,6 +132,7 @@ Show doc comment in the Project view Tree, line End, json, other
org.rust.lang
com.jetbrains.rust
+ com.intellij.modules.ruby
com.intellij.modules.clion
diff --git a/src/main/resources/META-INF/ruby.xml b/src/main/resources/META-INF/ruby.xml
new file mode 100644
index 0000000..10a3583
--- /dev/null
+++ b/src/main/resources/META-INF/ruby.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/java/io/github/linwancen/plugin/show/demo/ruby.rb b/src/test/java/io/github/linwancen/plugin/show/demo/ruby.rb
new file mode 100644
index 0000000..5cc0694
--- /dev/null
+++ b/src/test/java/io/github/linwancen/plugin/show/demo/ruby.rb
@@ -0,0 +1,36 @@
+lwc = Human.new("lwc")
+lwc.met1("Hi")
+
+# fun
+def fun(x,y)
+ fun2
+ fun3("Hi")
+ h = Human.new
+ h.met2
+end
+
+# fun2
+def fun2()
+
+end
+
+# fun3
+def fun3(msg)
+
+end
+
+# class
+class Human
+ # Human
+
+ # met1 #met2
+ def met1(msg)
+ met2
+ end
+
+ # met2
+ def met2
+
+ end
+
+end
\ No newline at end of file