Revision: 9333
          
http://languagetool.svn.sourceforge.net/languagetool/?rev=9333&view=rev
Author:   dnaber
Date:     2013-02-08 19:21:29 +0000 (Fri, 08 Feb 2013)
Log Message:
-----------
bugfix for sourceforge bug #3603841: don't complain about missing whitespace if 
there is a non-breaking whitespace

Modified Paths:
--------------
    
trunk/languagetool/languagetool-core/src/main/java/org/languagetool/rules/CommaWhitespaceRule.java
    
trunk/languagetool/languagetool-core/src/main/java/org/languagetool/tools/StringTools.java
    
trunk/languagetool/languagetool-core/src/test/java/org/languagetool/rules/CommaWhitespaceRuleTest.java

Modified: 
trunk/languagetool/languagetool-core/src/main/java/org/languagetool/rules/CommaWhitespaceRule.java
===================================================================
--- 
trunk/languagetool/languagetool-core/src/main/java/org/languagetool/rules/CommaWhitespaceRule.java
  2013-02-08 10:04:32 UTC (rev 9332)
+++ 
trunk/languagetool/languagetool-core/src/main/java/org/languagetool/rules/CommaWhitespaceRule.java
  2013-02-08 19:21:29 UTC (rev 9333)
@@ -24,6 +24,7 @@
 
 import org.languagetool.AnalyzedSentence;
 import org.languagetool.AnalyzedTokenReadings;
+import org.languagetool.tools.StringTools;
 
 /**
  * A rule that matches commas and closing parenthesis preceded by whitespace 
and
@@ -60,22 +61,22 @@
     int prevLen = 0;
     for (int i = 0; i < tokens.length; i++) {
       final String token = tokens[i].getToken();
-      final boolean isWhite = tokens[i].isWhitespace() 
-      || tokens[i].isFieldCode();      
+      final boolean isWhitespace = tokens[i].isWhitespace() || 
StringTools.isNonBreakingWhitespace(token)
+              || tokens[i].isFieldCode();
       String msg = null;
       int fixLen = 0;
       String suggestionText = null;
-      if (isWhite && isLeftBracket(prevToken)) {
+      if (isWhitespace && isLeftBracket(prevToken)) {
         msg = messages.getString("no_space_after");
         suggestionText = prevToken;
         fixLen = 1;
-      } else if (!isWhite && prevToken.equals(",") 
+      } else if (!isWhitespace && prevToken.equals(",") 
           && isNotQuoteOrHyphen(token) 
           && containsNoNumber(prevPrevToken) 
           && containsNoNumber(token)
-          && !",".equals(prevPrevToken)) {                          
+          && !",".equals(prevPrevToken)) {
         msg = messages.getString("missing_space_after_comma");
-        suggestionText = ", ";        
+        suggestionText = ", ";
       } else if (prevWhite) {
         if (isRightBracket(token)) {
           msg = messages.getString("no_space_before");
@@ -111,7 +112,7 @@
       }
       prevPrevToken = prevToken;
       prevToken = token;
-      prevWhite = isWhite && !tokens[i].isFieldCode(); //OOo code before 
comma/dot
+      prevWhite = isWhitespace && !tokens[i].isFieldCode(); //OOo code before 
comma/dot
       prevLen = tokens[i].getToken().length();
     }
 

Modified: 
trunk/languagetool/languagetool-core/src/main/java/org/languagetool/tools/StringTools.java
===================================================================
--- 
trunk/languagetool/languagetool-core/src/main/java/org/languagetool/tools/StringTools.java
  2013-02-08 10:04:32 UTC (rev 9332)
+++ 
trunk/languagetool/languagetool-core/src/main/java/org/languagetool/tools/StringTools.java
  2013-02-08 19:21:29 UTC (rev 9333)
@@ -572,12 +572,11 @@
 
   /**
    * Checks if a string contains only whitespace, including all Unicode
-   * whitespace. This differs a bit from the definition of whitespace in Java 7
-   * because of the way we want to interpret Khmer.
+   * whitespace, but not the non-breaking space. This differs a bit from the 
+   * definition of whitespace in Java 7 because of the way we want to 
interpret Khmer.
    * 
-   * @param str
-   *          String to check
-   * @return true if the string is whitespace-only.
+   * @param str String to check
+   * @return true if the string is whitespace-only
    */
   public static boolean isWhitespace(final String str) {
     if ("\u0002".equals(str) // unbreakable field, e.g. a footnote number in 
OOo
@@ -597,6 +596,14 @@
     }
     return false;
   }
+  
+  /**
+   * Checks if a string is the non-breaking whitespace (<code>\u00A0</code>).
+   * @since 2.1
+   */
+  public static boolean isNonBreakingWhitespace(final String str) {
+    return "\u00A0".equals(str);
+  }
 
   /**
    * 

Modified: 
trunk/languagetool/languagetool-core/src/test/java/org/languagetool/rules/CommaWhitespaceRuleTest.java
===================================================================
--- 
trunk/languagetool/languagetool-core/src/test/java/org/languagetool/rules/CommaWhitespaceRuleTest.java
      2013-02-08 10:04:32 UTC (rev 9332)
+++ 
trunk/languagetool/languagetool-core/src/test/java/org/languagetool/rules/CommaWhitespaceRuleTest.java
      2013-02-08 19:21:29 UTC (rev 9333)
@@ -48,6 +48,7 @@
     assertMatches("This is $1,000,000.", 0);
     assertMatches("This is 1,5.", 0);
     assertMatches("This is a ,,test''.", 0);
+    assertMatches("This is,\u00A0really,\u00A0non-breaking whitespace.", 0);
     //test OpenOffice field codes:
     assertMatches("In his book,\u0002 Einstein proved this to be true.", 0);
 

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013 
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
_______________________________________________
Languagetool-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-commits

Reply via email to