Revision: 6631
http://languagetool.svn.sourceforge.net/languagetool/?rev=6631&view=rev
Author: dominikoeo
Date: 2012-03-23 13:39:38 +0000 (Fri, 23 Mar 2012)
Log Message:
-----------
[fr] fixed bug #3509663: the "espace fine ins?\195?\169cable" (U+202f) was
flagged
as an error before the question mark (?), exclamation mark (!)
semi-colon (;) and colon (:), yet this is strictly speaking the
correct space character to use before those punctuation mark.
So no longer flag this as a mistake.
In practise, the "espace ins?\195?\169cable" is also often used (U+00a0)
so the rule also accepts it.
See: http://unicode.org/udhr/n/notes_fra.html for more information
about what space to use in French typography.
Modified Paths:
--------------
trunk/JLanguageTool/src/java/org/languagetool/rules/fr/QuestionWhitespaceRule.java
Modified:
trunk/JLanguageTool/src/java/org/languagetool/rules/fr/QuestionWhitespaceRule.java
===================================================================
---
trunk/JLanguageTool/src/java/org/languagetool/rules/fr/QuestionWhitespaceRule.java
2012-03-23 12:19:46 UTC (rev 6630)
+++
trunk/JLanguageTool/src/java/org/languagetool/rules/fr/QuestionWhitespaceRule.java
2012-03-23 13:39:38 UTC (rev 6631)
@@ -31,6 +31,8 @@
/**
* A rule that matches spaces before ?,:,; and ! (required for correct French
* punctuation).
+ *
+ * @see http://unicode.org/udhr/n/notes_fra.html
*
* @author Marcin Miłkowski
*/
@@ -69,56 +71,62 @@
if (token.equals("?")) {
msg = "Point d'interrogation est précédé d'une espace fine
insécable.";
// non-breaking space
- suggestionText = " ?";
+ suggestionText = " ?";
fixLen = 1;
} else if (token.equals("!")) {
msg = "Point d'exclamation est précédé d'une espace fine insécable.";
// non-breaking space
- suggestionText = " !";
+ suggestionText = " !";
fixLen = 1;
} else if (token.equals("»")) {
msg = "Le guillemet fermant est précédé d'une espace fine
insécable.";
// non-breaking space
- suggestionText = " »";
+ suggestionText = " »";
fixLen = 1;
} else if (token.equals(";")) {
msg = "Point-virgule est précédé d'une espace fine insécable.";
// non-breaking space
- suggestionText = " ;";
+ suggestionText = " ;";
fixLen = 1;
} else if (token.equals(":")) {
msg = "Deux-points sont précédé d'une espace fine insécable.";
// non-breaking space
- suggestionText = " :";
+ suggestionText = " :";
fixLen = 1;
}
} else {
+ // Stricly speaking, the character before ?!;: should be an
+ // "espace fine insécable" (U+202f). In practise, an
+ // "espace insécable" (U+00a0) is also often used. Let's accept both.
if (token.equals("?") && !prevToken.equals("!")
- && !prevToken.equals("\u00a0")) {
+ && !prevToken.equals("\u00a0") && !prevToken.equals("\u202f")) {
msg = "Point d'interrogation est précédé d'une espace fine
insécable.";
// non-breaking space
- suggestionText = prevToken + " ?";
+ suggestionText = prevToken + " ?";
fixLen = 1;
} else if (token.equals("!") && !prevToken.equals("?")
- && !prevToken.equals("\u00a0")) {
+ && !prevToken.equals("\u00a0") && !prevToken.equals("\u202f")) {
msg = "Point d'exclamation est précédé d'une espace fine insécable.";
// non-breaking space
- suggestionText = prevToken + " !";
+ suggestionText = prevToken + " !";
fixLen = 1;
- } else if (token.equals(";") && !prevToken.equals("\u00a0")) {
+ } else if (token.equals(";")
+ && !prevToken.equals("\u00a0") && !prevToken.equals("\u202f")) {
msg = "Point-virgule est précédé d'une espace fine insécable.";
// non-breaking space
- suggestionText = prevToken + " ;";
+ suggestionText = prevToken + " ;";
fixLen = 1;
- } else if (token.equals(":") && !prevToken.equals("\u00a0")) {
+ } else if (token.equals(":")
+ && !prevToken.equals("\u00a0") && !prevToken.equals("\u202f")) {
msg = "Deux-points précédés d'une espace fine insécable.";
// non-breaking space
- suggestionText = prevToken + " :";
+ suggestionText = prevToken + " :";
fixLen = 1;
- } else if (token.equals("»") && !prevToken.equals("\u00a0")) {
+ } else if (token.equals("»")
+ && !prevToken.equals("\u00a0") && !prevToken.equals("\u202f")) {
msg = "Le guillemet fermant est précédé d'une espace fine
insécable.";
// non-breaking space
- suggestionText = prevToken + " »";
+ suggestionText = prevToken + " »";
fixLen = 1;
}
}
@@ -126,13 +134,13 @@
if (StringTools.isEmpty(token) && prevToken.equals("«")) {
msg = "Le guillemet ouvrant est suivi d'une espace fine insécable.";
// non-breaking space
- suggestionText = "« ";
+ suggestionText = "« ";
fixLen = 1;
} else if (!StringTools.isEmpty(token) && !token.equals("\u00a0")
&& prevToken.equals("«")) {
msg = "Le guillemet ouvrant est suivi d'une espace fine insécable.";
// non-breaking space
- suggestionText = "« ";
+ suggestionText = "« ";
fixLen = 0;
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Languagetool-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-cvs