Shinsuke Sugaya 5 роки тому
батько
коміт
d19f020cca

+ 12 - 4
src/main/java/org/codelibs/fess/taglib/FessFunctions.java

@@ -383,12 +383,20 @@ public class FessFunctions {
                 list.add(line);
                 list.add(line);
             }
             }
         }
         }
+        if (lineNum == 0 || list.isEmpty()) {
+            return "<pre class=\"" + style + "\">" + input + "</pre>";
+        }
+        int lastIndex = list.size();
         if (list.get(list.size() - 1).endsWith("...")) {
         if (list.get(list.size() - 1).endsWith("...")) {
-            list.remove(list.size() - 1);
+            lastIndex--;
+        }
+        if (lastIndex <= 0) {
+            lastIndex = 1;
         }
         }
-        if (lineNum == 0) {
-            return "<pre class=\"" + style + "\">" + list.stream().collect(Collectors.joining("\n")) + "</pre>";
+        final String content = list.subList(0, lastIndex).stream().collect(Collectors.joining("\n"));
+        if (StringUtil.isBlank(content)) {
+            return "<pre class=\"" + style + "\">" + input.replaceAll("L[0-9]+:", StringUtil.EMPTY).trim() + "</pre>";
         }
         }
-        return "<pre class=\"" + style + " linenums:" + lineNum + "\">" + list.stream().collect(Collectors.joining("\n")) + "</pre>";
+        return "<pre class=\"" + style + " linenums:" + lineNum + "\">" + content + "</pre>";
     }
     }
 }
 }

+ 16 - 0
src/test/java/org/codelibs/fess/taglib/FessFunctionsTest.java

@@ -100,5 +100,21 @@ public class FessFunctionsTest extends UnitFessTestCase {
         value = FessFunctions.formatCode("L", "prettyprint", "text/plain", code);
         value = FessFunctions.formatCode("L", "prettyprint", "text/plain", code);
         assertEquals("<pre class=\"prettyprint linenums:10\">aaa\nbbb</pre>", value);
         assertEquals("<pre class=\"prettyprint linenums:10\">aaa\nbbb</pre>", value);
 
 
+        code = "aaa\nL11:bbb\nL12:ccc...";
+        value = FessFunctions.formatCode("L", "prettyprint", "text/plain", code);
+        assertEquals("<pre class=\"prettyprint linenums:11\">bbb</pre>", value);
+
+        code = "aaa\nL10:";
+        value = FessFunctions.formatCode("L", "prettyprint", "text/plain", code);
+        assertEquals("<pre class=\"prettyprint\">aaa</pre>", value);
+
+        code = "aaa\nL10:\nL11:ccc...";
+        value = FessFunctions.formatCode("L", "prettyprint", "text/plain", code);
+        assertEquals("<pre class=\"prettyprint\">aaa\n\nccc...</pre>", value);
+
+        code = "aaa\nL10:\nL11:ccc";
+        value = FessFunctions.formatCode("L", "prettyprint", "text/plain", code);
+        assertEquals("<pre class=\"prettyprint linenums:10\">\nccc</pre>", value);
+
     }
     }
 }
 }