This is an automated email from the ASF dual-hosted git repository.
sdedic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new dbf1b142d8 Fix P + BR tag handling, LI is replaced by "* "
new 1eb1c58ab6 Merge pull request #6375 from sdedic/lsp/fix-html-stripping
dbf1b142d8 is described below
commit dbf1b142d868465d287982c71a733df6f47c0247
Author: Svata Dedic <[email protected]>
AuthorDate: Thu Aug 24 12:07:41 2023 +0200
Fix P + BR tag handling, LI is replaced by "* "
---
.../netbeans/modules/java/lsp/server/Utils.java | 21 +++++++++++++++++++--
.../modules/java/lsp/server/UtilsTest.java | 22 ++++++++++++++++++++++
2 files changed, 41 insertions(+), 2 deletions(-)
diff --git
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/Utils.java
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/Utils.java
index a4f04ce662..d913aab26e 100644
--- a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/Utils.java
+++ b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/Utils.java
@@ -414,21 +414,29 @@ public class Utils {
int tagStart = -1;
StringBuilder sb = new StringBuilder();
+ String additional = null;
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
T: if (inTag) {
boolean alpha = Character.isAlphabetic(ch);
if (tagStart > 0 && !alpha) {
String t = s.substring(tagStart,
i).toLowerCase(Locale.ENGLISH);
+ // prevent entering tagstart state again
+ tagStart = -2;
+ if (ch == '>') { // NOI18N
+ inTag = false;
+ }
switch (t) {
case "br": case "p": case "hr": // NOI1N
ch ='\n'; // NOI18N
// continues to process 'ch' as if it came from
the string, but `inTag` remains
// the same.
break T;
+ case "li":
+ ch = '\n';
+ additional = "* ";
+ break T;
}
- // prevent entering tagstart state again
- tagStart = -2;
}
if (ch == '>') { // NOI18N
inTag = false;
@@ -441,6 +449,11 @@ public class Utils {
tagStart = -1;
inTag = true;
continue;
+ } else if (ch == '&') {
+ if (" ".contentEquals(s.subSequence(i,
Math.min(s.length(), i + 6)))) {
+ i += 5;
+ ch = ' '; // NOI18N
+ }
}
}
if (collapseWhitespaces) {
@@ -458,6 +471,10 @@ public class Utils {
}
}
sb.append(ch);
+ if (additional != null) {
+ sb.append(additional);
+ additional = null;
+ }
}
return collapseWhitespaces ? sb.toString().trim() : sb.toString();
}
diff --git
a/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/UtilsTest.java
b/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/UtilsTest.java
index 24e997da75..f0ebdae200 100644
---
a/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/UtilsTest.java
+++
b/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/UtilsTest.java
@@ -82,4 +82,26 @@ public class UtilsTest {
String result = Utils.html2plain(s, true);
assertEquals(expResult, result);
}
+
+ /**
+ * LI is replaced by "* ".
+ */
+ @Test
+ public void testReplaceLiByAsterisk() {
+ String s = "<ul><li>First option<li>Next option</ul>";
+ String expResult = "* First option * Next option";
+ String result = Utils.html2plain(s, true);
+ assertEquals(expResult, result);
+ }
+
+ /**
+ * "P" properly appends following text, it used to strip until the next
tag.
+ */
+ @Test
+ public void testDontStripContentAfterTags() {
+ String s = "<html>The Java version: 19, that is selected for the
project is not supported <p>Possible solutions:<ul>List content </ul>Epilog";
+ String expResult = "The Java version: 19, that is selected for the
project is not supported Possible solutions:List content Epilog";
+ String result = Utils.html2plain(s, true);
+ assertEquals(expResult, result);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists