Author: fanningpj
Date: Wed Aug 14 17:38:32 2024
New Revision: 1919895

URL: http://svn.apache.org/viewvc?rev=1919895&view=rev
Log:
[github-670] XWPFRun.getText should support delInstrText and noBreakHyphen. 
Thanks to fangd1997. This closes #670

Modified:
    poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
    
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFRun.java

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java?rev=1919895&r1=1919894&r2=1919895&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java 
Wed Aug 14 17:38:32 2024
@@ -1521,10 +1521,10 @@ public class XWPFRun implements ISDTCont
 
         if (o instanceof CTText) {
             final Node node = o.getDomNode();
-            // Field Codes (w:instrText, defined in spec sec. 17.16.23)
+            // Field Codes (w:instrText, defined in spec sec. 17.16.23 and 
w:delInstrText, defined in spec sec. 17.16.13)
             //  come up as instances of CTText, but we don't want them
             //  in the normal text output
-            if (!("instrText".equals(node.getLocalName()) && 
XSSFRelation.NS_WORDPROCESSINGML.equals(node.getNamespaceURI()))) {
+            if (!(("instrText".equals(node.getLocalName()) || 
"delInstrText".equals(node.getLocalName())) && 
XSSFRelation.NS_WORDPROCESSINGML.equals(node.getNamespaceURI()))) {
                 String textValue = ((CTText) o).getStringValue();
                 if (textValue != null) {
                     if (isCapitalized() || isSmallCaps()) {
@@ -1564,6 +1564,9 @@ public class XWPFRun implements ISDTCont
             final Node node = o.getDomNode();
             if 
(XSSFRelation.NS_WORDPROCESSINGML.equals(node.getNamespaceURI())) {
                 switch (node.getLocalName()) {
+                    case "noBreakHyphen":
+                        text.append('‑');
+                        break;
                     case "tab":
                         text.append('\t');
                         break;

Modified: 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFRun.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFRun.java?rev=1919895&r1=1919894&r2=1919895&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFRun.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFRun.java
 Wed Aug 14 17:38:32 2024
@@ -99,6 +99,17 @@ class TestXWPFRun {
         //fail("Position wrong");
     }
 
+    @Test
+    void testGetTextWithNoBreakHyphen() {
+        ctRun.addNewT().setStringValue("TEST STRING 1");
+        ctRun.addNewInstrText().setStringValue("InstrText");
+        ctRun.addNewNoBreakHyphen();
+        ctRun.addNewDelInstrText().setStringValue("DelInstrText");
+        ctRun.addNewT().setStringValue("1");
+        XWPFRun run = new XWPFRun(ctRun, irb);
+        assertEquals("TEST STRING 1‑1", run.text());
+    }
+
     /*
      * bug 59208
      * Purpose: test all valid boolean-like values



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to