script/js/fixtures/example-rules-new.xml (604 lines of code) (raw):

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/print.xsl" ?> <?xml-stylesheet type="text/css" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.css" title="Easy editing stylesheet" ?> <!-- American English Grammar and Typo Rules for LanguageTool See tagset.txt for the meaning of the POS tags Copyright (C) 2012 Marcin Miłkowski (http://www.languagetool.org) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA --> <!--suppress CheckTagEmptyBody --> <!DOCTYPE rules [ <!ENTITY apostrophe "['’`´‘ʻ]"> <!ENTITY weekdays "Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday"> <!ENTITY abbrevWeekdays "Mon|Mo|Tue|Tu|Wed|We|Thu|Th|Fri|Fr|Sat|Sa|Sun|Su"> <!ENTITY months "January|February|March|April|May|June|July|August|September|October|November|December"> <!ENTITY abbrevMonths "Jan|Feb|Mar|Apr|Jun|Jul|Aug|Sep|Sept|Oct|Nov|Dec"> <!ENTITY hyphen "(?:[-‑])"> <!ENTITY subordinating_conjunctions "after|although|as|because|before|if|lest|like|once|since|than|that|though|unless|until|whenever|where|whereas|wherever|whether|while|why"><!-- #2988 --> <!ENTITY ambiguous_date ' <token regexp="yes">0?[1-9]|1[0-2]</token> <token>/</token> <token regexp="yes">0?[1-9]|1[0-2]</token> <token>/</token> <token regexp="yes">\d\d\d\d</token> '> <!-- "7 October 2014" and "7th October 2014" --> <!ENTITY date_dmy ' <token regexp="yes">\d\d?(th)?</token> <token regexp="yes">&months;|&abbrevMonths;</token> <token regexp="yes">\d\d\d\d</token> '> <!ENTITY date_dmy_skip ' <token regexp="yes">\d\d?</token> <token regexp="yes">&months;|&abbrevMonths;</token> <token regexp="yes" skip="-1">\d\d\d\d</token> '> <!-- "October 7, 2014" --> <!ENTITY date_mdy ' <token regexp="yes">&months;|&abbrevMonths;</token> <token regexp="yes">\d\d?</token> <token>,</token> <token regexp="yes">\d\d\d\d</token> '> <!ENTITY date_mdy_skip ' <token regexp="yes">&months;|&abbrevMonths;</token> <token regexp="yes">\d\d?</token> <token>,</token> <token regexp="yes" skip="-1">\d\d\d\d</token> '> <!-- "31/10/2014" --> <!ENTITY date_dmy_numbers ' <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token> <token>/</token> <token regexp="yes">0?[1-9]|1[0-2]</token> <token>/</token> <token regexp="yes">\d\d\d\d</token> '> <!ENTITY date_dmy_numbers_skip ' <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token> <token>/</token> <token regexp="yes">0?[1-9]|1[0-2]</token> <token>/</token> <token regexp="yes" skip="-1">\d\d\d\d</token> '> <!-- "10/31/2014" --> <!ENTITY date_mdy_numbers ' <token regexp="yes">0?[1-9]|1[0-2]</token> <token>/</token> <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token> <token>/</token> <token regexp="yes">\d\d\d\d</token> '> <!ENTITY date_mdy_numbers_skip ' <token regexp="yes">0?[1-9]|1[0-2]</token> <token>/</token> <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token> <token>/</token> <token regexp="yes" skip="-1">\d\d\d\d</token> '> ]> <rules lang="en-US" xsi:noNamespaceSchemaLocation="../../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!-- ====================================================================== --> <!-- Possible typos --> <!-- ====================================================================== --> <category id="TYPOS" name="Possible Typo" type="misspelling"> <rule id="FOR_EVER_US" name="for ever (forever)"> <antipattern> <token>ever</token> <token regexp="yes">since|one|body|thing|glades?|bloomers?|changing</token> </antipattern> <antipattern> <token>ever</token> <token postag="JJR" /> </antipattern> <antipattern> <token>ever</token> <token regexp="yes">and|&amp;|or</token> <token>ever</token> </antipattern> <pattern> <token>for</token> <token>ever</token> </pattern> <message>The adverb <suggestion>forever</suggestion> is spelled as one word.</message> <url>https://www.merriam-webster.com/dictionary/forever</url> <example correction="forever">Your texts are stored <marker>for ever</marker>.</example> </rule> <rule id="TRAD_TRADE" name="trad vs trade"> <antipattern> <token skip="5">trad</token> <token regexp="yes">music|jazz|musicians?|componists?|bands?|sessions?|rock|festivals?|singers?|climbing|British|crowds?|ballads?|goth|girls?|wife|wives</token> </antipattern> <pattern> <token regexp="yes" case_sensitive="yes">[Tt]rad</token> </pattern> <message>Did you mean <suggestion>\1e</suggestion> or <suggestion>traditional</suggestion>?</message> <example correction="trade|traditional">I will <marker>trad</marker> my shares on the open market.</example> </rule> <rulegroup id="THEE" name="thee (the)"> <antipattern><!-- https://en.wikipedia.org/wiki/Megan_Thee_Stallion --> <token regexp="yes">Megh?an</token> <token>Thee</token> </antipattern> <antipattern><!-- https://en.wikipedia.org/wiki/Fare_Thee_Well --> <token>fare</token> <token>thee</token> <token>well</token> </antipattern> <antipattern><!-- https://en.wikipedia.org/wiki/America_(My_Country,_%27Tis_of_Thee) --> <token>tis</token> <token>of</token> <token>thee</token> </antipattern> <antipattern> <token>thee</token> <token postag="MD|CC|IN|PRP.*|W.*|PCT" postag_regexp="yes" /><!-- word types uncommon after the article "the" --> </antipattern> <rule> <pattern> <marker> <token regexp="yes" case_sensitive="yes">[Tt]hee</token> </marker> <token postag="RB" min="0" /> <token postag="JJ.*" postag_regexp="yes" min="0" /> <token postag="NNP?S" postag_regexp="yes" /> </pattern> <message>Did you actually mean the archaic form of 'you', or did you maybe mean <suggestion>the</suggestion> or <suggestion>three</suggestion>?</message> <example correction="the|three">She is <marker>thee</marker> miles away.</example> <example>My Country, 'Tis of Thee!</example> </rule> <rule> <pattern> <marker> <token regexp="yes" case_sensitive="yes">[Tt]hee</token> </marker> <token postag="RB" min="0" /> <token postag="JJ.*" postag_regexp="yes" min="0" /> <token postag="NNP|NN|NN:UN?" postag_regexp="yes" /> </pattern> <message>Did you actually mean the archaic form of 'you', or did you maybe mean <suggestion>the</suggestion>?</message> <example correction="the">She is <marker>thee</marker> best of all.</example> <example correction="the">She is <marker>thee</marker> mother of those children.</example> <example>Megan Thee Stallion is an American pop singer.</example> </rule> </rulegroup> <rule id="STREET_LIGHTS_COMPOUND" name="street light (streetlight)"> <pattern> <token>street</token> <token regexp="yes">lights?|lamps?</token> </pattern> <message>In American English this noun is spelled as one word.</message> <suggestion>street<match no="2" case_conversion="alllower" /></suggestion> <url>https://www.merriam-webster.com/dictionary/streetlight</url> <example correction="streetlights">I only go out once the <marker>street lights</marker> are turned on.</example> </rule> <rule id="SHIT_SHOW_COMPOUND" name="shit show (shitshow)"> <pattern> <token regexp="yes">an?</token> <token postag="JJ" min="0" /> <marker> <token>shit</token> <token>show</token> </marker> </pattern> <message>The noun <suggestion>shitshow</suggestion> is spelled as one word.</message> <url>https://www.lexico.com/definition/shitshow</url> <example correction="shitshow">The TV debate was an absolute <marker>shit show</marker>.</example> </rule> <rule id="HOME_COMPOUNDS_EN_US" name="home town (hometown)"> <pattern> <token>home</token> <token regexp="yes">towns?</token> </pattern> <message>The word <suggestion>home<match no="2" case_conversion="alllower" /></suggestion> is normally spelled as one word.</message> <example correction="hometown">He came to visit her <marker>home town</marker>.</example> </rule> <rule id="ANY_MORE" name="any more (anymore)"> <antipattern><!-- Tom could not have been any more helpful. --> <token>more</token> <token postag="JJ"/> </antipattern> <antipattern><!-- #2985 any more random lag spikes --> <token chunk="B-NP-plural">any</token> <token chunk="I-NP-plural">more</token> <token min="0" max="4" chunk="I-NP-plural"/> <token postag="NNS"/> </antipattern> <antipattern><!-- #3057 have any more unless --> <token postag_regexp="yes" postag="VB.*"/> <token>any</token> <token>more</token> <token regexp="yes">&subordinating_conjunctions;</token> </antipattern> <antipattern><!-- #3057 want any more because --> <token postag_regexp="yes" postag="VB.*"/> <token>any</token> <token>more</token> <token postag="CC"/> </antipattern> <antipattern><!-- if you need any more, let me know --> <token inflected="yes" postag="V.*" postag_regexp="yes" regexp="yes">need|want|demand|require</token> <token>any</token> <token>more</token> </antipattern> <antipattern><!-- I couldn't ask any more of him --> <token postag="V.*" postag_regexp="yes"/> <token>any</token> <token>more</token> <token regexp="yes">from|of</token> <token postag="NNP|PRP" postag_regexp="yes"/> </antipattern> <pattern> <marker> <token>any</token> <token>more <exception scope="next" regexp="yes">of|than|often</exception> <exception scope="next" postag="NN.*" postag_regexp="yes"/> </token> </marker> </pattern> <message>Did you mean the adverb <suggestion>\1\2</suggestion>?</message> <url>https://www.merriam-webster.com/dictionary/anymore</url> <short>American English, possible typo</short> <example correction="anymore">I couldn't find my way around it <marker>any more</marker>.</example> <example correction="anymore">You're not sure <marker>any more</marker>, are you?</example> <example correction="anymore">Stop submitting the results, the test will not be completed <marker>any more</marker>.</example><!-- #2309. --> <example correction="anymore">Stop submitting the results, the test will not be completed <marker>any more</marker></example><!-- #2309. No full stop. --> <example correction="anymore">You don't have to take care of them <marker>any more</marker> </example><!-- #2779. Extra spaces --> <example>I couldn't find my way around it <marker>anymore</marker>.</example> <example>If we see that your plan isn't a good fit anymore in the long run, we'd contact you.</example><!-- #2368 --> <example>But I don't think it's any more likely than a farmer harvesting guano...</example><!-- #2717 --> <example>Do it so that there aren't any more random lag spikes.</example><!-- #2985 --> <example>There aren't any more random spikes.</example><!-- #2985 --> <example>We probably should tell him that we don't have any more unless New Albany is enough.</example><!-- #3057 --> <example>Tell her that we don't really want any more because we have sufficient.</example><!-- #3057 --> <example>If we had bought any more while prices were high, we would have lose money.</example><!-- #3057 --> <example>I know that Tom isn't any more likely to do that today than he was yesterday.</example> <example>Tom could not have been any more helpful.</example> <example>Those people do not visit emergency rooms any more often than the general population.</example> <example>I'll let you know if I need any more from you.</example> <example>If you ask any more of me, I won't be able to comply.</example> </rule> </category> <category id="AMERICAN_ENGLISH_STYLE" name="American English Style" type="style"> <rule id="ETC_PERIOD" name="period after abbreviation 'etc.'"> <antipattern> <token>etc</token> <token regexp="yes">/|_|…|#</token> </antipattern> <pattern> <marker> <token case_sensitive="yes">etc</token> </marker> <token><exception>.</exception></token> </pattern> <message>A period is needed after the abbreviation 'etc.'</message> <suggestion>etc.</suggestion> <url>https://www.merriam-webster.com/dictionary/etc.</url> <example correction="etc.">Tennis, soccer, baseball, <marker>etc</marker> are outdoor games.</example> <example correction="etc.">I use things like Java, Microsoft, Unix, <marker>etc</marker> at work.</example> <example correction="etc.">Make sure you bring your fishing pole, tackle, bait, <marker>etc</marker> as we will not make any stops.</example> <example correction="etc.">No check engine lights <marker>etc</marker>?</example> <example correction="etc.">Removed the alarm listener and replaced with lights, <marker>etc</marker>, etc.</example> <example>Process: 4264 ExecStart=/etc/rc.d/init.d/newrelic-daemon start (code=exited, status=0/SUCCESS)</example> <example>DND_ETC__List1</example> <example>Device Handlers, etc…</example> <example>root@de1lvapp098p:/etc# ls -l /dev/disk/by-uuid</example> <example>Diversity Dick Liebert reported that questions for the ETC survey are currently being developed.</example> </rule> <rule id="MISSING_COMMA_AFTER_YEAR" name="Potentially missing comma after year"> <pattern> <token regexp="yes">&months;</token> <token regexp="yes">[0123]?[0-9]</token> <token min="0">,</token> <marker> <token regexp="yes">[0-9]{4}</token> </marker> <token regexp="yes">[a-z]+</token> </pattern> <message>Some style guides suggest that commas should set off the year in a month-day-year date.</message> <suggestion>\4,</suggestion> <url>http://www.thepunctuationguide.com/comma.html#dates</url> <short>Potentially missing comma</short> <example correction="2011,">The meeting scheduled for July 10, <marker>2011</marker> was canceled.</example> <example>My birthday is October 8, <marker>1983,</marker> but I usually do not celebrate.</example> </rule> <rulegroup id="US_ONE_ENTITY" name="The United States are (is) 245 years old" default="temp_off"> <rule> <!-- 'United States', SENT_START --> <antipattern> <token>united</token> <token>states</token> <token postag="VBD" chunk="B-VP"> <exception>broadcast</exception> </token> </antipattern> <pattern> <token postag="SENT_START" /> <token min="0">the</token> <token>united</token> <token>states</token> <marker> <token postag="VBP?" postag_regexp="yes" chunk="B-VP" /> </marker> </pattern> <message>In American English, '\2 \3 \4' is a singular entity and therefore requires a third-person verb form.</message> <suggestion><match no="5" postag="VBZ" /></suggestion> <example correction="is">The United States <marker>are</marker> 245 years old.</example> <example correction="broadcasts">The United States <marker>broadcast</marker> a new radio message announcing a $25 million cash reward for information leading to Osama bin Laden's location or capture.</example> <example>The United States fell 6 places to a ranking of only 22 in Transparency International's‘s list of countries by corruption.</example> <example>The United States saw the Chinese theater as a means to tie up a large number of Japanese troops, as well as being a location for American airbases from which to strike the Japanese home islands.</example> </rule> <rule> <!-- 'the US', SENT_START --> <antipattern> <token case_sensitive="yes">US</token> <token postag="VBD" chunk="B-VP"> <exception>broadcast</exception> </token> </antipattern> <pattern> <token postag="SENT_START" /> <token>the</token> <token case_sensitive="yes">US</token> <marker> <token postag="VBP?" postag_regexp="yes" chunk="B-VP" /> </marker> </pattern> <message>In American English, '\2 \3' is a singular entity and therefore requires a third-person verb form.</message> <suggestion><match no="4" postag="VBZ" /></suggestion> <example correction="is">The US <marker>are</marker> 245 years old.</example> </rule> <rule> <!-- 'the U.S.', SENT_START --> <antipattern> <token case_sensitive="yes">S</token> <token>.</token> <token postag="VBD" chunk="B-VP"> <exception>broadcast</exception> </token> </antipattern> <pattern> <token postag="SENT_START" /> <token>the</token> <token case_sensitive="yes">U</token> <token>.</token> <token case_sensitive="yes">S</token> <token>.</token> <marker> <token postag="VBP?" postag_regexp="yes" chunk="B-VP" /> </marker> </pattern> <message>In American English, 'The U.S.' is a singular entity and therefore requires a third-person verb form.</message> <suggestion><match no="7" postag="VBZ" /></suggestion> <example correction="is">The U.S. <marker>are</marker> 245 years old.</example> </rule> </rulegroup> <rulegroup id="TOILET" name="offensive word 'toilet'"> <rule> <pattern> <token>toilet</token> <token regexp='yes' min="0">rooms?</token> </pattern> <message>This expression can be considered mildly offensive (especially in Canadian and American English).</message> <suggestion>rest\2</suggestion> <suggestion>wash\2</suggestion> <suggestion>bath\2</suggestion> <suggestion>powder \2</suggestion> <url>http://www.englishteachermelanie.com/vocabulary-do-not-call-it-toilet/</url> <example correction="restrooms|washrooms|bathrooms|powder rooms">Have you seen the <marker>toilet rooms</marker>?</example> </rule> <rule> <pattern> <token regexp="yes">go|visit|on|use</token> <token min="0">to</token> <token regexp="yes">the|a</token> <marker> <token> toilet <exception scope="next" regexp="yes">game|song|paper|bowls?|bar|store|seat|plunger|flange|water</exception> </token> </marker> </pattern> <message>This expression can be considered mildly offensive (especially in Canadian and American English).</message> <suggestion>restroom</suggestion> <suggestion>washroom</suggestion> <suggestion>bathroom</suggestion> <suggestion>powder room</suggestion> <url>http://www.englishteachermelanie.com/vocabulary-do-not-call-it-toilet/</url> <example correction="restroom|washroom|bathroom|powder room">I need to go to the <marker>toilet</marker>.</example> </rule> </rulegroup> </category> <category id="BRITISH_ENGLISH" name="British English phrases" type="locale-violation"> <rule id="AUBERGINE" name="eggplant/aubergine"> <pattern> <token regexp="yes">aubergines?</token> </pattern> <message>This term is chiefly British English. Consider a replacement.</message> <suggestion><match no="1" regexp_match="(?i)aubergine" regexp_replace="eggplant" /></suggestion> <url>https://www.merriam-webster.com/dictionary/aubergine</url> <example correction="eggplants">He loved to eat <marker>aubergines</marker> for breakfast.</example> </rule> <rule id="GROUND_FIRST_FLOOR" name="ground floor/first floor"> <pattern> <token>ground</token> <token regexp="yes">floors?</token> </pattern> <message>This word is British English. Did you mean <suggestion>first \2</suggestion>?</message> <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url> <example correction="first floor">The room is on the <marker>ground floor</marker>.</example> <example correction="first floors">Historic Buildings: insulating solid <marker>ground floors</marker>.</example> <example>The room is on the <marker>first</marker> floor.</example> </rule> <rule id="MASTERS_DISSERTATION_THESIS" name="master's dissertation (thesis)"> <pattern> <token>master</token> <token spacebefore="no">'s</token> <token inflected="yes">dissertation</token> </pattern> <message>In the US, the word '\3' is usually for doctoral degrees. Did you mean <suggestion>\1\2 <match no="3" postag="(NN.*)" postag_replace="$1">thesis</match></suggestion>?</message> <url>https://en.wikipedia.org/wiki/Thesis#United_States</url> <short>BrE/AmE: dissertation/thesis</short> <example correction="master's thesis">Her <marker>master's dissertation</marker> is excellent.</example> <example correction="Master's theses"><marker>Master’s dissertations</marker> are not easy to write.</example> <example correction="master's thesis">Example sentence with no full stop: <marker>master's dissertation</marker></example> </rule> <rule id="SI_UNITS_OF_MEASUREMENT_ADJECTIVES_BRE" name="1-litre/1-liter"> <pattern> <token regexp="yes">([0-9]+-)(yotta|zetta|exa|peta|tera|giga|mega|kilo|hecto|deca|deci|centi|milli|micro|nano|pico|femto|atto|zepto|yocto)?(gramme|litre|metre)<exception postag="NNP"/></token> </pattern> <message>The word '<match no="1"/>' is an adjective (SI unit of measurement), but the spelling is not correct American English.</message> <short>AmE/BrE: SI units (adjectives)</short> <example correction="">Use a <marker>6-millimetre</marker> bolt.</example> <example>Use a <marker>6-millimeter</marker> bolt.</example> <example>Do not find incorrect English: use a <marker>10-millimetres</marker> bolt.</example> <example correction="">Use a <marker>10-metre</marker> rope.</example> <example correction="">The 4.<marker>6-centigramme</marker> difference is not a problem.</example> <example correction="">Also find typgoraphic errors: a 5.7.<marker>8-femtogramme</marker> difference is not important.</example> </rule> <rule id="AT_THE_WEEKEND" name="Collocation: at the weekend"><!-- Premium #983 --> <!-- Modified. Originally created by Nicholas Walker (Bokomaru), 2017-11-14 --> <pattern> <marker> <token>at</token> <token>the</token> <token>weekend</token> </marker> <token postag="SENT_END"/> </pattern> <message>The phrase '\1 \2 \3' is a British English expression, which is used the same way as <suggestion>on \2 \3</suggestion> in American English.</message> <url>http://learnersdictionary.com/qa/Over-the-weekend-on-the-weekend-at-the-weekend</url> <short>Collocation error</short> <example correction="on the weekend">I like to play soccer <marker>at the weekend</marker>.</example> </rule> <rule id="IN_FUTURE" name="Missing definite article referring to a time period"> <pattern> <marker> <token>in</token> <token>future</token> </marker> <token regexp='yes'>[,\.:;]</token> </pattern> <message>The phrase '\1 \2' is British English. Did you mean: <suggestion><match no="1"/> the <match no="2"/></suggestion>?</message> <url>https://www.merriam-webster.com/dictionary/in%20future</url> <short>Missing definite article</short> <example correction="In the future"><marker>In future</marker>, we will do better.</example> <example><marker>In the future</marker>, we will do better.</example> </rule> <rule id="HAVE_A_SHOWER" name="have a shower → take a shower"> <antipattern> <token regexp="yes">\w*(room|house|home)$</token> <token /> </antipattern> <pattern> <marker> <token inflected="yes">have</token> </marker> <token min="0" postag="RB" /> <token postag_regexp="yes" postag="DT|CD" /> <token min="0" postag_regexp="yes" postag="JJ|RB"><exception regexp="yes">baby|steam|spacious|big|large|small</exception></token> <token regexp="yes" chunk_re="E-NP.*">shower|bath</token> </pattern> <message>In American English, the verb <suggestion><match no="1" postag="VB.*">take</match></suggestion> is usually used before '\5'.</message> <example correction="took">He <marker>had</marker> a shower before breakfast.</example> <example correction="takes">He <marker>has</marker> a shower every day.</example> <example correction="taken">I haven't <marker>had</marker> a bath in years.</example> <example>I haven't taken a bath in years.</example> <example>They have a baby shower.</example> <example>I have two really cold showers per day.</example> <example>If your home has a shower</example> <example>My bathroom has a spacious shower.</example> </rule> </category> <category id="SEMANTICS" name="Semantics" type="inconsistency"> <rulegroup id="DATE_FUTURE_VERB_PAST_US" name="Future date, but verb in past tense (US)"> <rule> <!-- We have visited the client on 10/27/2040 --> <pattern> <token inflected="yes" postag="VBD?" postag_regexp="yes" skip="-1">have</token> <token postag="VBN" skip="-1" chunk_re=".-VP"> <exception>scheduled</exception> <exception regexp="yes">wed|sat</exception> <exception scope='next' regexp='yes'>before|until|will</exception></token> <marker> &date_mdy_numbers; </marker> </pattern> <filter class="org.languagetool.rules.en.FutureDateFilter" args="year:\7 month:\3 day:\5"/> <message>The given date is in the future, but the verb is in past tense.</message> <example correction="">We have visited the client on <marker>10/27/2040</marker>.</example> <example correction="">I had already informed the customer on <marker>10/27/2040</marker>.</example> <example>We have visited the client on <marker>10/27/2010</marker>.</example> <example>I had already informed the customer on <marker>10/27/2010</marker>.</example> <example>We will inform the client on 10/27/2010.</example> <example>He promised to do it before 30/08/2020.</example> </rule> <rule> <!-- On 10/27/2040, we have visited the client --> <pattern> <token> <exception regexp='yes'>before|until</exception></token> <marker> &date_mdy_numbers_skip; </marker> <token inflected="yes" postag="VBD?" postag_regexp="yes" skip="-1">have</token> <token postag="VBN" skip="-1" chunk_re=".-VP"> <exception regexp="yes">wed|sat</exception> </token> </pattern> <filter class="org.languagetool.rules.en.FutureDateFilter" args="year:\6 month:\2 day:\4"/> <message>The given date is in the future, but the verb is in past tense.</message> <example correction="">On <marker>10/27/2040</marker>, we have visited the client.</example> <example correction="">On <marker>10/27/2040</marker>, I had already informed the customer.</example> <example>On <marker>10/27/2010</marker>, we have visited the client.</example> <example>On <marker>10/27/2010</marker>, I had already informed the customer.</example> <example>On 10/27/2010, we will inform the client.</example> <example>He promised to do it before 30/08/2020.</example> </rule> <rule> <!-- We visited the client on 27/10/2040 --> <pattern> <token postag="VBD" skip="-1" chunk_re=".-VP"> <exception scope='next' regexp='yes'>before|until|will</exception> <exception regexp="yes">wed|sat</exception> </token> <marker> &date_mdy_numbers; </marker> </pattern> <filter class="org.languagetool.rules.en.FutureDateFilter" args="year:\6 month:\2 day:\4"/> <message>The given date is in the future, but the verb is in past tense.</message> <example correction="">We visited the client on <marker>10/27/2040</marker>.</example> <example correction="">I already informed the customer on <marker>10/27/2040</marker>.</example> <example>We visited the client on <marker>10/27/2010</marker>.</example> <example>I already informed the customer on <marker>10/27/2010</marker>.</example> <example>We will inform the client on 10/27/2010.</example> <example>He promised to do it before 30/08/2020.</example> </rule> <rule> <!-- On 27/10/2040, we visited the client --> <pattern> <token> <exception regexp='yes'>before|until</exception></token> <marker> &date_mdy_numbers_skip; </marker> <token postag="VBD" skip="-1" chunk_re=".-VP"> <exception regexp="yes">wed|sat</exception> </token> </pattern> <filter class="org.languagetool.rules.en.FutureDateFilter" args="year:\6 month:\2 day:\4"/> <message>The given date is in the future, but the verb is in past tense.</message> <example correction="">On <marker>10/27/2040</marker>, we visited the client.</example> <example correction="">On <marker>10/27/2040</marker>, I already informed the customer.</example> <example>On <marker>10/27/2010</marker>, we visited the client.</example> <example>On <marker>10/27/2010</marker>, I already informed the customer.</example> <example>On 10/27/2010, we will inform the client.</example> <example>He promised to do it before 30/08/2020.</example> </rule> </rulegroup> </category> <category id="STYLE" name="Style" type="style"> <rule id="HAPPY_CHRISTMAS" name="Happy (Merry) Christmas" tags="picky"> <antipattern> <token>christmas</token> <token regexp="yes">holidays?|days?|birthday|eve</token> </antipattern> <pattern> <token>happy</token> <token>christmas</token> </pattern> <message>It's more common to wish someone <suggestion>Merry Christmas</suggestion>.</message> <url>https://www.countryliving.com/life/a37128/origin-of-merry-christmas/</url> <example correction="Merry Christmas">I wish you a <marker>happy christmas</marker>.</example> <example>Happy Christmas Days!</example> </rule> <rule id="THRU" name="thru / through"> <antipattern> <token>thru</token> <token regexp="yes">axles?</token> </antipattern> <pattern> <token>thru</token> </pattern> <message>The word 'thru' is informal. Consider replacing it with <suggestion>through</suggestion>.</message> <url>https://www.merriam-webster.com/dictionary/thru</url> <example correction="through">I'm going <marker>thru</marker> hell.</example> <example>A thru axle (TA) is a wheel attachment system that secures a wheel on a hub between a pair of dropouts on a bicycle frame or fork.</example> </rule> </category> </rules>