Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-topy for openSUSE:Factory checked in at 2021-02-19 23:45:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-topy (Old) and /work/SRC/openSUSE:Factory/.python-topy.new.28504 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-topy" Fri Feb 19 23:45:55 2021 rev:5 rq:873823 version:1.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-topy/python-topy.changes 2021-01-13 18:36:26.546347464 +0100 +++ /work/SRC/openSUSE:Factory/.python-topy.new.28504/python-topy.changes 2021-02-19 23:46:22.607428773 +0100 @@ -1,0 +2,6 @@ +Fri Feb 19 15:29:48 UTC 2021 - andy great <andythe_gr...@pm.me> + +- Update to version 1.1.0. + * Added colors to output. + +------------------------------------------------------------------- Old: ---- topy-1.0.0.tar.gz New: ---- topy-1.1.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-topy.spec ++++++ --- /var/tmp/diff_new_pack.38jJio/_old 2021-02-19 23:46:23.219429373 +0100 +++ /var/tmp/diff_new_pack.38jJio/_new 2021-02-19 23:46:23.219429373 +0100 @@ -19,13 +19,16 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-topy -Version: 1.0.0 +Version: 1.1.0 Release: 0 Summary: Tool for fixing typos in text using regular expressions License: MIT AND CC-BY-SA-4.0 Group: Development/Languages/Python URL: https://github.com/intgr/topy Source: https://github.com/intgr/topy/archive/%{version}.tar.gz#/topy-%{version}.tar.gz +BuildRequires: %{python_module beautifulsoup4} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module regex >= 2016.07.14} BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros @@ -34,11 +37,6 @@ Requires(post): update-alternatives Requires(postun): update-alternatives BuildArch: noarch -# SECTION test requirements -BuildRequires: %{python_module beautifulsoup4} -BuildRequires: %{python_module pytest} -BuildRequires: %{python_module regex >= 2016.07.14} -# /SECTION %python_subpackages %description ++++++ topy-1.0.0.tar.gz -> topy-1.1.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topy-1.0.0/.travis.yml new/topy-1.1.0/.travis.yml --- old/topy-1.0.0/.travis.yml 2020-09-08 21:33:10.000000000 +0200 +++ new/topy-1.1.0/.travis.yml 2021-02-03 20:53:31.000000000 +0100 @@ -3,10 +3,10 @@ dist: focal # Versions are deliberately out of order to get a diverse sample first python: - - 3.8 - - 3.5 + - 3.9 - 3.6 - 3.7 + - 3.8 - pypy3 cache: pip install: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topy-1.0.0/README.rst new/topy-1.1.0/README.rst --- old/topy-1.0.0/README.rst 2020-09-08 21:33:10.000000000 +0200 +++ new/topy-1.1.0/README.rst 2021-02-03 20:53:31.000000000 +0100 @@ -3,9 +3,9 @@ .. image:: https://badge.fury.io/py/topy.svg :target: https://badge.fury.io/py/topy -.. image:: https://travis-ci.org/intgr/topy.svg?branch=master +.. image:: https://travis-ci.com/intgr/topy.svg?branch=master :alt: Travis CI - :target: https://travis-ci.org/intgr/topy + :target: https://travis-ci.com/github/intgr/topy Topy (anagram of "typo") is a Python script to fix typos in text, using rulesets developed by the RegExTypoFix_ project from Wikipedia. The English ruleset is included with Topy and is used by default. Other rulesets can be manually @@ -13,7 +13,7 @@ .. _RegExTypoFix: https://en.wikipedia.org/wiki/Wikipedia:AutoWikiBrowser/Typos -Topy works with Python 3.5-3.8. +Topy works with Python 3.6-3.9. The easiest way to install it is using pip:: @@ -31,7 +31,16 @@ specify custom ruleset file to use -d RULE, --disable=RULE disable rules by name + --color=WHEN, --colour=WHEN + colorize the output; WHEN can be 'never', 'always', or + 'auto' +For example, if you want to integrate topy in your CI pipeline, you can do something like:: + + sh -c "git ls-files | xargs topy --quiet --apply --; git --no-pager diff --exit-code" + +The line above will check all files tracked by git, apply fixes to them and fail if any changes are applied. +If no changes are to be applied, the command returns success. Resources --------- @@ -44,6 +53,17 @@ Changelog --------- +1.1.0 (2021-02-03) + +* Added colors to output. Thanks to Brian de Buiteach (@debuiteb) (#25) +* Python 3.5 support is removed to allow newer syntax (#25) + +1.0.1 (2021-01-30) + +* Updated bundled ruleset from Wikipedia (#29) +* Python 3.9 is now officially supported and tested in CI (#27) +* Migrated tests from travis-ci.org to travis-ci.com (#28) + 1.0.0 (2020-09-08) * Updated bundled ruleset from Wikipedia (#23) @@ -111,4 +131,3 @@ .. _`Wikipedia AutoWikiBrowser/Typos`: https://en.wikipedia.org/wiki/Wikipedia:AutoWikiBrowser/Typos .. _CC-BY-SA: https://creativecommons.org/licenses/by-sa/3.0/ - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topy-1.0.0/setup.py new/topy-1.1.0/setup.py --- old/topy-1.0.0/setup.py 2020-09-08 21:33:10.000000000 +0200 +++ new/topy-1.1.0/setup.py 2021-02-03 20:53:31.000000000 +0100 @@ -4,7 +4,7 @@ setup( name='topy', - version='1.0.0', + version='1.1.0', # PyPI metadata author='Marti Raudsepp', @@ -23,10 +23,10 @@ 'Intended Audience :: Developers', 'License :: OSI Approved :: MIT License', # Until we have a test suite we're conservative about Python version compatibility claims - 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', 'Topic :: Documentation', 'Topic :: Software Development :: Quality Assurance', 'Topic :: Text Processing :: Filters', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topy-1.0.0/topy/retf.txt new/topy-1.1.0/topy/retf.txt --- old/topy-1.0.0/topy/retf.txt 2020-09-08 21:33:10.000000000 +0200 +++ new/topy-1.1.0/topy/retf.txt 2021-02-03 20:53:31.000000000 +0100 @@ -8,6 +8,36 @@ ===New additions=== {{hatnote|For ease of correcting errors in newly added rules, please add new rules at the top of this section or its appropriate sub-section.}} <syntaxhighlight lang="xml"> +<Typo word="omit" find="\b([oO])mmi(?=t)t?(t(?:ed|ing)|s)\b" replace="$1mit$2"/> +<Typo word="AdSense" find="\b[Aa]dsense\b" replace="AdSense"/> +<Typo word="Publishers Weekly" find="\bPublisher([????????????????????????`']s|s[????????????????????????`'])? Weekly\b" replace="Publishers Weekly"/> +<Typo word="km??" find="\b([\d\.]+)(?:\s*|\ )km\^2\b" replace="$1 km<sup>2</sup>"/> +<Typo word="Academy/Emmy/Grammy/Tony Award" find="\b(Academy|Emmy|Grammy|Tony)-[Aa]ward\b" replace="$1 Award"/> +<Typo word="Teesside" find="\bTeeside(r?)\b" replace="Teesside$1"/> +<Typo word="mixed fractions with hyphen" find="\b(\d)[-\s]+1/([24])[-\s]+(?=(?:day|hour|inch|mile|minute|month|pound|store?y|ton|week|year)\b)" replace="{{frac|$1|1|$2}}-"/> +<Typo word="mixed fractions, no hyphen" find="\b(\d)[-\s]+1/([24])[-\s]+(?=(?:day|hour|inch|mile|minute|month|pound|storey|storie|ton|week|year)s\b)" replace="{{frac|$1|1|$2}} "/> +<Typo word="wood-frame" find="\b([Ww]ood|[Tt]imber)[\s??????]+(framed?)(?=\s+(?:addition|aircraft|buildings?|cabins?|churche?s?|construction|cottages?|courthouse|ell|factory|gabled|garage|homes?|hotel|houses?|metal|schools?|schoolhouses?|sheds?|structures?|tower|vernacular)\b)" replace="$1-$2"/> +<Typo word="Ciudad" find="\b([Cc])uidad\b(?<!Fabrice Cuidad)" replace="$1iudad"/> +<Typo word="United States" find="\b[uU]n(?:ite?|[it]e)[ds]\s*[sS]t(?:ate?|[at]e)[ds]\b(?<!United States)" replace="United States"/> +<Typo word="well-being (2)" find="\bwell\s+being(?=(?:[,;\.]|\s+(?:and|of|through|to|when)\s))" replace="well-being"/> +<Typo word="well-being" find="\bwell\s+being\b(?<=\b(?:community|economic|emotional|financial|general|her|his|human|its|mental|of|one's|overall|own|physical|psychological|social|spiritual|subjective|their)\s+well\s+being)" replace="well-being"/> +<Typo word="bachelor's degree (2)" find="\b[Bb]achelors(?<=\s(?:complet(?:ed?|ing)|did|do|ear(?:n|ned|ning)|finis(?:h|hed|hing)|for|got|obtai(?:n|ned|ning)|pursu(?:ed?|ing)|receiv(?:ed?|ing)|started|took)\s+(?:a|her|his)\s+\w+)(?=(?:[,;\.]|\s+(?:and|at|from|in)\s))" replace="bachelor's degree"/> +<Typo word="master's degree (2)" find="\b[Mm]asters(?<=\s(?:complet(?:ed?|ing)|did|do|ear(?:n|ned|ning)|finis(?:h|hed|hing)|for|got|obtai(?:n|ned|ning)|pursu(?:ed?|ing)|receiv(?:ed?|ing)|started|took)\s+(?:a|her|his)\s+\w+)(?=(?:[,;\.]|\s+(?:and|at|from|in)\s))" replace="master's degree"/> +<Typo word="Bachelor of Science" find="\b[Bb]achelor\s+of\s+science(?=(?:[,;\.]|\s+\(|\s+(?:and|at|degrees?|from|in)\s))" replace="Bachelor of Science"/> +<Typo word="Master of Science" find="\b[Mm]aster\s+of\s+science(?=(?:[,;\.]|\s+\(|\s+(?:and|at|degrees?|from|in)\s))" replace="Master of Science"/> +<Typo word="Bachelor of Arts" find="\b[Bb]achelor\s+of\s+arts(?=(?:[,;\.]|\s+\(|\s+(?:and|at|degrees?|from|in)\s))" replace="Bachelor of Arts"/> +<Typo word="Master of Arts" find="\b[Mm]aster\s+of\s+arts(?=(?:[,;\.]|\s+\(|\s+(?:and|at|degrees?|from|in)\s))" replace="Master of Arts"/> +<Typo word="MPhil" find="\bM\.Phil(?=\s+(?:and|at|degree|dissertation|from|in|studies|thesis|with)\b)(?<=\b(?:[aA]n|and|[hH]er|[hH]is)\s+M\.Phil)" replace="MPhil"/> +<Typo word="PhD" find="\bPh\.D(?=\s+(?:at|degree|dissertation|from|in|studies|thesis|with)\b)(?<=\b(?:[aA]|and|[hH]er|[hH]is)\s+Ph\.D)" replace="PhD"/> +<Typo word="-ality" find="\b([A-Za-z]*)aili?t(?<![Ff]railt)(y|ies)\b" replace="$1alit$2"/> +<Typo word="Between YYYY-YY" find="\b([bB]etween)\s+(\d\d)(\d\d)[-????????????](\d\d)\b(?!\s+and\b)(?!\s+to\b)" replace="$1 $2$3 and $2$4"/> +<Typo word="Between YYYY-Y" find="\b([bB]etween)\s+(\d\d\d)(\d)[-????????????](\d)\b(?!\s+and\b)(?!\s+to\b)" replace="$1 $2$3 and $2$4"/> +<Typo word="From YYYY-YY" find="\b([fF]rom)\s+(\d\d)(\d\d)[-????????????](\d\d)\b(?!\s+til\b)(?!\s+to\b)(?!\s+until\b)" replace="$1 $2$3 to $2$4"/> +<Typo word="From YYYY-Y" find="\b([fF]rom)\s+(\d\d\d)(\d)[-????????????](\d)\b(?!\s+til\b)(?!\s+to\b)(?!\s+until\b)" replace="$1 $2$3 to $2$4"/> +<Typo word="Between 0 and 1" find="\b([bB]etween)\s+(\d+[\d,\.]*\d)[-????????????](\d+[\d,\.]*\d)\b(?!\s+and\b)(?!\s+to\b)" replace="$1 $2 and $3"/> +<Typo word="From 0 to 1" find="\b([fF]rom)\s+(\d+[\d,\.]*\d)[-????????????](\d+[\d,\.]*\d)\b(?!\s+til\b)(?!\s+to\b)(?!\s+until\b)" replace="$1 $2 to $3"/> +<Typo word="Electrically" find="\b([eE])lectr(on)?ically-(?=[a-z])" replace="$1lectr$2ically "/> +<Typo word="Similarly" find="\b([sS])imilarly-(?=[a-z])" replace="$1imilarly "/> <Typo word="Heavily" find="\b([hH])eavily-(?=[a-z])" replace="$1eavily "/> <Typo word="Politically" find="\b([pP])olitically-(?=[a-z])" replace="$1olitically "/> <Typo word="nn-seat" find="\b((?:\d+,)?\d\d+) +seat(?= (?:a(?:rena|uditorium)|black\s+box|concert|lecture|majority|restaurant|st(?:adium|udio)|theat(?:er|re))\b)(?<!\bto\s+\d+\s+\w+)" replace="$1-seat"/> @@ -30,7 +60,7 @@ <Typo word="Possibilities" find="\b([pP])ossibilites\b" replace="$1ossibilities"/> <Typo word="Born" find="\b([bB])orned\b" replace="$1orn"/> <Typo word="Directly" find="\b([dD])irectly-(?=[a-z]+ed\b)" replace="$1irectly "/> -<Typo word="lower-case c" find="\bC(athedral|ent(?:er|re)|hapel|ity|lub|o(?:llege|m(?:mi(?:ssion|ttee)|pany))|on(?:sulate|vention)|o(?:rporation|un(?:cil|ty)))(?<=\b(?:[iI]ts|[tT]h(?:e|is))\s+\w+)(?=(?:[,\;\.\)\:]|['???]s\s|\s+[\(???]|\s+(?:a(?:cquired|fter|lso|n?|nnounced|re|s|nd\s+[a-z]+\s+[a-z]+)|b(?:e(?:fore|gan)|ut|y)|c(?:an|o(?:nducts|uld)|urrently)|during|established|f(?:or|rom)|h(?:a[ds]|osts)|is?|launched|ma(?:de|intains)|on\s+[a-z\d]+|now|o(?:ffers|perates|r)|receive[ds]|s(?:hould|upports)|t(?:he|o)|until|w(?:as|ere|hile|ill)|w(?:ith|o(?:rks|uld)))\b))(?!\s+for(?:\s(?:an?\b|the\b))?\s+[A-Z])" replace="c$1"/> +<Typo word="lower-case c" find="\bC(athedral|ent(?:er|re)|hapel|ity|lub|o(?:llege|m(?:mi(?:ssion|ttee)|pany))|on(?:sulate|vention)|o(?:rporation|un(?:cil|ty)))(?<=\b(?:[iI]ts|[tT]h(?:e|is))\s+\w+)(?=(?:[,\;\.\)\:]|['???]s\s|\s+[\(???]|\s+(?:a(?:cquired|fter|lso|n?|nnounced|re|s|nd\s+[a-z]+\s+[a-z]+)|b(?:e(?:fore|gan)|ut|y)|c(?:an|o(?:nducts|uld)|urrently)|during|established|f(?:or|rom)|h(?:a[ds]|osts)|is?|launched|ma(?:de|intains)|on\s+[a-z\d]+|now|o(?:ffers|perates|r)|receive[ds]|s(?:hould|upports)|t(?:he|o)|until|w(?:as|ere|hile|ill)|w(?:ith|o(?:rks|uld)))\b))(?!\s+(?:for|o[fn])(?:\s(?:an?\b|the\b))?\s+[A-Z])" replace="c$1"/> <Typo word="the institute" find="\bI(nstitute)(?<=\b[tT]he\s+\w+)(?=(?:[,\;\.\)]|'s\s|\s+\(|\s+(?:a(?:fter|lso)|before|c(?:onducts|urrently)|during|from|h(?:as|osts)|is?|maintains|o(?:ffers|perates|n\s+[a-z\d]+)|supports|to|w(?:as|i(?:ll|th)|orks))\b))" replace="i$1"/> <Typo word="In MY" find="\bOn\s+(April|February|January|Ma(?:rch|y)|Ju(?:ly|ne)|August|December|September|October|November)\s+(1[6-9]\d\d|20[0-2]\d)\b" replace="In $1 $2"/> <Typo word="in MY" find="\bon\s+(April|February|January|Ma(?:rch|y)|Ju(?:ly|ne)|August|December|September|October|November)\s+(1[6-9]\d\d|20[0-2]\d)\b" replace="in $1 $2"/> @@ -53,8 +83,8 @@ <Typo word="Long-term" find="\b([lL]ong(?:er)?|[sS]hort)-?\s+(term)(?=\s+(?:a(?:ffairs?|greements?|ims?|lliances?)|a(?:mbitions?|ppointments?|s(?:pirations?|sociations?))|b(?:asis|oyfriends?|usiness)|care(?:ers?)?|c(?:harters?|o(?:llaborat(?:ions?|ors?)|mmitments?|ntracts?))|de(?:als?|clines?|velopments?)|e(?:conomic|ngagements?)|f(?:inancial|riends?|uture)|g(?:irlfriends?|oals?)|h(?:ealth|orizons?)|illness(?:es)?|i(?:mpacts?|n(?:flows?|jur(?:ies|y)))|investments?|knee|l(?:eases?|o(?:ans?|ve))|m(?:em(?:bers?|or(?:ies|y))|issions?)|objectives?|p(?:artner(?:s(?:hips?)?)?|er(?:iods?|spectives?))|p(?:lans?|r(?:esence|o(?:blems?|cess)))|pro(?:cesses|grams?|jects?)|re(?:cording|ductions?|lationships?|placements?|s(?:earch|idents?|toration))|s(?:olutions?|ponsors?|t(?:orage|rategic))|st(?:rateg(?:ies|y)|ud(?:ies|y))|su(?:ccess|pp(?:l(?:ies|y)|ort))|su(?:pporters?|stainable)|tre(?:atments?|nds?)|vi(?:ews?|sion))\b)" replace="$1-$2"/> <Typo word="time-consuming" find="\btime\s+consuming(?=(?:[,\.:;\)]|\s+(activit(?:ies|y)|a(?:nd|s(?:pects?)?)|b(?:ecause|ut)|compared|d(?:rive|ue)|effort|for|i(?:f|n(?:vestigations?)?)|jobs?|m(?:anual|ethods?)|nature|o(?:perations?|r)|p(?:art|r(?:actice|oce(?:dures?|ss)))|pro(?:cesses|jects?)|r(?:esearch|outes?)|s(?:earch|o|teps?)|t(?:asks?|echniques?|ha[nt]|o)|w(?:ays?|hen|ork))\b))" replace="time-consuming"/> <Typo word="Corps of Engineers" find="\bCorp\s+of\s+Engineers\b" replace="Corps of Engineers"/> -<Typo word="0???0" find="\b(\d+)(?<=\s\d+)[-???](\d+)(?=\s+(?:a(?:cademic|dvantage|gainst|t|way)|career|d(?:ef(?:eat|icit)|raw)|edge|final|game|home|in|l(?:ead|oss)|mark|o(?:n|ver(?:time)?)|r(?:ecord|out|un)|sc(?:hool\s+year|ore)|s(?:e(?:asons?|ries)|h(?:ootout|utout))|s(?:plit|tart|weep)|t(?:erm|ie|o|riumph)|upset|v(?:ictory|ote)|wi(?:n|th))\b)" replace="$1???$2"/> -<Typo word="2???1" find="\b(\d+)(?<=\s\d+)[-???](\d+)(?=[,\.;\n])(?<!\b(?:Boeing|Columbia|IS[BS]N|LCCN|INCITS|I(?:EC|SO(?:/IEC)?)|ANSI(?:/VITA)?|card number:?|FIPS|No\.|VITA|Publication)\s+\d+[-???]\d+)(?<!\b\d\d[-???]\d{3})(?<!\b\d{1}[-???]\d\d)(?<!\b\1[-???]\1\b)" replace="$1???$2"/> +<Typo word="0???0" find="\b(\d+)(?<=\s\d+)[-???](\d+)(?=\s+(?:a(?:cademic|dvantage|gainst|t|way)|career|d(?:ef(?:eat|icit)|raw)|edge|final|game|home|in|l(?:ead|oss)|mark|o(?:n|ver(?:time)?)|r(?:ecord|out|un)|sc(?:hool\s+year|ore)|s(?:e(?:asons?|ries)|h(?:ootout|utout))|s(?:plit|tart|weep)|t(?:erm|ie|o|riumph)|upset|v(?:ictory|ote)|wi(?:n|th))\b)(?<!\b7\d7-\d+)" replace="$1???$2"/> +<Typo word="2???1" find="\b(\d+)(?<=\s\d+)[-???](\d+)(?=[,\.;\n\)])(?<!\b(?:Boeing|Columbia|Dash|IS[BS]N|LCCN|INCITS|I(?:EC|SO(?:/IEC)?)|ANSI(?:/VITA)?|FIPS|NACA|N[oO]\.?:?|[nN]umber:?|#:?|Publication|[sS]/[nN]:?|VITA|Widow)\s+\d+[-???]\d+)(?<!\b\d\d[-???]\d{3})(?<!\b\d{1}[-???]\d\d)(?<!\b\1[-???]\1\b)(?<!\b7\d7-\d+)" replace="$1???$2"/> <Typo word="north???south" find="\b[nN]orth(?<=(?:,|\b(?:[a-z]+|The))\s+\w+)(east|west)?[-/][sS]outh(east|west)?\b(?!\s+[A-Z])" replace="north$1???south$2"/> <Typo word="south???north" find="\b[sS]outh(?<=(?:,|\b(?:[a-z]+|The))\s+\w+)(east|west)?[-/][nN]orth(east|west)?\b(?!\s+[A-Z])" replace="south$1???north$2"/> <Typo word="east???west" find="\b[eE]ast(?<=(?:,|\b(?:[a-z]+|The))\s+\w+)-[wW]est\b(?!\s+[A-Z])" replace="east???west"/> @@ -85,7 +115,7 @@ <Typo word="Teaches/ing/s" find="\b([tT])ech(es|ings?)\b" replace="$1each$2"/> <Typo word="([mb]|tr)illion (2)" find="((?:[????????\$]|Rs\.\s?)[\d,\.???]+(?:\s| )+(?:[mb]|tr))illions\b" replace="$1illion"/> <Typo word="Receive" find="\b([rR])ec(?:e|ie?)v(ed?|ing)\b" replace="$1eceiv$2"/> -<Typo word="Veil" find="\b([uU]n[vV]|[vV])eill(ed|ing)?\b" replace="$1$2eil$3"/> +<Typo word="Veil" find="\b([uU]n[vV]|[vV])eill(ed|ing)?\b" replace="$1eil$2"/> <Typo word="Double euros" find="(???[\d\.???]+(?: | )(?:[mb]illion|t(?:housand|rillion))?) euros?\b" replace="$1"/> <Disabled word="space before EOL" find=" $" replace=""/> <Disabled word="duplicated space" find=" " replace=" "/> @@ -129,7 +159,7 @@ <Typo word="Lyric" find="\b([lL])yic(s)?\b" replace="$1yric$2"/> <Typo word="Degree" find="\b([dD])egee('s|s?)\b" replace="$1egree$2"/> <Typo word="-ball (2)" find="\b([bB]asket|[cC]annon|[fF]oot|[hH]and|volley)bal(s)?\b" replace="$1ball$2"/><!--avoid Volleybal (Dutch); see also: rule "-ball"--> -<Typo word="gallery_" find="\bgaler(ies|y)\b" replace="galler$1"/><!--avoid proper name Galeries--> +<Typo word="gallery_" find="\bgaler(ies|y)\b(?!\s+[nN]ationales)" replace="galler$1"/><!--avoid proper name Galeries & galeries nationales--> <Typo word="Profile" find="\b([pP])rofli?e([ds])?\b" replace="$1rofile$2"/> <Typo word="Facility/Facilitates" find="\b([fF])acilti?(ates?|ies|y)\b" replace="$1acilit$2"/> <Typo word="(up)holding" find="\b(h|[uU]ph)elding\b" replace="$1olding" /> @@ -173,7 +203,7 @@ <Typo word="Lawmaker" find="\b([lL])aw[????????????\s]+maker(s)?\b" replace="$1awmaker$2"/> <Typo word="(Dis)integrate" find="\b([dD]isi|[iI])nt(?:er|i)gr?at(e[ds]?|i(?:ng|on))\b" replace="$1ntegrat$2"/> <Typo word="September 2016" find="\b(?:the\s+)?(A(?:pril|ugust)|December|February|J(?:anuary|u(?:ly|ne))|Ma(?:rch|y)|November|October|September)\s+of\s+([12]\d{3})\b" replace="$1 $2"/> -<Typo word="High-profile" find="\b(?=[hH]igh)(?<!(?:[bB]ecause\s+of\s+(?:h(?:er|is)|its|their)|(?:achiev(?:e[ds]?|ing)|creat(?:e[ds]?|ing)|display(?:ed|ing|s?)|ha(?:s|ve)|ke(?:ep(?:ing|s?)|pt)|maintain(?:ed|ing|s?)|retain(?:ed|ing|s?)|with)\s+a)\s+)([hH])igh(?<![A-Z][A-Za-z]+\s+High|specified\s+High|the\s+High)\s+profile\b(?!,|\s+(?:a(?:nd|s)|for|in|of)\b)" replace="$1igh-profile"/> +<Typo word="High-profile" find="\b(?=[hH]igh)(?<!(?:[bB]ecause\s+of\s+(?:h(?:er|is)|its|their)|(?:achiev(?:e[ds]?|ing)|creat(?:e[ds]?|ing)|display(?:ed|ing|s?)|ha(?:s|ve)|ke(?:ep(?:ing|s?)|pt)|maintain(?:ed|ing|s?)|retain(?:ed|ing|s?)|with)\s+a)\s+)([hH])igh(?<![A-Z][A-Za-z]+\s+High|specified\s+High|the\s+High)\s+profile\b(?!,|\s+(?:a(?:nd|s)|for|in|of|to)\b)" replace="$1igh-profile"/> <Typo word="Halfway_" find="\b([hH])alf\s+way(?=\s+(?:a(?:cross|round)|between|down|from|into|line|out|point|round|through|up)\b)" replace="$1alfway"/> <Typo word="Midway_" find="\b([mM])id[????????????\s]+way(?=\s+(?:across|between|down|through|up)\b)" replace="$1idway"/> <Typo word="Mezzo-soprano" find="\b([mM])ezzo\s*soprano(s)?\b" replace="$1ezzo-soprano$2"/> @@ -193,7 +223,7 @@ <Typo word="made-for-TV" find="\bmade\s+for\s+(T(?:elevision|V)|t(?:elevision|v))\s+(film|movie)\b" replace="made-for-$1 $2"/> <Typo word="Chhattisgarh" find="\b(?:chh?att?|Ch(?:att?|hat))isgarh(i)?\b" replace="Chhattisgarh$1"/> <Typo word="Grammy Award" find="\bgrammy\s+[aA]ward(s)?\b" replace="Grammy Award$1"/> -<Typo word="Relay" find="\b4(?: (?:x\s?|??)|[x??]\s?)([248]00|15?00)\s*m\b" replace="4 ?? $1 m"/> +<Typo word="Relay" find="\b4(?: (?:x\s?|??)|[x??]\s?)([248]00|15?00)\s*m\b" replace="{{nowrap|4 ?? $1 m}}"/> <Typo word="Multimillion-dollar" find="\b([mM])ulti[????????????\s]*([mb]|tr)illion[????????????\s]+(dollar|euro|pound)\b(?<!ulti(?:[mb]illion-[a-z]+|trillion-[a-z]+))" replace="$1ulti$2illion-$3"/> <!--neg lookbehind removable--> <Typo word="nth-minute something" find="\b(\d+(?:[nr]d|st|th)|e(?:ight(?:eenth|h|ieth)|leventh)|f(?:i(?:ft(?:eenth|h|ieth)|rst)|o(?:rtieth|urt(?:eenth|h)))|hundredth|nint(?:eenth|h|ieth)|s(?:e(?:cond|vent(?:eenth|h|ieth))|ixt(?:eenth|h|ieth))|t(?:enth|h(?:ir(?:d|t(?:eenth|ieth))|ousandth)|we(?:lfth|ntieth)))\b\s+minute(?=\s+(?:equali(?:[sz]er)|goal|header|lead|opener|penalty|st(?:rike|ubstitute)|winner))" replace="$1-minute"/> <Typo word="led_" find="\blead(?=\s+to\s)(?<=(?:Th(?:at|is)|[;\.] th(?:at|is)|, this)\s+lead)" replace="led"/> @@ -211,7 +241,7 @@ <Typo word="incredible" find="\bincre?[ai]d[ai]bl([ey])\b" replace="incredibl$1"/> <Typo word="shown_" find="\bshowed\b(?<=\b(?:are|be(?:en)?|is|w(?:as|ere))\s+showed)" replace="shown"/> <Typo word="bachelor's and master's degrees" find="\bbachelor[????????????????????????`']?s? and master[????????????????????????`']?s? degree(s)?\b" replace="bachelor's and master's degree$1"/> -<Typo word="Furthermore," find="\b(Accordingly|Consequently|Even\s+so|F(?:or\s+example|urthermore)|In(?:deed|\s+other\s+words)|M(?:eanwhile(?!\s+Gardens)|oreover)|Nevertheless|On\s+the\s+other\s+hand|Therefore|Subsequently(?!\s+(?:enacted|renamed|told)))(?!\s+\|)?(?=\s+[\p{L}?????????????????????`'\[\|\]]+\b)" replace="$1,"/> +<Typo word="Furthermore," find="\b(Accordingly|Consequently|Even\s+so|F(?:or\s+example|urthermore)|In(?:deed|\s+other\s+words)|M(?:eanwhile(?!\s+Gardens)|oreover)|Nevertheless|On\s+the\s+other\s+hand|Therefore|Subsequently(?!\s+(?:enacted|featured|renamed|told)))(?!\s+\|)?(?=\s+[\p{L}?????????????????????`'\[\|\]]+\b)" replace="$1,"/> <Typo word="As a result," find="\bAs\s+a\s+result(?=\s)(?!\s+of\b)" replace="As a result,"/> <Typo word="However," find="\bHowever\s+(?=(?:a(?:ccording|fter|s)|b(?:e(?:cause|fore)|y)|d(?:espite|u(?:e|ring))|f(?:or|rom)|i[fn]|later|not|on(?:ly)?|s(?:ince|ometimes)|there|w(?:hen|ith))\b)" replace="However, "/> <Typo word="Commercially" find="\b([cC])ommerciall?y-(?=[a-z]+(?:ble\b|ed\b|ful\b))(?![a-z]+-)" replace="$1ommercially "/> @@ -229,7 +259,7 @@ <Typo word="centuries-old" find="\b(centuri|decad)es\s+old\b(?<=\b(?:[aA]|[tT]he(?:ir)?)\s+[a-z]+\s+old)" replace="$1es-old"/> <Typo word="intertribal" find="\b([iI])nter[????????????\s]+tribal\b" replace="$1ntertribal"/> <Typo word="Passageway" find="\b([pP])assage[????????????\s]+way(s)?\b" replace="$1assageway$2"/> -<Typo word="A n-something" find="\b([\d]+[\d,\.]*|e(?:ight(?:een|y?)|leven)|f(?:i(?:ft(?:een|y)|ve)|o(?:rty|ur(?:teen)?))|hundred|nine(?:t(?:een|y))?|one|s(?:even|ix)(?:t(?:een|y))?|t(?:en|h(?:irt(?:een|y)|ousand|ree)|w(?:e(?:lve|nty)|o)))\b(?<=\b(?:[aA](?:dditional|n?)|first|[hH](?:er|is)|[iI]ts|second|th(?:eir|ird)|Their)\s+[\da-z]+)(?: |\s+)(?!member\s+[a-z]+s\b)(acre|bed|cylinder|d(?:ay|ecker|oor)|foot|g(?:a(?:llon|me)|oal)|h(?:o(?:le|rsepower|ur)|uman)|inch|lit(?:er|re)|m(?:an|e(?:mber|t(?:er|re))|i(?:le|nute)|onth)|ounce|p(?:a(?:ge|ssenger)|erson|o(?:int|und))|r(?:o(?:om|und)|unner)|s(?:e(?:a(?:son|t(?:er)?)|cond)|ong|t(?:age|ore?y))|ton|vote|w(?:eek|heel(?:e[dr])?|oman)|y(?:ard|ear))(?=[,\s]|-(?:deep|high|long|old|tall|wide)\b)(?!\s+(?:a(?:go|[st])|by|deep|for|high|i[ns]|long|o(?:f|ld)|t(?:all|here)|w(?:as|i(?:de|th)))\b)(?<!\b\d{4}\s+(?:game|s(?:e(?:ason|cond)|ong|t(?:age|ory))|vote))(?<![dD]uring\s+h(?:er|is)\s+one\s+season|told\s+h(?:er|im)\s+one\s+day|send\s+for\s+h( ?:er|im)\s+one\s+day)" replace="$1-$2"/><!--Note: If the n-something potentially has a year as the 'n', be sure to add the 'something' to the "(?<!\b\d{4}\s+" false-positive alternation list.--> +<Typo word="A n-something" find="\b([\d]+[\d,\.]*|e(?:ight(?:een|y?)|leven)|f(?:i(?:ft(?:een|y)|ve)|o(?:rty|ur(?:teen)?))|hundred|nine(?:t(?:een|y))?|one|s(?:even|ix)(?:t(?:een|y))?|t(?:en|h(?:irt(?:een|y)|ousand|ree)|w(?:e(?:lve|nty)|o)))\b(?<=\b(?:[aA](?:dditional|n?)|first|[hH](?:er|is)|[iI]ts|second|th(?:eir|ird)|Their)\s+[\da-z]+)(?: |\s+)(?!member\s+[a-z]+s\b)(acre|bed|cylinder|d(?:ay|ecker|oor)|foot|g(?:a(?:llon|me)|oal)|h(?:o(?:le|rsepower|ur)|uman)|inch|lit(?:er|re)|m(?:an|e(?:mber|t(?:er|re))|i(?:le|nute)|onth)|ounce|p(?:a(?:ge|ssenger)|erson|o(?:int|und))|r(?:o(?:om|und)|unner)|s(?:e(?:a(?:son|t(?:er)?)|cond)|ong|t(?:age|ore?y))|ton|vote|w(?:eek|heel(?:e[dr])?|oman)|y(?:ard|ear))(?=[,\s]|-(?:deep|high|long|old|tall|wide)\b)(?!\s+(?:a(?:go|[st])|by|deep|for|high|i[ns]|long|o(?:f|ld)|t(?:all|here|o)|w(?:as|i(?:de|th)))\b)(?<!\b\d{4}\s+(?:game|s(?:e(?:ason|cond)|ong|t(?:age|ory))|vote))(?<![dD]uring\s+h(?:er|is)\s+one\s+season|told\s+h(?:er|im)\s+one\s+day|send\s+for\s+ h(?:er|im)\s+one\s+day)" replace="$1-$2"/><!--Note: If the n-something potentially has a year as the 'n', be sure to add the 'something' to the "(?<!\b\d{4}\s+" false-positive alternation list.--> <Typo word="n-year" find="\b([\d]+[\d,\.]*|e(?:ight(?:een|y?)|leven)|f(?:i(?:ft(?:een|y)|ve)|o(?:rty|ur(?:teen)?))|hundred|nine(?:t(?:een|y))?|one|s(?:even|ix)(?:t(?:een|y))?|t(?:en|h(?:irt(?:een|y)|ousand|ree)|w(?:e(?:lve|nty)|o)))(?: |\s+)(month|year)\b(?<= [\da-z]+(?: [a-z]+|\s+[a-z]+))(?=\s+(?:a(?:bsence|ffair|greement|ss(?:ignment|ociation))|b(?:a(?:n|ttle)|reak)|c(?:a(?:mpaign|reer)|ease-?fire|losure|o(?:m(?:a|petition)|ntract|urse)|ruise|ycle)|d(?:e(?:a(?:dline|l)|lay|ployment)|rought|uration)|e(?:ffort|n(?:gagement|listment)|x(?:hibit(?:ion)?|i(?:le|stence)|pedition|tension))|feasibility|g(?:ap|estation|uest)|h(?:i(?:atus|story)|ospital)|i(?:llness|n(?:cumbent|jury|ternship|vestigation))|j(?:ail|ourney)|l(?:ay-?off|ea[sv]e|ife-?span|o(?:an|ckout))|m(?:aintenance|i(?:litary|ssion)|o(?:dernization|ratorium))|notice|overhaul|p(?:artnership|eriod|lan|osting|r(?:ison|o(?:cess|fessional|gram(?:me)?|ject)))|r(?:e(?:c(?:overy|urring)|fit|gular|ign|lationship|s(?:earch|iden cy|tricted))|otation|un)|s(?:abbatical|cho(?:larship|ol)|e(?:ason|ntence)|iege|ojourn|p(?:an|e(?:aking|ll))|t(?:a(?:rter|y)|int|r(?:ike|uggle)|udy)|u(?:bs(?:cription|idy)|pen(?:ded|sion)))|t(?:e(?:nure|rm)|our|r(?:aining|eatment|i(?:al|p)|uce))|v(?:eteran|isit|oyage)|w(?:a(?:it(?:ing)?|r)|orkshop))\b)" replace="$1-$2"/> <Typo word="One-night stand" find="\bone\b(?<=\b[aA]\s+one)[????????????\s]+night[????????????\s]+stand\b(?<!one-night\s+stand)" replace="one-night stand"/><!--neg lookbehind removable--> <Typo word="Long-standing" find="\blong\s+standing\b(?<=\b(?:[aA]|[tT]he)\s+long\s+standing)(?!\s+(?:in\b|o(?:f\b|vation\b)))" replace="long-standing"/> @@ -312,7 +342,7 @@ <Typo word="Behind" find="\b([bB])ehin(?:ed|g)\b" replace="$1ehind"/> <Typo word="Perpetrate" find="\b([pP])erpertrat([a-z]+)\b" replace="$1erpetrat$2"/> <Typo word="Phillips (Andover/Exeter)" find="\bPhilipp?s\s+(Andover|Exeter)\b" replace="Phillips $1"/> -<Typo word="Decades apostrophes" find="\b(1\d\d0|20\d0)[????????????????????????`;']?s(?<=\b(?:[aA]n?|[oO]n|[tT]he)\s{1,9}(?:earl(?:ier|y)|later?|mid(?:dle)?)?[????????????\s]{0,9}(?:1\d|20)\d0[????????????????????????`;']?s)\s{1,9}and\s{1,9}((?:earl(?:ier|y)|later?|mid(?:dle)?)?[????????????\s]{0,9}(?:1\d\d0|20\d0))[????????????????????????`']s" replace="$1s and $2s"/> +<Typo word="Decades apostrophes" find="\b(1\d\d0|20\d0)[????????????????????????`;']?s(?<=\b(?:[aA]n?|[tT]he)\s{1,9}(?:earl(?:ier|y)|later?|mid(?:dle)?)?[????????????\s]{0,9}(?:1\d|20)\d0[????????????????????????`;']?s)\s{1,9}and\s{1,9}((?:earl(?:ier|y)|later?|mid(?:dle)?)?[????????????\s]{0,9}(?:1\d\d0|20\d0))[????????????????????????`']s" replace="$1s and $2s"/> <Typo word="Debtors' prison" find="\b([dD])ebtor[????????????????????????`;']?s\s+prison\b" replace="$1ebtors' prison"/> <Typo word="Amalgamate" find="\b([aA])m(?:[al]{1,3}g[aou]?ma?t(?<!malgamat)|alagat)(e[ds]?|i(?:ng|ons?))\b" replace="$1malgamat$2"/><!--neg lookbehind removable--> <Typo word="Splinter group" find="\b([sS])plinter-group(s)?\b" replace="$1plinter group$2"/> @@ -442,10 +472,9 @@ <Typo word="Spokes-" find="\b([sS])poke(m[ae]n|pe(?:ople|rsons?)|wom[ae]n)\b" replace="$1pokes$2"/> <Typo word="King Philip's War" find="\bKing Phil(?:lip[????????????????????????`;']?s [wW]|ip(?:[????????????????????????`;]s [wW]|'s w|s [wW]))ar\b" replace="King Philip's War"/> <Typo word="(Life/Death/Child/Lady/Father)like" find="\b([cC]hild|[dD]eath|[fF]ather|[lL](?:ady|ife))-like\b" replace="$1like"/><!--but many -like suffixes keep the hyphen--> -<Typo word="Decade apostrophe" find="\b(1\d\d0|20\d0)[????????????????????????`']s(?<=\b(?:[aA]n?|[oO]n|[tT]he)\s{1,9}(?:earl(?:ier|y)|later?|mid(?:dle)?)?[????????????\s]{0,9}(?:1\d|20)\d0[????????????????????????`']s)" replace="$1s"/> +<Typo word="Decade apostrophe" find="\b(1\d\d0|20\d0)[????????????????????????`']s(?<=\b(?:[aA]n?|[tT]he)\s{1,9}(?:earl(?:ier|y)|later?|mid(?:dle)?)?[????????????\s]{0,9}(?:1\d|20)\d0[????????????????????????`']s)" replace="$1s"/> <Typo word="Rebirth/reborn" find="\b([rR])e-b(irth|orn)\b" replace="$1eb$2"/> <Typo word="Restart_" find="\b([rR])e-start(ed|ing|s?)\b" replace="$1estart$2"/> -<Typo word="(Full/Part)-time" find="\b([fF]ull|[pP]art)\s?time\b(?![????????????\s]limit)(?<!at full time)" replace="$1-time"/><!--avoid "at full time" in association football articles--> <Typo word="UNICEF" find="\bUnicef\b(?<!Sterntale-Unicef)(?![^\s\.]*\.\w)(?<!\.[^\s\.]{0,999})" replace="UNICEF"/><!--avoid domains & URLs--> <Typo word="Overarching" find="\b([oO])ver-arching\b" replace="$1verarching"/> <Typo word="Agency" find="\b([aA])geng(ies|y)\b" replace="$1genc$2"/> @@ -507,7 +536,7 @@ <Typo word="Merge(d/s/ing)" find="\b([mM])erg(e[ds]?|ing) together\b" replace="$1erg$2"/> <Typo word="Uilleann pipes" find="\b([uU])il(?:eann?\s+[pP]|lean(?:n\s+P|\s+[pP]))ipes\b" replace="$1illeann pipes"/> <Typo word="Purported" find="\b([pP])roport(ed(?:ly)?|ing|s)\b" replace="$1urport$2"/><!--avoid Proport (a business term)--> -<Typo word="B'nai B'rith" find="\bB(?:[????????????????????????`][nN]ai\s+B[????????????????????????`']?|[????????????????????????`']Nai\s+B[????????????????????????`']?|[????????????????????????`']nai\s+B[????????????????????????`']?|[nN]ai\s+B[????????????????????????`']?)rith\b" replace="B'nai B'rith"/> +<Typo word="B'nai B'rith" find="\bB(?:[????????????????????????`][nN]ai\s+B[????????????????????????`']?|[????????????????????????`']Nai\s+B[????????????????????????`']?|[????????????????????????`']nai\s+B[????????????????????????`']?|[nN]ai\s+B[????????????????????????`']?)rith\b(?<!B'nai B'rith)" replace="B'nai B'rith"/> <Typo word="MacMillan" find="\b(James|Kenneth) [mM]acmillan\b" replace="$1 MacMillan"/> <Typo word="Harold Macmillan" find="\b[hH]arold MacMillan\b" replace="Harold Macmillan"/> <Typo word="Rodgers and" find="\bRogers (?:and|&) Ha(mmerstein|rt)\b" replace="Rodgers and Ha$1"/> @@ -576,10 +605,10 @@ <Typo word="Postpone" find="\b([pP])ost[????????????\s][pP]on(e[ds]?|ing)\b" replace="$1ostpon$2"/> <Typo word="Huguenot" find="\bHugenot(s)?\b" replace="Huguenot$1"/> <Typo word="Usage" find="\b([uU])seage(s)?\b" replace="$1sage$2"/> -<Typo word="Congregate" find="\b([cC])ong(?:e(?:gr?|rg)|regr?)at([a-z]+)\b" replace="$1ongregat$2"/> +<Typo word="Congregate" find="\b([cC])ong(?:er?gr?|regr)at([a-z]+)\b" replace="$1ongregat$2"/> <Typo word="Anniversary (2)" find="\b(\d+(?:[nr]d|st|th)|e(?:ight(?:eenth|h|ieth)|leventh)|f(?:i(?:ft(?:eenth|h|ieth)|rst)|o(?:rtieth|urt(?:eenth|h)))|hundredth|nint(?:eenth|h|ieth)|s(?:e(?:cond|vent(?:eenth|h|ieth))|ixt(?:eenth|h|ieth))|t(?:enth|h(?:ir(?:d|t(?:eenth|ieth))|ousandth)|we(?:lfth|ntieth)))[????????????\s]year\s[aA]nniv[ei]rs[ai]ry\b" replace="$1 anniversary"/> <Typo word="Anniversary" find="\b([aA])n(?:ivers[ae]|n(?:niversa|iv(?:arsa|e(?:r(?:a|se)|sa))))r(ies|y)\b" replace="$1nniversar$2"/> -<Typo word="Collaborate" find="\b([cC])ol(?:ab[eo]r+|lab(?:[eo]r+))at([a-z]+)(?:\stogether)?\b" replace="$1ollaborat$2"/> +<Typo word="Collaborate" find="\b([cC])ol(?:ab[eo]r+|lab(?:[eo]r+))at([a-z]+)(?:\stogether)?\b(?<![Cc]ollaborat[a-z]+)" replace="$1ollaborat$2"/> <Typo word="People en Espa??ol" find="\bPeople\s+(?:En\s+[eE]spa[n??]|en\s+(?:Espan|espa[n??]))ol\b" replace="People en Espa??ol"/> <Typo word="Mombasa" find="\bMombassa\b(?![^\s\.]*\.\w)" replace="Mombasa"/><!--avoid domains--> <Typo word="Dar es Salaam" find="\bDar(?:[????????????\s]+Es[????????????\s]+|-es-)[sS]alaa?m\b" replace="Dar es Salaam"/> @@ -641,46 +670,6 @@ <Typo word="Public (domain/housing/library)" find="\b([pP])ubic\s*(domain|hous(?:e|ing)|librar(?:ies|y))\b" replace="$1ublic $2"/> <Typo word="Landmark" find="\b([lL])and\s+mark(s)?\b" replace="$1andmark$2"/> <Typo word="Nickname" find="\b([nN])ick[????????????\s]+nam(e[ds]?|ing)\b" replace="$1icknam$2"/> -<Typo word="Since then" find="\b([sS])ince\s+than\b" replace="$1ince then"/> -<Typo word="Aero-" find="\b([aA])reo(bics?|d(?:romes?|ynamic(?:al[a-z]*|s?))|mechanic(?:al[a-z]*|s?)|nautic(?:al[a-z]*|s?)|planes?|s(?:ols?|pace))\b" replace="$1ero$2"/> -<Typo word="Opioid" find="\b([oO])piod(s)?\b" replace="$1pioid$2"/> -<Typo word="Johns Hopkins University" find="\b[jJ]oh?n(?:[????????????????????????`']s)?\s+[hH]opkins?\s+[uU]niversity\b" replace="Johns Hopkins University"/> -<Typo word="Recipient" find="\b([rR])ec(?:ei?|ie)pient(s)?\b" replace="$1ecipient$2"/> -<Typo word="Annually" find="\b([aA])n(?:n(?:aull|ual+)|ual+)y\b(?<!nnually)" replace="$1nnually"/> -<Typo word="Centenary" find="\b([cC])enten(?:e|na)r(i(?:ans?|es)|y)\b" replace="$1entenar$2"/> -<Typo word="Vice versa" find="\b([vV])is(?:[ae]|-a)[????????????\s]*versa\b" replace="$1ice versa"/> -<Typo word="Public school" find="\b([pP])ubic\s*([sS])[ch]{1,2}o+l\b" replace="$1ublic $2chool"/> -<Typo word="Publication" find="\b([pP])ubica([a-z]+)\b" replace="$1ublica$2"/> -<Typo word="(In)Conspicuous" find="\b([cC]|[iI]nc)onspici?ous([a-z]*)\b" replace="$1onspicuous$2"/> -<Typo word="Genius" find="\b([gG])en[io]{2}us\b(?![^\s\.]*\.\w)" replace="$1enius"/><!--avoid domains--> -<Typo word="Men'?s_ (1)" find="\b([mM])ens[????????????????????????`;']?s?\s+([bB]as(?:eball|ketball)|[cC](?:lothing|rew)|[fF]itness|[gG]olf|[hH]ealth|[jJ]ournal|[lL]acrosse|[mM]agazine|[rR]ooms?|[sS]ports?|[tT]e(?:ams?|nnis)|and\s+[wW]omen[????????????????????????`;']?s)\b" replace="$1en's $2"/> -<Typo word="Men's (2)" find="\b([mM])ens[????????????????????????`']s?\s+" replace="$1en's "/><!--avoid "mens" without apostrophe (L.); see also "-men's"--> -<Typo word="Jersey" find="\b([jJ])ersy\b" replace="$1ersey"/> -<Typo word="Strasbourg" find="\b([sS])trassbourg\b(?![^\s\.]*\.\w)" replace="$1trasbourg"/><!--avoid domains--> -<Typo word="NF-??B" find="\b[nN][fF]-?[kK][bB]\b" replace="NF-??B"/> -<Typo word="Dairy_" find="\b([dD])iary\s+(allerg(?:ies|y)|c(?:attle|ouncil)|f(?:arm[a-z]*|oods?)|milk|products?|Queen)\b" replace="$1airy $2"/> -<Typo word="(In)Different" find="\b([dD]|[iI]nd)if(?:e[fr]?|f[ai]?)rene?([a-z]+)\b" replace="$1ifferen$2"/> -<Typo word="Stomach" find="\b([sS])t(?:om(?:ache|och)|umach)(s)?\b" replace="$1tomach$2"/> -<Typo word="Inspection" find="\b([iI])npect(ions?|ors?)\b" replace="$1nspect$2"/> -<Typo word="Re(tro)spective" find="\b([rR]e(?:tro)?)pective(ly|s?)\b" replace="$1spective$2"/> -<Typo word="Identi-" find="\b([iI])ndenti(cal[a-z]*|f(?:i[a-z]+|y[a-z]*)|t(?:ies|y))\b" replace="$1denti$2"/> -<Typo word="Incorporate" find="\b([iI])ncor(?:op(?:or(?:at|ta)|rat)|p(?:orta|rat))(e[ds]?|i(?:ng|on))\b" replace="$1ncorporat$2"/> -<Typo word="Etc." find="\b(?:and\s+)?([eE])(?:tc\b(?<!/etc)([^\.\w])|ct\b\.*)" replace="$1tc.$2"/><!--avoid /etc the Unix file directory--> -<Typo word="(Dis)Establishment" find="\b([dD]ise|[eE])stablishement([a-z]*)\b" replace="$1stablishment$2"/> -<Typo word="Genghis Khan" find="\bG(?:h[ei]ngh?i[sz]?\s+[kK]h?ah?n?|ingh?i[sz]?\s+[kK]h?ah?n?|eng(?:hi(?:s\s+(?:kh?ah?n?|K(?:ah?n?|ha(?:hn?)?))|z\s+[kK]h?ah?n?|\s+[kK]h?ah?n?)|i[sz]?\s+[kK]h?ah?n?))\b" replace="Genghis Khan"/> -<Typo word="Qur'an" find="\bQ(?:or[????????????????????????`']?a?[????????????????????????`']?(?:[??????]|aa?)|u(?:or[????????????????????????`']?a?[????????????????????????`']?(?:[??????]|aa?)|[????????????????????????`']ra?[????????????????????????`'](?:[??????]|aa?)|r(?:a[????????????????????????`'](?:[??????]|aa?)|ra?[????????????????????????`](?:[??????]|aa?)|[????????????????????????`]ra?[????????????????????????`](?:[??????]|aa?)|'(?:[??????]|aa))))n(ic)?\b" replace="Qur'an$1"/><!--not Qaran--> -<Typo word="Guns N' Roses" find="\bGuns(?:[????????????\s](?:&|[????????????????????????`;'](?:n[????????????????????????`']?|N[????????????????????????`\s-])|n[????????????????????????`']?|N[????????????????????????`\s-])|[????????????????????????`;'](?:n[????????????????????????`']?|N[????????????????????????`\s-])|n[????????????????????????`']?|N[????????????????????????`\s-]|&)[????????????\s]?Roses\b" replace="Guns N' Roses"/> -<Typo word="(S/T)old" find="\b([stST])elled\b" replace="$1old"/> -<Typo word="Commedia dell'arte" find="\b([cC])om+edia\s*[dD]el+[????????????????????????`'\s]*\s*?[aA]rte?\b(?<![cC]ommedia dell'arte)" replace="$1ommedia dell'arte"/> -<Typo word="i.e." find="\bi(?:e\.|\.?e)([????????????????????????`'\s,:;\)&-])(?<![^\s\.]*ie[^\.]|\.ie.|[????????????????????????`']ie[????????????????????????`']|\-ie[\s\|\-:])" replace="i.e.$1"/><!--don't generalize to capital Ie; avoid matching website.ie; avoid matching 'ie' used as syllable--> -<Typo word="(1911|Edinburgh) Encyclop??dia" find="\b(1911|Edinburgh)\s+[eE]ncyclop(?:ae|e?)dia\b" replace="$1 Encyclop??dia"/> -<Typo word="Britannica Online" find="\b[bB]rit(?:an(?:ic*|n+ic)|tan+ic*)ca+\s+[oO]nline\b" replace="Britannica Online"/> -<Typo word="Platform" find="\b([pP])lataform(s)?\b" replace="$1latform$2"/> -<Typo word="(Over/Under)Achievement" find="\b([aA]|[oO]vera|[uU]ndera)che?ie?v(d|ments?)\b" replace="$1chieve$2"/> -<Typo word="Elliptic(al/ally)" find="\b([eE])liptic(al(?:ly)?)?\b" replace="$1lliptic$2"/> -<Typo word="Irreparable" find="\b([iI])rrep(?:ai|e)rabl([ey])\b" replace="$1rreparabl$2"/> -<Typo word="Lantern" find="\b([lL])atern(s(?<!Laterns))?\b" replace="$1antern$2"/><!--avoid place name Laterns--> -<Typo word="In(evi/fla/imi/jec)table" find="\b([iI])n(evi|fla|imi|jec)tibl(es?|y)\b" replace="$1n$2tabl$3"/> <!--word="The Earth's" find="\b([tT])he\s+earth[????????????????????????`']s\b" replace="$1he Earth's"/> disabled for now--> </syntaxhighlight> @@ -706,6 +695,8 @@ ====New capitalisation==== <syntaxhighlight lang="xml"> +<Typo word="SharePoint" find="\b[Ss]harepoint\b" replace="SharePoint"/> +<Typo word="SoundCloud" find="\b[Ss]oundcloud\b" replace="SoundCloud"/> <Typo word="Instagram" find="\binstagram\b" replace="Instagram"/> <Typo word="Kurd" find="\bkurd(is(?:h|tan[i??]?)|[s??])\b(?![^\s\.]*\.\w)" replace="Kurd$1"/><!--avoid domains--> <Typo word="GPU" find="\b(?<=\s)(?<!\|\s{0,9})([gG]pu)\b(?![^\s\.]*\.\w)" replace="GPU"/><!--avoid in infobox, filenames i.e mydriver/gpu and domains--> @@ -803,7 +794,7 @@ <Typo word="N??mes" find="\bNimes\b" replace="N??mes"/> <Typo word="Nuevo Le??n" find="\bNuevo\s+Leon\b" replace="Nuevo Le??n"/> <Typo word="??k??rito" find="\bOkarito\b" replace="??k??rito"/> -<Typo word="P??t??" find="\bpat[??e??](s)?\b(?<!\b(bald|shave[dn])\s+pate)" replace="p??t??$1"/><!--avoid surname Pate or Pat??, avoid bald/shaved/shaven pate--> +<Typo word="P??t??" find="\bpat[????](s)?\b" replace="p??t??$1"/><!--pate is a word; needs to be worked to identify the dish positively if it's going to catch the unaccented version--> <Typo word="P??rig(ord/(u)eux)" find="\bP[??e]rig(eux|ord|ueux)\b" replace="P??rig$1"/> <Typo word="Proven??al" find="\bProvencal\b" replace="Proven??al"/> <Typo word="Quer??taro" find="\bQuer[??e]taro\b" replace="Quer??taro"/> @@ -841,6 +832,7 @@ <Typo word="(Un)Account" find="\b([aA]|[uU]na)cco[nu]t(a(?:bl[ey]|n(?:cy|ts?))|ed|ing|s?)\b" replace="$1ccount$2"/> <Typo word="Accus(e/tom)" find="\b([aA])c(?:c+us|us?)s(a(?:ble|l|t(?:i(?:ons?|ves?)|or[a-z]*))|e[drs]?|ing|tom(?:ed|s?))\b" replace="$1ccus$2"/> <Typo word="(Over/Under)Achieve" find="\b([aA]|[oO]vera|[uU]ndera)ch(?:eie?|i(?:ei)?)v(abl[ey]|e[a-z]*|ing)\b" replace="$1chiev$2"/> +<Typo word="(Over/Under)Achievement" find="\b([aA]|[oO]vera|[uU]ndera)che?ie?v(d|ments?)\b" replace="$1chieve$2"/> <Typo word="Acquire" find="\b([aA])(?:cq[iu]|qcui)(r(?:e[drs]?|ing)|siti(?:ons?|ve(?:ly)?))\b" replace="$1cqui$2"/> <Typo word="Acquit" find="\b([aA])c?quitt+(s)?\b" replace="$1cquit$2"/> <Typo word="Acquittal" find="\b([aA])c?qui(?:tt)?t(a(?:ls?|nces?)|ed|ing)\b" replace="$1cquitt$2"/> @@ -920,6 +912,7 @@ <Typo word="Anemone" find="\b([aA])nenome(s)?\b" replace="$1nemone$2"/> <Typo word="Annihilate" find="\b([aA])n(?:hili|ihili|n(?:hil(?:i?|l+)|ihili))at([a-z]+)\b" replace="$1nnihilat$2"/> <Typo word="Announcement" find="\b([aA])n+oun?cment(s)?\b" replace="$1nnouncement$2"/> +<Typo word="Annually" find="\b([aA])n(?:n(?:aull|ual+)|ual+)y\b(?<!nnually)" replace="$1nnually"/> <Typo word="Annul" find="\b([aA])n+ull(ar|ments?|s?)\b" replace="$1nnul$2"/> <Typo word="Annulled" find="\b([aA])n(?:nu|ul)l(ed|ing)\b" replace="$1nnull$2"/> <Typo word="Anoint" find="\b([aA])nnoint(ed|ings?|ments?|s?)\b" replace="$1noint$2"/> @@ -1111,7 +1104,7 @@ <Typo word="Can" find="\b([cC])na\b(?![^\s\.]*\.\w)" replace="$1an"/><!--avoid domains--> <Typo word="Candidate (1)" find="\b([cC])and(?:adat|i(?:at|d(?:iat|ta)))(es?|ures?)\b" replace="$1andidat$2"/> <Typo word="Candidate (2)" find="\b([cC])an[ai]da(c(?:ies|y)|t(?:ures?|e(?:s|\b(?<!Canidate))))\b" replace="$1andida$2"/><!--avoid rapper Canidate--> -<Typo word="Canister" find="\b([cC])annister(s)?\b" replace="$1aniste$2"/> +<Typo word="Canister" find="\b([cC])annister(s)?\b" replace="$1anister$2"/> <Typo word="Cannot" find="\b([cC])a(?:nn)?not\b" replace="$1annot"/> <Typo word="Cantaloupe" find="\b([cC])antalope(s)?\b" replace="$1antaloupe$2"/> <Typo word="Capital" find="\b([cC])aptial(is[mt][a-z]*|s?)\b" replace="$1apital$2"/> @@ -1143,6 +1136,7 @@ <Typo word="Cemetery" find="\b([cC])emen?ta?re?(ies|y)\b" replace="$1emeter$2"/> <Typo word="Censor" find="\b([cC])ensur(s)?\b" replace="$1ensor$2"/> <Typo word="Census" find="\b([cC])encus\b" replace="$1ensus"/><!--avoid latin word sensus--> +<Typo word="Centenary" find="\b([cC])enten(?:e|na)r(i(?:ans?|es)|y)\b" replace="$1entenar$2"/> <Typo word="(Cent|Mill)ipede" find="\b([cC]ent|[mM]ill)[ae]pede(s)?\b" replace="$1ipede$2"/> <Typo word="Central" find="\b([cC])enteral(i(?:s(?:[aei][a-z]*|[mt]s?)|z[aei][a-z]*)|ly)?\b" replace="$1entral$2"/> <Typo word="Century" find="\b([cC])ent(?:ru|ua)r?(i(?:es|ons?)|y)\b" replace="$1entur$2"/> @@ -1271,6 +1265,7 @@ <Typo word="(Re)Considered" find="\b([cC]|[rR]ec)onsider(?:d|es)\b" replace="$1onsidered"/> <Typo word="Consolidate" find="\b([cC])onsol[ao]dat(e[ds]?|i(?:ng|ons?))\b" replace="$1onsolidat$2"/> <Typo word="Consomm??" find="\b([cC])onsomme(s)?\b" replace="$1onsomm??$2"/> +<Typo word="(In)Conspicuous" find="\b([cC]|[iI]nc)onspici?ous([a-z]*)\b" replace="$1onspicuous$2"/> <Typo word="Conspiracy" find="\b([cC])onspiri(c(?:ies|y?)|tor[a-z]*)\b" replace="$1onspira$2"/> <Typo word="(In)Constantly" find="\b([cC]|[iI]nc)onstanly\b" replace="$1onstantly"/> <Typo word="Consternation" find="\b([cC])onstarnation(s)?\b" replace="$1onsternation$2"/> @@ -1355,6 +1350,7 @@ ===D=== <syntaxhighlight lang="xml"> +<Typo word="Dairy_" find="\b([dD])iary\s+(allerg(?:ies|y)|c(?:attle|ouncil)|f(?:arm[a-z]*|oods?)|milk|products?|Queen)\b" replace="$1airy $2"/> <Typo word="Dardanelles" find="\b(?:Darde|dard[ae])nelles\b" replace="Dardanelles"/> <Typo word="Dante Alighieri" find="\bDante\s+Aligh(?:ei?ri|irei?)\b" replace="Dante Alighieri"/> <Typo word="Daughter" find="\b([dD])au(?:gt?h?|hg?t)er(s)?\b" replace="$1aughter$2"/> @@ -1420,6 +1416,7 @@ <Typo word="Diarrhea" find="\b([dD])iar[hr]ea\b" replace="$1iarrhea"/> <Typo word="Dichotomy" find="\b([dD])ichtom(ies|y)\b" replace="$1ichotom$2"/> <Typo word="Didn't" find="\b([dD])idin[????????????????????????`;']?t\b" replace="$1idn't"/> +<Typo word="(In)Different" find="\b([dD]|[iI]nd)if(?:e[fr]?|f[ai]?)rene?([a-z]+)\b" replace="$1ifferen$2"/> <Typo word="Differentiate" find="\b([dD])iff?[aei]?ren(?:[cs]iat|tiatiat)(e[ds]?|i(?:ng|ons?))\b" replace="$1ifferentiat$2"/> <Typo word="Difficult" find="\b([dD])if(?:cu(?:il|l)|f(?:cu(?:il|l)|icu(?:il|li))|icu(?:il|li?))t(ies|ly|y?)\b" replace="$1ifficult$2"/> <Typo word="Diffuse" find="\b([dD])ifus(e(?:[ds]?|ly|ness|rs?)|i(?:ng|on|ve))\b" replace="$1iffus$2"/> @@ -1517,6 +1514,7 @@ <Typo word="Eleventh" find="\b([eE])levn?eth\b" replace="$1leventh"/> <Typo word="(In)Eligible" find="\b([eE]|[iI]ne)l(?:egi|iga?|lig[ai])b(ility|le)\b" replace="$1ligib$2"/> <Typo word="Eliminate" find="\b([eE])l(?:emin|imi)at(e[ds]?|i(?:ng|ons?))\b" replace="$1liminat$2"/> +<Typo word="Elliptic(al/ally)" find="\b([eE])liptic(al(?:ly)?)?\b" replace="$1lliptic$2"/> <Typo word="Else(where)" find="\b([eE])sle(where)?\b" replace="$1lse$2"/> <Typo word="Emanate" find="\b([eE])minat(ations?|e[ds]?)\b" replace="$1manat$2"/> <Typo word="Embarrass" find="\b([eE])mbar(?:as|ra)s(e[ds]|ing(?:ly)?|ments?)?(?!\s+River\b)\b" replace="$1mbarrass$2"/><!--avoid Embarras River--> @@ -1588,7 +1586,9 @@ <Typo word="(Non/Quint)Essential" find="\b([eE]|[nN]one|[qQ]uinte)s(?:se(?:n(?:cia|t(?:ai|ua))|sita)|en[ct]ia)l([a-z]*)\b" replace="$1ssential$2"/> <Typo word="Essentially" find="\b([eE])s+en[ct]iall?y(?<![eE]ssentially)\b" replace="$1ssentially"/> <Typo word="Establishes" find="\b([eE])a?stabi?l?ish?(?<![eE]stablish)(e[ds]?|ing|ments?)?\b" replace="$1stablish$2"/> +<Typo word="(Dis)Establishment" find="\b([dD]ise|[eE])stablishement([a-z]*)\b" replace="$1stablishment$2"/> <Typo word="Estimate" find="\b([eE])sitmat(e[ds]?|i(?:ng|ons?))\b" replace="$1stimat$2"/> +<Typo word="Etc." find="\b(?:and\s+)?([eE])(?:tc\b(?<!/etc)([^\.\w])|ct\b\.*)" replace="$1tc.$2"/><!--avoid /etc the Unix file directory--> <Typo word="Ethnic" find="\b([eE])(?:nthn?i|t(?:hin|ni))c(ally|it(?:ies|y))?\b" replace="$1thnic$2"/><!--avoid Ethenic--> <Typo word="European" find="\b[eE]ur(?:op(?:eo|ia)|po?ea)n(i[sz](?:ation|e[ds]?)|s?)\b" replace="European$1"/> <Typo word="A European" find="\b([aA])n [eE]ur(?:op(?:eo|ia)|po?ea)n(i[sz](?:ation|e[ds]?)|s?)\b" replace="$1 European$2"/> @@ -1742,6 +1742,7 @@ <Typo word="(Re/De)Generate" find="\b([dD]eg|[gG]|[rR]eg)en(?:erat|ra)t([a-z]+)\b" replace="$1enerat$2"/> <Typo word="(Gen/Nem)esis" find="\b([gG]en|[nN]em)[ai]s([ei])s\b" replace="$1es$2s"/> <Typo word="Genital" find="\b([gG])enetal(ia|ly|s?)\b" replace="$1enital$2"/> +<Typo word="Genius" find="\b([gG])en[io]{2}us\b(?![^\s\.]*\.\w)" replace="$1enius"/><!--avoid domains--> <Typo word="General Motors'" find="\bGeneral Motor[????????????????????????`']s\s+" replace="General Motors' "/> <Typo word="Georg(e/ia/etown)" find="\bGe(?:ogr?|rog)(e(?:town)?|ian?s?)\b" replace="Georg$1"/> <Typo word="George" find="\bGoerg(e(?:town)?|ian?s?)\b(?<!Geroge)" replace="Georg$1"/><!--avoid Goerges & Geroge--> @@ -1809,7 +1810,7 @@ <Typo word="Heirs" find="\b([hH])ier(ess(?:es)?|s)(?<!Hiers)\b" replace="$1eir$2"/><!--avoid hier, French/German word or surname Hiers--> <Typo word="Helicopter" find="\b([hH])e(?:ilocopte|l(?:[eo]copte|i(?:copto|[eo]copte)))r(s)?\b" replace="$1elicopter$2"/> <Typo word="Helmet" find="\b([hH])elment(s)?\b" replace="$1elmet$2"/> -<Typo word="Help" find="\b([hH])(?:al|elp|le)p([a-z]*)\b(?<!Halp(?:er(?:in|[nt]?)|in|ov|rin))" replace="$1elp$2"/><!--avoid surnames Halper(n), Halperin, Halpin, Halprin, Halpov, Halpert--> +<Typo word="Help" find="\b([hH])(?:al|elp|le)p([a-z]*)\b(?<!Halp(?:enny|er(?:in|[nt]?)|in|ov|rin))" replace="$1elp$2"/><!--avoid surnames Halper(n), Halperin, Halpin, Halprin, Halpov, Halpert, Halpenny--> <Typo word="Hemorrhage" find="\b([hH])(?:aemorrag|em(?:mor?rh?ag|orh?ag))(e[ds]?|i(?:c|ng))\b" replace="$1emorrhag$2"/> <Typo word="Heredity" find="\b([hH])eridit(ar)?y\b" replace="$1eredit$2y"/> <Typo word="Herg??" find="\bHerge\b" replace="Herg??"/> @@ -1857,6 +1858,7 @@ <Typo word="Identifier" find="\b([iI])dentife(d|rs?)\b" replace="$1dentifie$2"/> <Typo word="Identi(f/t)y" find="\b([iI])denti([ft])iy\b" replace="$1denti$2y"/> <Typo word="Idiosyncra(c/s)y (2)" find="\b([iI])d(?:eosynch?|iosynch)ra([cst][ei-y]+)\b" replace="$1diosyncra$2"/> +<Typo word="i.e." find="\bi(?:e\.|\.?e)([????????????????????????`'\s,:;\)&-])(?<![^\s\.]*ie[^\.]|\.ie.|[????????????????????????`']ie[????????????????????????`']|\-ie[\s\|\-:])" replace="i.e.$1"/><!--don't generalize to capital Ie; avoid matching website.ie; avoid matching 'ie' used as syllable--> <Typo word="Illegal" find="\b([iI])l(?:[ei]+|l+[ei]{2,})gal(ly)?\b(?<!\bEl Ilegal)" replace="$1llegal$2"/> <Typo word="Illinois" find="\b(?:[iI]l(?:ia?noi|l(?:anoi|l+[ai]noi?|noi)|l+(?:ani?o|i(?:ni?o|oni)))s|illinois)\b" replace="Illinois"/> <Typo word="Illness" find="\b([iI])lless(es)?\b" replace="$1llness$2"/> @@ -1879,6 +1881,7 @@ <Typo word="Incinerate" find="\b([iI])(?:cin[ae]|n(?:cina|sin[ae])|sina)rat([a-z]+)\b" replace="$1ncinerat$2"/> <Typo word="Include" find="\b([iI])nclud(s)?\b" replace="$1nclude$2"/> <Typo word="Including" find="\b([iI])n(?:c(?:lud|udi)|lcudi)ng\b" replace="$1ncluding"/> +<Typo word="Incorporate" find="\b([iI])ncor(?:op(?:or(?:at|ta)|rat)|p(?:orta|rat))(e[ds]?|i(?:ng|on))\b" replace="$1ncorporat$2"/> <Typo word="Increase" find="\b([iI])ncraes(e[ds]|ing(?:ly)?)\b" replace="$1ncreas$2"/> <Typo word="Increment" find="\b([iI])ncr[ai]ment(al(?:ly)?|s?)\b" replace="$1ncrement$2"/> <Typo word="Incunabula" find="\b([iI])ncunabla\b" replace="$1ncunabula"/> @@ -1894,6 +1897,7 @@ <Typo word="Industry" find="\b([iI])n(?:d(?:istr|sutr|u(?:sr?t|tr))|udstr)(i(?:al[a-z]*|es)|y)\b" replace="$1ndustr$2"/> <Typo word="Ine(???)ible" find="\bune(d|lig|x(?:haust|press))[ai]b(ility|l[ey])\b" replace="ine$1ib$2"/> <Typo word="Inevitable" find="\b([iI])nev(?:ati|iti(?:ta)?)bl([ey])\b" replace="$1nevitabl$2"/> +<Typo word="In(evi/fla/imi/jec)table" find="\b([iI])n(evi|fla|imi|jec)tibl(es?|y)\b" replace="$1n$2tabl$3"/> <Typo word="Infantry" find="\b([iI])nf(?:ant|rantr)y(m[ae]n|person|wom[ae]n)?\b" replace="$1nfantry$2"/> <Typo word="(Non)Infectious" find="\b([iI]|[nN]oni)nfectuous([a-z]*)\b" replace="$1nfectious$2"/> <Typo word="Infiltrate" find="\b([iI])nfilitrat(e[ds]?|i(?:ng|ons?)|ors?)\b" replace="$1nfiltrat$2"/> @@ -1909,6 +1913,7 @@ <Typo word="Inoculate" find="\b([iI])n(?:noc?|oc)cula([a-z]+)\b" replace="$1nocula$2"/> <Typo word="Input" find="\b([iI])mput(s?|t(?:ed|ing))\b" replace="$1nput$2"/> <Typo word="Insofar" find="\b([iI])n(?:so\s+|\s+so)far\b" replace="$1nsofar"/><!--"insofar" is proper American English, "in so far" proper British; thus correct only mixed usage--> +<Typo word="Inspection" find="\b([iI])npect(ions?|ors?)\b" replace="$1nspect$2"/> <Typo word="Inspire" find="\b([iI])[mn]ps?ir(ation[a-z]*|e[ds]?|ing)\b" replace="$1nspir$2"/> <Typo word="Instead" find="\b([iI])nst(?:ade|ed)\b" replace="$1nstead"/> <Typo word="Instrument" find="\b([iI])n(?:s(?:ru|tur?)|t(?:ru|st?ru))ment(s?|al(?:it(?:ies|y)|is[mt]s?|ly|s?)|ation)\b" replace="$1nstrument$2"/> @@ -1931,6 +1936,7 @@ <Typo word="Investment" find="\b([iI])nvesment(s)?\b" replace="$1nvestment$2"/> <Typo word="Invincible" find="\b([iI])nvinc(?:a|e[ai]?)b(ilit(?:ies|y)|l(?:e(?:ness)?|y))\b" replace="$1nvincib$2"/> <Typo word="Iridescent" find="\b([iI])rridescen(ce|t(?:ly)?)\b" replace="$1ridescen$2"/> +<Typo word="Irreparable" find="\b([iI])rrep(?:ai|e)rabl([ey])\b" replace="$1rreparabl$2"/> <Typo word="Irritate" find="\b([iI])r(?:i|ra)ta(bl[ey]|t(?:e[ds]?|i(?:ng(?:ly)?|on)))\b" replace="$1rrita$2"/> <Typo word="Isn't" find="\b([iI])sn[????????????????????????`;]?t\b" replace="$1sn't"/> <Typo word="Israel" find="\b(?:isr(?:ae|ea)|Isrea)l(i(?:s?|tes?))?\b" replace="Israel$1"/> @@ -1943,6 +1949,7 @@ <Typo word="Jan????ek" find="\bJan(?:??c|[a????????????][c??])ek\b" replace="Jan????ek"/> <Typo word="Jardini??re" find="\b([jJ])ardiniere\b" replace="$1ardini??re"/> <Typo word="Jeopardy" find="\b([jJ])eapardy\b" replace="$1eopardy"/> +<Typo word="Jersey" find="\b([jJ])ersy\b" replace="$1ersey"/> <Typo disabled="Jewel(le)ry" find="\b([jJ])ewl(le)?e?ry\b" replace="$1ewel$2ry"/> <Typo disabled="Jewellery" find="\b([jJ])ewel(?:e|la)ry\b" replace="$1ewellery"/> <Typo word="Joan Mir??" find="\b[jJ]oan\s+[mM]iro\b" replace="Joan Mir??"/> @@ -1982,6 +1989,7 @@ <Typo word="Laid" find="\b([lL])ayed\b" replace="$1aid"/> <Typo word="L??ndler" find="\b([lL])andler\b" replace="$1??ndler"/> <Typo word="Language" find="\b([lL])a(?:gua|ng(?:a(?:ua?)?|u(?:an?)?))gu?e(?<!anguage)(s)?\b" replace="$1anguage$2"/> +<Typo word="Lantern" find="\b([lL])atern(s(?<!Laterns))?\b" replace="$1antern$2"/><!--avoid place name Laterns--> <Typo word="Large" find="\b([lL])arg(ly|st)?\b" replace="$1arge$2"/> <Typo word="Largely" find="\b([lL])arg(?:el(?:e|le?)|le)y\b" replace="$1argely"/> <Typo word="Larvae" find="\b([lL])avr?ae\b" replace="$1arvae"/> @@ -2036,7 +2044,7 @@ <Typo word="Mackerel" find="\b([mM])ackeral\b" replace="$1ackerel"/> <Typo word="Macram??" find="\b([mM])acrame\b" replace="$1acram??"/> <Typo word="Ma(d/k)e" find="\bAm([dk](?:es?|ing))\b(?<!\bAmde)" replace="Ma$1"/><!--avoid Amde--> -<Typo word="ma(d/k)e" find="\bam([dk](?:es?|ing))\b" replace="ma$1$2"/> +<Typo word="ma(d/k)e" find="\bam([dk](?:es?|ing))\b" replace="ma$1"/> <Typo word="Magazine" find="\b([mM])agasine(s)?\b" replace="$1agazine$2"/> <Typo word="Mainly" find="\b([mM])ailny\b" replace="$1ainly"/> <Typo word="Maintain" find="\b([mM])ant(?:ai|ia)n(ab[a-z]+|e[dr]|ing|s?)\b" replace="$1aintain$2"/> @@ -2063,7 +2071,7 @@ <Typo word="Masturbate" find="\b([mM])asterbat([ei][a-z]*)\b" replace="$1asturbat$2"/> <Typo word="Material" find="\b([mM](?:ater|etamater))ai?l(is(?:m|ts?)|s?)\b" replace="$1ial$2"/> <Typo word="Mathematician" find="\b([mM])athe(?:[ae]+tic|m[ae]*tic|tic)i?an(s)?\b(?<![mM]athematicians?)" replace="$1athematician$2"/><!--avoid self--> -<Typo word="Mathematic*" find="\b([mM])ath[ae]?matica?(al[a-z]*|s?)\b(?<!Mathematica)" replace="$1athematic$2"/> +<Typo word="Mathematic*" find="\b([mM])ath[ae]?matica?(al[a-z]*|s?)\b(?<![Mm]athematic(?:a|al(?:[a-z]*)|s))(?<!ica)" replace="$1athematic$2"/> <Typo word="Mayonnaise" find="\b([mM])ayon(?:ais?|nais)se(s)?\b" replace="$1ayonnaise$2"/> <Typo word="Mayoral" find="\b([mM])ayorial(ty)?\b" replace="$1ayoral$2"/> <Typo word="Meant" find="\bmenat\b" replace="meant"/><!--avoid Egyptian goddess Menat--> @@ -2074,6 +2082,8 @@ <Typo word="Memoir" find="\b([mM])emior(ists?|s?)\b" replace="$1emoir$2"/> <Typo word="memorable" find="\brememberable\b" replace="memorable"/> <Typo word="Memorable" find="\bRememberable\b" replace="Memorable"/> +<Typo word="Men'?s_ (1)" find="\b([mM])ens[????????????????????????`;']?s?\s+([bB]as(?:eball|ketball)|[cC](?:lothing|rew)|[fF]itness|[gG]olf|[hH]ealth|[jJ]ournal|[lL]acrosse|[mM]agazine|[rR]ooms?|[sS]ports?|[tT]e(?:ams?|nnis)|and\s+[wW]omen[????????????????????????`;']?s)\b" replace="$1en's $2"/> +<Typo word="Men's (2)" find="\b([mM])ens[????????????????????????`']s?\s+" replace="$1en's "/><!--avoid "mens" without apostrophe (L.); see also "-men's"--> <Typo word="M??nage ?? trois" find="\b([mM])(?:??nage\s+[??a]|enage\s+[a????])\s+trois\b" replace="$1??nage ?? trois"/> <Typo word="Mental" find="\b([mM])enally\b" replace="$1entally"/> <Typo word="Mention" find="\b([mM])aintion(ed|ing|s?)\b" replace="$1ention$2"/> @@ -2172,6 +2182,7 @@ <Typo word="Newsletter" find="\b([nN])ew[ls]etter(s)?\b" replace="$1ewsletter$2"/> <Typo word="Newspaper" find="\b([nN])e[sw]paper(m[ae]n|s?|wom[ae]n)\b" replace="$1ewspaper$2"/> <Typo word="Newsstand" find="\b([nN])ewstand(s)?\b" replace="$1ewsstand$2"/> +<Typo word="NF-??B" find="\b[nN][fF]-?[kK][bB]\b" replace="NF-??B"/> <Typo word="Niccol?? Machiavelli" find="\b[nN]ic+ol+o\s+[mM]ac+hi?avel+i\b" replace="Niccol?? Machiavelli"/> <Typo word="Nickel_" find="(?!\bNickle\b)\b([nN])ickle(i(?:c|ferous)|o(?:deons?|us))?\b" replace="$1ickel$2"/><!--avoid surname Nickle--> <Typo word="Niece" find="\b([nN])eice(s)?\b" replace="$1iece$2"/> @@ -2204,7 +2215,7 @@ <Typo word="Nuptial" find="\b([nN])uptual(s)?\b" replace="$1uptial$2"/> <Typo word="Nurturing" find="\b([nN])utur(e[ds]?|ing)\b" replace="$1urtur$2"/> <Typo word="n-round something" find="\b(\d+|e(?:ight(?:een|y?)|leven)|f(?:i(?:ft(?:een|y)|ve)|o(?:rty|ur(?:teen)?))|hundred|nine(?:t(?:een|y))?|one|s(?:even|ix)(?:t(?:een|y))?|t(?:en|h(?:irt(?:een|y)|ousand|ree)|w(?:e(?:lve|nty)|o)))\b\s+round(?=\s+(?:d(?:ecisions?|raws?)|knockouts?|KOs?|match(?:es)?|newspaper\s+decisions?|technical\s+knockouts?|TKOs?))" replace="$1-round"/><!--"A n-something" won't catch all useful, esp. boxing-related things--> -<Typo word="n-something contract/deal/run/etc." find="\b((?<!,)\d{1,3}|e(?:ight(?:een|y?)|leven)|f(?:i(?:ft(?:een|y)|ve)|o(?:rty|ur(?:teen)?))|hundred|nine(?:t(?:een|y))?|one|s(?:even|ix)(?:t(?:een|y))?|t(?:en|hr(?:ee|irt(?:een|y))|w(?:e(?:lve|nty)|o)))(?: |\s+)(album|book|episode|fi(?:ght|lm)|game|movie|picture|record)(?=\s+(?:contract|deal|run|s(?:eason|uspension|weep))\b)" replace="$1-$2"/><!--entertainment-related hyphen combos--> +<Typo word="n-something contract/deal/run/etc." find="\b((?<!,)\d{1,3}|e(?:ight(?:een|y?)|leven)|f(?:i(?:ft(?:een|y)|ve)|o(?:rty|ur(?:teen)?))|hundred|nine(?:t(?:een|y))?|one|s(?:even|ix)(?:t(?:een|y))?|t(?:en|hr(?:ee|irt(?:een|y))|w(?:e(?:lve|nty)|o)))(?: |\s+)(album|book|episode|fi(?:ght|lm)|game|movie|picture|record)(?=\s+(?:contract|deal|run|s(?:eason|eries|uspension|weep))\b)" replace="$1-$2"/><!--entertainment-related hyphen combos--> <Typo word="n-time champion/winner_" find="\b([\d]+[\d,\.]*|e(?:ight(?:een|y?)|leven)|f(?:i(?:ft(?:een|y)|ve)|o(?:rty|ur(?:teen)?))|hundred|nine(?:t(?:een|y))?|one|s(?:even|ix)(?:t(?:een|y))?|t(?:en|h(?:irt(?:een|y)|ousand|ree)|w(?:e(?:lve|nty)|o)))\b\s+time(?=\s+(?:champions?|defending\s+champions?|losers?|nominees?|winners?))" replace="$1-time"/> </syntaxhighlight> @@ -2242,6 +2253,7 @@ <Typo word="Opening" find="\b([oO])p+enn(ed|ings?)\b" replace="$1pen$2"/> <Typo word="Operate" find="\b([oO])perrat([a-z]+)\b" replace="$1perat$2"/> <Typo word="Ophthalmology" find="\b([oO])pthal?m(ic|olog(?:ists?|y))\b" replace="$1phthalm$2"/> +<Typo word="Opioid" find="\b([oO])piod(s)?\b" replace="$1pioid$2"/> <Typo word="Oppo(nent/site)" find="\b([oO])ppe(nents?|s(?:e[ds]?|i(?:ng|tes?)))\b" replace="$1ppo$2"/> <Typo word="Opponent" find="\b([oO])ppono?nent(s)?\b" replace="$1pponent$2"/> <Typo word="Opportunity" find="\b([oO])p+(?:er|or?|ror?|ur)t?uni(?<![oO]pportuni)(s(?:[mt]s?|tic[a-z]*)|t(?:ies|y))\b" replace="$1pportuni$2"/> @@ -2354,9 +2366,10 @@ <Typo word="Plague" find="\b([pP])laug(e[ds]?|ing)\b" replace="$1lagu$2"/> <Typo word="Plaintiff" find="\b([pP])lantiff?(s)?\b" replace="$1laintiff$2"/> <Typo word="_plant life" find="(?!\bPlantlife\b)\b([pP])lant-?life\b" replace="$1lant life"/><!--avoid proper n. Plantlife--> -<Typo word="Plantation" find="\b([pP])la[nt]ation(s)?\b" replace="$1lantation$2"/> +<Typo word="Plantation" find="\b([pP])latation(s)?\b" replace="$1lantation$2"/><!-- planation is a word --> <Typo disable="Plaque" find="\b([pP])lacque(s)?\b" replace="$1laque$2"/><!--avoid placque http://www.merriam-webster.com/medical/placque--> <Typo word="Plateau" find="\b([pP])lateu(s)?\b" replace="$1lateau$2"/> +<Typo word="Platform" find="\b([pP])lataform(s)?\b" replace="$1latform$2"/> <Typo word="Platinum" find="\b([pP])lat(?:ini|ni?)um(s)?\b" replace="$1latinum$2"/> <Typo word="Playwright" find="\b([pP])lay(?:right|writer?)(s)?\b" replace="$1laywright$2"/> <Typo word="(Un)Pleasant" find="\b([pP]|[uU]np)l(?:aesa|e(?:ase|sa))nt(ly|ness)?\b" replace="$1leasant$2"/> @@ -2410,7 +2423,7 @@ <Typo word="Prerogative" find="\b([pP])erogative(s)?\b" replace="$1rerogative$2"/> <Typo word="Presence" find="\b([pP])res(?:anc|cenc|ens)e\b" replace="$1resence"/> <Typo word="Presidential" find="\b([pP])res(?:edenti|idenit)al\b" replace="$1residential"/> -<Typo word="Prestigious" find="\b([pP])res(?:it(?:eg[ei]|gi|ig[ei])|t(?:[ei]g[ei]|tig))ous(ly)?\b" replace="$1restigious$2"/> +<Typo word="Prestigious" find="\b([pP])res(?:it(?:eg[ei]|gi|ig[ei])|t(?:eg[ei]|ige?|tig))ous(ly)?\b" replace="$1restigious$2"/> <Typo word="Presumably" find="\b([pP])resum(?:abe|ib)ly\b" replace="$1resumably"/> <Typo word="Priest" find="\b([pP])reist(hoods?|ly|s?)\b" replace="$1riest$2"/> <Typo word="Priesthood" find="\b([pP])riestood\b" replace="$1riesthood"/> @@ -2476,6 +2489,8 @@ <Typo word="Provocative" find="\b([pP])rovacative(ly)?\b" replace="$1rovocative$2"/> <Typo word="Proximity" find="\b([pP])roximty\b" replace="$1roximity"/> <Typo word="Psyche+" find="\b([pP])(?:hych|sy[ch]|ysc)(e(?:del?ics?|s?)|iatr[a-z]+|o(?:ics?|log[a-z]+|tics?))\b" replace="$1sych$2"/> +<Typo word="Public school" find="\b([pP])ubic\s*([sS])[ch]{1,2}o+l\b" replace="$1ublic $2chool"/> +<Typo word="Publication" find="\b([pP])ubica([a-z]+)\b" replace="$1ublica$2"/> <Typo word="(Un)Published" find="\b([pP]|[uU]np)ub(?:ish|lis)(able|e(?:[ds]?|rs?)|ing)?\b" replace="$1ublish$2"/> <Typo word="Puccini" find="\bpucc?ini\b" replace="Puccini"/> <Typo word="pumpkin" find="\bpumkin\b" replace="pumpkin"/><!--avoid Pumkin--> @@ -2512,7 +2527,6 @@ <Typo word="Ratify" find="\b([rR])adif(i(?:cation|e[ds])|y)\b" replace="$1atif$2"/> <Typo word="Raucous" find="\b([rR])a(?:ca|uc)us(ly)?\b" replace="$1aucous$2"/> <Typo word="Reach" find="\b([rR])e(?:ac|ch)(e[ds]|ing)\b" replace="$1each$2"/> -<Typo word="real" find="\brela\b" replace="real"/><!--avoid surname Rela--> <Typo word="Realistic" find="\b([rR])ealsit(ic[a-z]*|s?)\b" replace="$1ealist$2"/> <Typo word="Realized" find="\b([rR])eliz(ation|e[ds]?|ing)\b" replace="$1ealiz$2"/> <Typo word="Really" find="\b([rR])(?:ael|el?a)ly\b" replace="$1eally"/> @@ -2522,6 +2536,7 @@ <Typo word="Rebound" find="\b([rR])ebounce\b" replace="$1ebound"/> <Typo word="Recall" find="\b([rR])eacll(ed|ing|s?)\b" replace="$1ecall$2"/> <Typo word="Recipe" find="\b([rR])ecipie(s)?\b" replace="$1ecipe$2"/> +<Typo word="Recipient" find="\b([rR])ec(?:ei?|ie)pient(s)?\b" replace="$1ecipient$2"/> <Typo word="Recognise" find="\b([rR])eco[gn]i([sz](?:abl[ey]|e[ds]?|ing)|tions?)\b" replace="$1ecogni$2"/> <Typo word="Recommend" find="\b([rR])e(?:c(?:c[ao]m?men|om(?:en?|m(?:an|e)))|ommen)d(a(?:ble|t[a-z]+)|e(?:d|rs?)|ing|s?)\b" replace="$1ecommend$2"/> <Typo word="Reconciliation" find="\b([rR])econ[cs]il(?:li)?at(ions?|ory)\b" replace="$1econciliat$2"/> @@ -2576,7 +2591,7 @@ <Typo word="Reorganization" find="\b([rR])eorganision\b" replace="$1eorganization"/> <Typo word="Repeated" find="\b([rR])epetead(ly)?\b" replace="$1epeated$2"/> <Typo word="(Un)Repentant" find="\b([rR]|[uU]nr)epe(?:nte|t[ae])n(ce|t(?:ly)?)\b" replace="$1epentan$2"/> -<Typo word="Repertoire" find="\b([rR])ep[eir]to(?:ires?|r(?:i(?:al|es)|y))\b" replace="$1eperto$2"/> +<Typo word="Repertoire" find="\b([rR])ep[eir]to(ires?|r(?:i(?:al|es)|y))\b" replace="$1eperto$2"/> <Typo word="Replacement" find="\b([rR])elpacement(s)?\b" replace="$1eplacement$2"/> <Typo word="Reported" find="\b([rR])eportad(ly)?\b" replace="$1eported$2"/> <Typo word="Represent" find="\b([rR])e(?:p(?:es+[ae]?[ent]+|p[pr]*es+[ae]?[ent]+|r(?:es+[ae]?[ent]+|[pr]+es+[ae]?[ent]+|sent))|r[pr]*es+[ae]?[ent]+)(?<!epres(?:ent|se))(ati(?:on(?:al|s?)|ves?)|ed|ing|s?)\b" replace="$1epresent$2"/> @@ -2605,6 +2620,7 @@ <Typo word="Retaliate" find="\b([rR])etalitate([ds])?\b" replace="$1etaliate$2"/> <Typo word="Retaliation" find="\b([rR])etalitation\b" replace="$1etaliation"/> <Typo word="Retrieve" find="\b([rR])et(?:ire|rei)v(als?|e[ds]|ing)\b" replace="$1etriev$2"/> +<Typo word="Re(tro)spective" find="\b([rR]e(?:tro)?)pective(ly|s?)\b" replace="$1spective$2"/> <Typo word="Returned" find="\b([rR])etu(?:nre|rn)d\b" replace="$1eturned"/> <Typo word="Reversal" find="\b([rR])everal(s)?\b" replace="$1eversal$2"/> <Typo word="(R)Evolutionary" find="\b([eE]|[rR]e)volutiona[ry]\b" replace="$1volutionary"/> @@ -2723,6 +2739,7 @@ <Typo word="Social" find="\b(?:(S)o(?:cal\B|ical)|(s)o(?:cal|ical))(i[sz](?:ations?|e[ds]?|ing)|is[mt]s?|it(?:es?|ies?|y)|ly)?\b" replace="$1$2ocial$3"/><!--avoid Socal--> <Typo word="Societies" find="\b([sS])ocities\b" replace="$1ocieties"/> <Typo word="Software" find="\b([sS])of(?:ware|twares\b(?<!\bRJ Softwares))\b" replace="$1oftware"/><!--avoid RJ Softwares--> +<Typo word="(S/T)old" find="\b([stST])elled\b" replace="$1old"/> <Typo word="sold-out_" find="\bsold\s+out\b(?=\s+(?:a(?:renas?|udiences?)|c(?:oncerts?|rowds?)|events?|g(?:ames?|igs?)|h(?:eadline|o(?:me|use))|performances?|runs?|shows?|tours?|venues?))" replace="sold-out" /> <Typo word="Soldier" find="\b([sS])o(?:il|li)der(ing|s?)\b" replace="$1oldier$2"/> <Typo word="Solely_" find="\b(?<![A-Z][a-z]{0,99}\s{1,9})soley\b" replace="solely"/><!--avoid surname Soley--> @@ -2783,6 +2800,7 @@ <Typo word="Stirring" find="\b(s)tir(ed|ing)\b" replace="$1tirr$2"/> <Typo word="Stirs" find="\b([sS])tirrs\b" replace="$1tirs"/> <Typo word="Stockholm" find="\b[sS]tockho(?:lme|me?)\b" replace="Stockholm"/> +<Typo word="Stomach" find="\b([sS])t(?:om(?:ache|och)|umach)(s)?\b" replace="$1tomach$2"/> <Typo word="Stop" find="\b([sS])tpo(s)?\b" replace="$1top$2"/> <Typo word="(Hi)Stories" find="\b([hH]is|[sS])tor(?:eis|ise)\b" replace="$1tories"/> <Typo word="(Hi)Story" find="\b([hH]is|[sS])(?:otry|t(?:o(?:pry|yr)|roy))\b" replace="$1tory"/> @@ -2966,7 +2984,7 @@ <Typo word="Transferred" find="\b([tT])rans?fe(r(?:e[dr]|ing?)|s?)\b" replace="$1ransfer$2"/> <Typo word="Transform" find="\b([tT])ranform(a(?:ble|ti[a-z]+)|e(?:d|rs?)|ing|s?)\b" replace="$1ransform$2"/> <Typo word="Transition" find="\b([tT])rans(?:i(?:s|ti))?tion(al|s?)\b" replace="$1ransition$2"/> -<Typo word="Translate" find="\b([tT])rans?a?lat(e[ds]?|i(?:ng|ons?)|ors?)?\b" replace="$1ranslat$2"/> +<Typo word="Translate" find="\b([tT])ran(?:s?a)?lat(e[ds]?|i(?:ng|ons?)|ors?)?\b" replace="$1ranslat$2"/> <Typo word="Transparent" find="\b([tT])ransp(?:ar[a-df-z]|[b-z]r\w)n(c[ey]|ness|t(?:ly|ness)?)\b" replace="$1ransparen$2"/> <Typo word="Transportation" find="\b([tT])ranspora(b(?:ility|le)|tion)\b" replace="$1ransporta$2"/> <Typo word="Transcontinental" find="\b([tT])rans[????????????\s]continental\b" replace="$1ranscontinental"/> @@ -3156,16 +3174,16 @@ <Typo word="Gbit/s" find="([\d\.]+(?:[????????????\s]| )?)[gG](?:Bit(?:[p\/]se?c?|s[p\/]se?c?)|b(?:it(?:[p\/]se?c?|s[p\/]se?c?)|[p\/]se?c?|s[p\/]se?c?))\b" replace="$1Gbit/s"/> <Typo word="cm??" find="\b(?<!\{)[sS][qQ][-\.\s]+[cC][mM][sS]?\b" replace="cm<sup>2</sup>"/><!--avoid conversion templates--> <Typo word="F (farad)" find="([\d\.]+(?:[????????????\s]| )?[n??kMT])f\b" replace="$1F"/> -<Typo word="GHz (gigahertz)" find="([\d\.]+(?:[????????????\s]| )?)(?:g(?:[hH][zZ]|???)|G(?:???|h[zZ]|HZ)|???)\b" replace="$1GHz"/> +<Typo word="GHz (gigahertz)" find="([\d\.]+(?:[????????????\s]| )?)(?:g(?:[hH][zZ]|???)|G(?:???|h[zZ]|HZ)|???)\b" replace="$1 GHz"/> <Typo word="GPa (gigapascal)" find="([\d\.]+(?:[????????????\s]| )?)gP[aA]\b" replace="$1GPa"/> -<Typo word="Hz (hertz)" find="\b([??mkMGT\s]|[-\d\.]+(?: |-)?)(?:h[zZ]|???)\b" replace="$1Hz"/> +<Typo word="Hz (hertz)" find="\b([??mkMGT\s]|[-\d\.]+(?: |-)?)(?:h[zZ]|???)\b" replace="$1 Hz"/> <Typo word="J (joule)" find="([\d\.]+(?:[????????????\s]| )?[??mkMGT])j\b" replace="$1J"/> -<Typo word="kg (kilogram)" find="([\d\.]+)(?<!\b(?:19(?:02|[7-9]\d)|2001))(?:\s| )?(?:K[gG][????????????????????????`']?s?|k[gG][????????????????????????`;']?s|???[????????????????????????`']?s?)\b(?<!Co\.\s?KG|I\.\s?KG|Psych\.KG)" replace="$1 kg"/><!--avoid "yyyy KG" minor planets, a publisher, named military units, and an album--> +<Typo word="kg (kilogram)" find="(\.?\d[\d\.]*)(?<!\b(?:19(?:02|[7-9]\d)|2001))(?:\s| )?(?:K[gG][????????????????????????`']?s?|k[gG][????????????????????????`;']?s|???[????????????????????????`']?s?)\b" replace="$1 kg"/><!--avoid "yyyy KG" minor planets, a publisher, named military units, an album, and Kampfgeschwader abbr at sentence start--> <Typo word="-kg (kilogram)" find="([\d\.]+)-(?:K[gG][????????????????????????`']?s?|k[gG][????????????????????????`;']?s|???[????????????????????????`']?s?)\b" replace="$1-kg"/> <Typo word="kHz (kilohertz)" find="([\d\.]+)(?:\s| )?(?:K(?:[hH][zZ]|???)|k(?:hz|???))\b" replace="$1 kHz"/> <Typo word="-kHz (kilohertz)" find="([\d\.]+)-(?:K(?:[hH][zZ]|???)|k(?:hz|???))\b" replace="$1-kHz"/> <Typo word="kJ (kilojoule)" find="([\d\.]+(?<!\b(?:19(?:02|7[29]|[89]\d)|200[036]))(?:[????????????\s]| )?)K[jJ]\b" replace="$1kJ"/><!--avoid "yyyy KJ" minor planets--> -<Typo word="km (kilometre)" find="([\d\.]+)(?<!\b(?:19(?:21|7[29]|8[02]|9\d)|2001|(?:KMS|OS)[????????????\s]*(?:[4-9]\d|1[0-3]\d)))(?:\s| )?(?:K[mM][????????????????????????`']?s?|k[mM][????????????????????????`;']?s)\b" replace="$1 km"/><!--avoid "yyyy KM" minor planets, and named military units--> +<Typo word="km (kilometre)" find="([\d\.]+)(?<!\b(?:19(?:21|7[29]|8[02]|9\d)|2001|(?:KMS|OS)[????????????\s]*(?:[4-9]\d|1[0-3]\d)))(?:\s| )?(?:K[mM][????????????????????????`']?s?|k[mM][????????????????????????`;']?s)\b(?<![a-z]\.\s+KM)" replace="$1 km"/><!--avoid "yyyy KM" minor planets, and named military units--> <Typo word="-km (kilometre)" find="([\d\.]+)-(?:K[mM][????????????????????????`']?s?|k[mM][????????????????????????`;']?s|???[????????????????????????`']?s?)\b" replace="$1-km"/> <Typo word="km??" find="\b(?<!\{)[sS][qQ][-\.\s]+[kK][mM][sS]?\b" replace="km<sup>2</sup>"/><!--avoid conversion templates--> <Typo word="kPa (kilopascal)" find="([\d\.]+(?:[????????????\s]| )?)(?:kp[aA]|K(?:Pa|pA))\b" replace="$1kPa"/><!--avoid KPA--> @@ -3267,7 +3285,7 @@ <Typo word="Anti(gua/lles)" find="\banti(guan?s?|lles)\b(?![^\s\.]*\.\w)" replace="Anti$1"/> <Typo word="Greater Antilles" find="\bgreater\s+[aA]ntil{1,3}es\b" replace="Greater Antilles"/> <Typo word="Lesser Antilles" find="\bles+er\s+[aA]ntil{1,3}es\b" replace="Lesser Antilles"/> -<Typo word="Arabia" find="\b[aA]rai?b(an?s?|ia?n?s?|ns?|s?)\b(?![^\s\.]*\.\w)" replace="Arab$1"/> +<Typo word="Arabia" find="\b[aA]rai?b(an?s?|ia?n?s?|ns?|s?)\b(?<!Arab(?:ia|ians?|s?))(?![^\s\.]*\.\w)" replace="Arab$1"/> <Typo word="Argentina" find="\bargentin(a|e(?:ans?|s?))\b(?!'')(?![^\s\.]*\.\w)" replace="Argentin$1"/><!--avoid species--> <Typo word="Armenia" find="\barmenia(ns?)?\b(?![^\s\.]*\.\w)" replace="Armenia$1"/> <Typo word="Aruba" find="\baruba(ns?|s?)\b(?![^\s\.]*\.\w)" replace="Aruba$1"/> @@ -3566,6 +3584,11 @@ <Typo word="Winnipeg" find="\bwin+[aei]peg\b(?![^\s\.]*\.\w)" replace="Winnipeg"/> </syntaxhighlight> +=====France===== +<syntaxhighlight lang="xml"> +<Typo word="Strasbourg" find="\b([sS])trassbourg\b(?![^\s\.]*\.\w)" replace="$1trasbourg"/><!--avoid domains--> +</syntaxhighlight> + =====United Kingdom===== <syntaxhighlight lang="xml"> <Typo word="Britain_1" find="\b(?:br(?:it?|ri)?t(ains?|i(?:cisms?|sh(?:ers?|isms?|ly|ness)?)|ney|ons?|pop|tany))\b(?![^\s\.]*\.\w)" replace="Brit$1"/> @@ -3635,9 +3658,11 @@ <Typo word="Tennessee (2)" find="\b[tT]en(?:ess+e*|n(?:e(?:s(?:e+|s(?:ee+|s+e*))?)|n+es(?:e+|s+e*)?))(ans?|e)\b" replace="Tennesse$1"/> <Typo word="Tennessee (1)" find="\btennesse(ans?|e)\b(?![^\s\.]*\.\w)" replace="Tennesse$1"/> <Typo word="Texas" find="\btexa(s(?!'')|ns?)\b(?<!\b\p{Lu}\.\s+texas\b)(?![^\s\.]*\.\w)(?<!\.[^\s\.]{0,999})" replace="Texa$1"/><!--avoid species--> +<!-- combined in New additions section <Typo word="United States (3)" find="\bUnited\s+Stated\b" replace="United States"/> <Typo word="United States (1)" find="\b[uU]nited\s*states\b" replace="United States"/> <Typo word="United States (2)" find="\b[uU]nite[ds][sS]tates\b" replace="United States"/> +--> <Typo word="Utah" find="\butah(?!'')(ans?)?\b(?<!\b\p{Lu}\.\s+utah\b)(?![^\s\.]*\.\w)(?<!\.[^\s\.]{0,999})" replace="Utah$1"/><!--avoid species--> <Typo word="Vermont" find="\bvermont(ers?)?\b(?![^\s\.]*\.\w)" replace="Vermont$1"/> <Typo word="Virginia_" find="\b(?:Vi|vir)gini?a(ns?)?\b(?!'')(?<!\b\p{Lu}\.\s+virginia(?:ns?)?)(?![^\s\.]*\.\w)(?<!\.[^\s\.]{0,999})" replace="Virginia$1"/><!--avoid species--> @@ -3712,7 +3737,7 @@ <Typo word="August (3)" find="\b([aA])ugu(?:as?|es)t\b" replace="$1ugust"/> <Typo word="September" find="\b(?:se(?:mp?temb|pte(?:m(?:eb|[pb])|nb|rmb)?)|Se(?:mp?temb|pte(?:m(?:eb|p)|nb|rmb)?))er(s)?\b" replace="September$1"/> <Typo word="October" find="\b(?:octo(?:b|rb|v)|Octo(?:rb|v))er(s)?\b" replace="October$1"/> -<Typo word="November" find="\b(?:N(?:ov(?:e(?:me|n|rm)|me)|o[bc]em)|n(?:ov(?:e(?:me?|n|rm)|me)|o[bc]em))ber(s)?\b" replace="November$1"/> +<Typo word="November" find="\b(?:N(?:ov(?:e(?:me|n|rm)|me)|o[bc]em|owem)|n(?:ov(?:e(?:me?|n|rm)|me)|o[bc]em|owem))ber(s)?\b" replace="November$1"/> <Typo word="December" find="\b(?:D(?:e(?:bem|c(?:e(?:mem?|n|rm)|me)|[sv]em)|isem)|d(?:e(?:bem|c(?:e(?:me?m?|n|rm)|me)|[sv]em)|isem))ber(s)?\b" replace="December$1"/> <!--Day name errors--> @@ -3723,7 +3748,7 @@ <Typo word="Wednesday" find="\b(?:We(?:d(?:esd|nessd)|nd?e?sd?)|we(?:d(?:esd|ness?d)|nd?e?sd?))ay(s)?\b" replace="Wednesday$1"/> <Typo word="Thursday" find="\b[tT]hrusday(s)?\b" replace="Thursday$1"/> <Typo word="Friday" find="\bfriday(s)?\b" replace="Friday$1"/> -<Typo word="Saturday" find="\b[sS]at[eu]*rday(s)?\b" replace="Saturday$1"/> +<Typo word="Saturday" find="\b(?:[sS]ate?|satu)rday(s)?\b" replace="Saturday$1"/> <!--Special days--> <Typo word="Michaelmas" find="\bmich[ae]*lmas+\b" replace="Michaelmas"/> <Typo word="Easter" find="\beaster(?!\s+egg)(?<![nN]or[????????????????????????`']easter)\b" replace="Easter"/> @@ -3731,23 +3756,35 @@ ====Miscellaneous proper nouns==== <syntaxhighlight lang="xml"> +<Typo word="(1911|Edinburgh) Encyclop??dia" find="\b(1911|Edinburgh)\s+[eE]ncyclop(?:ae|e?)dia\b" replace="$1 Encyclop??dia"/> +<Typo word="AC/DC" find="\b[aA][cC]-[dD][cC]\b" replace="AC/DC"/> <Typo word="Anglican" find="\banglican(ism|s?)\b(?![^\s\.]*\.\w)" replace="Anglican$1"/> <Typo word="Baptist_" find="\bbaptist(\s+(?:Church|c(?:hurch|ollege)|minister|preacher|school|university)s?|(?<=John\s{1,9}[tT]he\s{1,9}baptist))\b(?![^\s\.]*\.\w)(?<!\.[^\s\.]{0,999})" replace="Baptist$1"/><!--avoid FPs via look around for key terms--> +<Typo word="Britannica Online" find="\b[bB]rit(?:an(?:ic*|n+ic)|tan+ic*)ca+\s+[oO]nline\b" replace="Britannica Online"/> <Typo word="Calvinism (1)" find="\b[cC]alvanis(m|ts?)\b" replace="Calvinis$1"/> <Typo word="Calvinism (2)" find="\bcalvinis([mt][a-z]*)\b(?![^\s\.]*\.\w)" replace="Calvinis$1"/> <Typo word="Christ(mas/ian_/endom/)" find="(?!\bCristian\b)\b(?:christ|[cC](?:hirst|hris(?=\w)|hrsit|rist))(ian(?:dom|ity|i[sz](?:ation|e[ds]?|ing)|sted)|endom|mas(?:days?|es|sy|ti[dm]es?|y?))\b(?![^\s\.]*\.\w)" replace="Christ$1"/> +<Typo word="Commedia dell'arte" find="\b([cC])om+edia\s*[dD]el+[????????????????????????`'\s]*\s*?[aA]rte?\b(?<![cC]ommedia dell'arte)" replace="$1ommedia dell'arte"/> <Typo word="Francisco" find="\b[fF]ran(?:cics|si(?:cs|sc))(ans?|o)\b(?![^\s\.]*\.\w)" replace="Francisc$1"/> +<Typo word="Genghis Khan" find="\bG(?:h[ei]ngh?i[sz]?\s+[kK]h?ah?n?|ingh?i[sz]?\s+[kK]h?ah?n?|eng(?:hi(?:s\s+(?:kh?ah?n?|K(?:ah?n?|ha(?:hn?)?))|z\s+[kK]h?ah?n?|\s+[kK]h?ah?n?)|i[sz]?\s+[kK]h?ah?n?))\b" replace="Genghis Khan"/> +<Typo word="Guns N' Roses" find="\bGuns(?:[????????????\s](?:&|[????????????????????????`;'](?:n[????????????????????????`']?|N[????????????????????????`\s-])|n[????????????????????????`']?|N[????????????????????????`\s-])|[????????????????????????`;'](?:n[????????????????????????`']?|N[????????????????????????`\s-])|n[????????????????????????`']?|N[????????????????????????`\s-]|&)[????????????\s]?Roses\b" replace="Guns N' Roses"/> <!--word="Internet" find="\binternet\b(?![^\s\.]*\.\w)" replace="Internet"/> see talk page--> +<Typo word="Johns Hopkins University" find="\b[jJ]oh?n(?:[????????????????????????`']s)?\s+[hH]opkins?\s+[uU]niversity\b" replace="Johns Hopkins University"/> <Typo word="Lutheran" find="\b[lL]ut(?:er(?:a|ia)|heria)n(ism|s?)\b(?![^\s\.]*\.\w)" replace="Lutheran$1"/> <Typo word="Methodist" find="\bmethodis(m|t(?:ic|s?))\b(?![^\s\.]*\.\w)" replace="Methodis$1"/> +<Typo word="Metallica" find="\b[mM]et+al+ica\b" replace="Metallica"/> +<Typo word="Moli??re" find="\b[mM]oliere\b" replace="Moli??re"/> <Typo word="Mormon" find="\bmormon(ism|s?)\b(?![^\s\.]*\.\w)" replace="Mormon$1"/> +<Typo word="M??tley Cr??e" find="\b[mM]otley\s+[cC]rue\b" replace="M??tley Cr??e"/> <Typo word="Muhammad etc." find="\bm(oham+[ae][dt](?:ans?)?|uham+[ae][dt](?:ans?)?)\b(?![^\s\.]*\.\w)" replace="M$1"/> +<Typo word="Muhammad Ali" find="\bMuhamm[ei]d Ali\b(?!\s+[A-Z])" replace="Muhammad Ali"/><!-- not as given names for other people, e.g., Muhammed Ali Bedir --> <Typo word="Muslim/Moslem" find="\bm(osle|usli)m(s)?\b(?![^\s\.]*\.\w)" replace="M$1m$2"/> <Typo word="Pentecost" find="\b(?:p(?:ent[ea])|Penta)cost(al(?:ism|s?)|s?)\b(?![^\s\.]*\.\w)" replace="Pentecost$1"/> +<Typo word="Qur'an" find="\bQ(?:or[????????????????????????`']?a?[????????????????????????`']?(?:[??????]|aa?)|u(?:or[????????????????????????`']?a?[????????????????????????`']?(?:[??????]|aa?)|[????????????????????????`']ra?[????????????????????????`'](?:[??????]|aa?)|r(?:a[????????????????????????`'](?:[??????]|aa?)|ra?[????????????????????????`](?:[??????]|aa?)|[????????????????????????`]ra?[????????????????????????`](?:[??????]|aa?)|'(?:[??????]|aa))))n(ic)?\b" replace="Qur'an$1"/><!--not Qaran--> <Typo word="SpongeBob" find="\b[sS]ponge(?:-[bB]|b|\sB)ob\b(?![^\s\.]*\.\w)" replace="SpongeBob"/> <Typo word="SquarePants" find="\b[sS]quare(?:-[pP]|p|\sP)ants\b(?![^\s\.]*\.\w)" replace="SquarePants"/> <Typo word="TV_" find="\b[tT]v\b(?<!WE\stv)(?![^\s\.]*\.\w)(?<!\.[^\s\.]{0,999})" replace="TV"/><!--avoid WE tv--> - +<Typo word="Warren Buffett" find="\bWarr?en (E\. )?Buf(?:et|fe)t\b" replace="Warren $1Buffett"/> </syntaxhighlight> ===Grammar=== @@ -3791,7 +3828,9 @@ <Typo word="In (fact/the/some/many/any/spite/particular/between)" find="\b([iI])n(any|between|fact|many|particular|s(?:ome|pite)|them?)\b" replace="$1n $2"/> <Typo word="(Crime/Drug) lord" find="\b([cC]rime|[dD]rug)-?lord(s)?\b" replace="$1 lord$2"/> <Typo word="Other hand" find="\b([oO])therhand\b" replace="$1ther hand"/> +<Typo word="Since then" find="\b([sS])ince\s+than\b" replace="$1ince then"/> <Typo word="Super Bowl" find="\b[sS]uper-?[bB]owl(s)?\b" replace="Super Bowl$1"/> +<Typo word="Vice versa" find="\b([vV])is(?:[ae]|-a)[????????????\s]*versa\b" replace="$1ice versa"/> </syntaxhighlight> ====Duplicated words==== @@ -3819,16 +3858,6 @@ <Typo word="who has been" find="\bwhose\s+been\b" replace="who has been"/> </syntaxhighlight> -===Bands and other proper names=== -<syntaxhighlight lang="xml"> -<Typo word="AC/DC" find="\b[aA][cC]-[dD][cC]\b" replace="AC/DC"/> -<Typo word="Metallica" find="\b[mM]et+al+ica\b" replace="Metallica"/> -<Typo word="M??tley Cr??e" find="\b[mM]otley\s+[cC]rue\b" replace="M??tley Cr??e"/> -<Typo word="Moli??re" find="\b[mM]oliere\b" replace="Moli??re"/> -<Typo word="Muhammad Ali" find="\bMuhamm[ei]d Ali\b" replace="Muhammad Ali"/> -<Typo word="Warren Buffett" find="\bWarr?en (E\. )?Buf(?:et|fe)t\b" replace="Warren $1Buffett"/> -</syntaxhighlight> - ===General rules=== These have to come last, so that special cases (which these might transform into an unanticipated error) get treated first. <syntaxhighlight lang="xml"> @@ -3841,6 +3870,7 @@ <Typo word="Acc-" find="\b([aA]|[iuIU]na)c(?:cc+)?(e(?:pt[a-z]*|ss[a-z]*)|ident[a-z]*|omp(?:an(?:ie[ds]|y)|lish[a-z]*)|o(?:rd[a-z]+|unt[a-z]*)|ura[ct][a-z]+)\b" replace="$1cc$2"/> <Typo word="(Re)Acqu-" find="\b([aA]|[rR]ea)(?:cc+|d?)qu(aint[a-z]*|ir[ei][a-z]*|isiti(?:ons?|ve)|it(?:s?|t(?:als?|ed|ing)))\b(?<!Aquiris)" replace="$1cqu$2"/><!--but not Aquiris--> <Typo word="Add-" find="\b([aA]|[nN]ona)d(?:dd+)?(ic?ti[ov][a-z]*|ress[a-z]*)\b" replace="$1dd$2"/> +<Typo word="Aero-" find="\b([aA])reo(bics?|d(?:romes?|ynamic(?:al[a-z]*|s?))|mechanic(?:al[a-z]*|s?)|nautic(?:al[a-z]*|s?)|planes?|s(?:ols?|pace))\b" replace="$1ero$2"/> <Typo word="Aff-" find="\b([aA])f(?:ff)?((?:e|li)ct(?:ed|i(?:ng|on))?s?|iliat[ei][a-z]*|init(?:ies|y)|irmati[a-z]+|luen(?:ce|t(?:ly)?))\b" replace="$1ff$2"/> <Typo word="After-" find="\b([aA])f(?:e[rt]|te)(maths?|noons?|wards?)\b" replace="$1fter$2"/> <Typo word="Al-" find="\b([aA])ll+(beit|most|ong|ready|t(?:hough|ogether)|(?<!All)ways)\b" replace="$1l$2"/><!--avoid Allways--> @@ -3859,7 +3889,7 @@ <Typo word="Biblio-" find="\b([bB])ibi?l[io](graph[a-z]+|th?eques?)\b" replace="$1iblio$2"/> <Typo word="Canoni-" find="\b([cC])annoni(cal(?:ly|s?)|sts?|z(?:ations?|e[ds]?|ing))\b" replace="$1anoni$2"/> <Typo word="Chair-" find="\b([cC])hari(lifts?|m[ae]n(?:ships?)?|persons?|wom[ae]n(?:ships?)?)\b" replace="$1hair$2"/> -<Typo word="(Dis)Colour-" find="\b([cC]|[dD]isc)olou(?:[a-ln-qs-y][a-z]*)\b" replace="$1olour$2"/><!--avoid Coloumb & Colouz Uv Sound--> +<Typo word="(Dis)Colour-" find="\b([cC]|[dD]isc)olou([a-ln-qs-y][a-z]*)\b" replace="$1olour$2"/><!--avoid Coloumb & Colouz Uv Sound--> <Typo word="Corr-" find="\b([cC])or(e(?:ct[a-z]*|spond[a-z]*)|osi(?:ons?|ve[a-z]*))\b" replace="$1orr$2"/> <Typo word="Diphth-" find="\b([dD])ip(?:ht|th)(eria|ongs?)\b" replace="$1iphth$2"/> <Typo word="(In)Def-" find="\b([dD]|[iI]nd)eff(en(?:c[ei][a-z]*|d[a-z]*|s[ei][a-z]*)|ici(?:en[a-z]+|t[a-z]+)|init[ei][a-z]*)\b" replace="$1ef$2"/> @@ -3874,14 +3904,15 @@ <Typo word="Emi-" find="\b([eE]|[pP]ree)mmi(grat[a-z]+|nen[ct][a-z]*|ssar[iy][a-z]*)\b" replace="$1mi$2"/> <Typo word="Emb-" find="\b([eE])nb([a-z]+)\b(?<!\bEnb(?:a(?:[ns]|qom|rr?)|e(?:kshi[a-z]{0,99}|rgs?|tsu)?|i(?:lulu|se)|lend|o(?:m|rne|th)|r(?:el|idge)|u(?:kan|lufushi|n))\b)(?<!Bir Enba)" replace="$1mb$2"/> <!--avoid Enbergs?, Enban, Enbaqom, Enbar(r), Enbas, Enbee, Enbekshi..., Enbetsu, Enbilulu, Enbise, Enblend, Enbom, Enboth, Enbrel, Enbridge, Enbukan, Enbulufushi, Enbun, Bir Enba--> -<Typo word="Emm-" find="\b([eE])nm([a-z]+)\b(?<!\bEnm(?:a|ei)|enm(?:a(?:scarados?|tter[a-z]*)|esh[a-z]*|??scarados?|it(?:ies|y))|Enm(?:a(?:kaje|rk\b|nn?(?:sche)?|[ox]|s(?:carados?|s)|tter[a-z]*)|esh[a-z]*|??scarados?|it(?:ies|y)|ore|und))" replace="$1mm$2"/> -<!--avoid Enma, Enmakaje, Enman, Enmann(sche), Enmass, Enmore, enmesh, enmatter, enmity, Enmax, Enmund, enm??scarado, Enmao--> +<Typo word="Emm-" find="\b([eE])nm([a-z]+)\b(?<!\bEnm(?:a|ei)|enm(?:a(?:scarados?|sse?|tter[a-z]*)|esh[a-z]*|??scarados?|it(?:ies|y))|Enm(?:a(?:kaje|rk\b|nn?(?:sche)?|[ox]|s(?:carados?|se?)|tter[a-z]*)|esh[a-z]*|??scarados?|it(?:ies|y)|ore|und))" replace="$1mm$2"/> +<!--avoid Enma, Enmakaje, Enman, Enmann(sche), enmass(e), Enmore, enmesh, enmatter, enmity, Enmax, Enmund, enm??scarado, Enmao--> <Typo disabled="Emp-" find="\b([eE])n(p[a-z]+)\b(?<!\b[eE]np(?:hytot[a-z]+|i(?:ng)?|lan[a-z]+|ower|rostil|uku)\b)" replace="$1m$2"/> <!--avoid enphytotic, enplane, enpi, Enping, Enpower, Enprostil, Enpuku--> <Typo word="Err-" find="\b([eE])r(a(?:nds?|tic(?:ally)?)|o(?:neous(?:ly)?|rs?))\b" replace="$1rr$2"/> <Typo word="Exc-" find="\b([eE])xe(ed[a-z]*|r?pt(?:ed|i(?:ng|onal(?:ly)?|s?))|lle(?:d|n[ct][a-z]*)|ssive[elnsy]*)\b" replace="$1xce$2"/> <Typo word="(Un)Fore-" find="\b([fF]|[uU]nf)or(bod(?:es?|ing(?:ly)?)|brains?|c(?:astles?|ourts?|los(?:es?|ing(?:ly)?)|ast(?:ers?|ing|s?))|d(?:ecks?|oom(?:ers?|ing|s?))|f(?:aces?|eet|ingers?|oot|ronts?)|grounds?|h(?:ands?|eads?)|l(?:egs?|ocks?)|m(?:asts?|ost)|n(?:ames?|oons?)|paws?|quarters?|runners?|s(?:a(?:ils?|w)|ee(?:able|ing|[ns]?|rs?)|ta(?:ll(?:ers?|ing|s?)|ys?))|t(?:astes?|ell(?:ers?|ing|s?)|old)|w(?:arn(?:ers?|ing|s?)|ords?))\b(?<!\bFors(?:ee\b|tall\b))" replace="$1ore$2"/><!--avoid Forsee, Forstall; common names--> <Typo word="Giu-" find="\b[gG]ui(li(?:a(?:ni)?|o)|seppe)\b" replace="Giu$1"/> +<Typo word="Identi-" find="\b([iI])ndenti(cal[a-z]*|f(?:i[a-z]+|y[a-z]*)|t(?:ies|y))\b" replace="$1denti$2"/> <Typo word="Ill-" find="\b([iI])l(egal[a-z]*\b(?<!\bEl Ilegal)|ness[a-z]*|ogical(?:ly)?|uminat(?:e[ds]?|i(?:ng|on))|us(?:i(?:ons?|ve(?:ly)?)|ory))\b" replace="$1ll$2"/><!--allow El Ilegal--> <!--avoid inboard, inborn, inbound, inbreathe, inbreed, inbuilt--> <Typo word="Imb-" find="\b([iI])nb(alanc[ei][a-z]*|e(?:cil[ei][a-z]*|d[a-z]*)|ib[ei][a-z]*|ue[a-z]*)\b" replace="$1mb$2"/> @@ -4222,7 +4253,7 @@ <Typo word="-tience" find="\b([iI][mn](?:pa|quo|sen)|[oO]ut(?:pa|quo|sen)|[pP]a|[qQ]uo|[sS]en)t(?:ei|ia)n(ces?|t[a-z]*)\b" replace="$1tien$2"/> <Typo word="-tified" find="\b([bB]eau?|[cC]er|[fF]or|[iI]den|[jJ]us|[mM]or|[nN]o|[qQ]uan|[rR](?:a|ec)|[tT]es)ta?fi(abl[ey]|cat(?:es?|ions?)|e[ds])\b" replace="$1tifi$2"/><!--see also "-tifie(d/s)"--> <Typo word="-tifie(d/s)" find="(?<=\b(?:[bB]eau?|[cC]er|[fF]or|[iI]den|[jJ]us|[mM]or|[nN]o|[qQ]uan|[rR](?:a|e(?:beau?|c(?:er)?|for|iden|jus|mor|no|quan|r(?:a|ec)|tes))|[tT]es|[uU]n(?:beau?|cer|for|iden|jus|mor|no|quan|r(?:a|ec)|tes)))tife([ds])\b" replace="tifie$1"/><!--see also "-tified"; cheapened expensive beginning--> -<Typo word="-tility" find="\b([dD]uc|[fF](?:er|u)|[hH]os|[iI]n(?:duc|f(?:er|u)|hos|mo|u|v(?:ersa|ola))|[mM]o|[uU]|[vV](?:ersa|ola))til?(?:a?|li)t(arian|ies|y)\b" replace="$1tilit$2"/> +<Typo word="-tility" find="\b([dD]uc|[fF](?:er|u)|[hH]os|[iI]n(?:duc|f(?:er|u)|hos|mo|u|v(?:ersa|ola))|[mM]o|[uU]|[vV](?:ersa|ola))ti(?:la?|lli|a)?t(arian|ies|y)\b" replace="$1tilit$2"/> <Typo word="-timately" find="\b([iI]n|[uU]l)(?:i(?:mate?le?|t(?:imate?le?|mate?le))|t(?:imate?le|mate?le?))y\b" replace="$1timately"/> <Typo word="-tinct" find="\b([dD]is|[eE]x|[iI]n(?:dis)?)(?:ctinc|ti(?:c(?:nt)?|n))(i(?:ons?|ve(?:ly)?)|ly|s?)\b(?<!\bDistin)" replace="$1tinct$2"/> <Typo word="-tion(s)" find="(?=tio)(?<=\b(?:[A-Z][a-z]*|[a-z]+))tio(?:i|(s))n\b" replace="tion$1"/><!--cheapened expensive beginning--> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topy-1.0.0/topy/topy.py new/topy-1.1.0/topy/topy.py --- old/topy-1.0.0/topy/topy.py 2020-09-08 21:33:10.000000000 +0200 +++ new/topy-1.1.0/topy/topy.py 2021-02-03 20:53:31.000000000 +0100 @@ -3,7 +3,7 @@ Topy (anagram of "typo") is a Python script to fix typos in text, based on the RegExTypoFix project from Wikipedia and AutoWikiBrowser. -Topy requires BeautifulSoup version 4 and runs with Python 3.5+ +Topy requires BeautifulSoup version 4 and runs with Python 3.6+ Usage: ./topy.py /path/to/files @@ -56,7 +56,7 @@ def load_rules(filename): """Load and parse rules from `filename`, returns list of 3-tuples [(name, regexp, replacement), ...]""" - with open(filename) as rulefile: + with open(filename, encoding='utf-8') as rulefile: # try to use lxml(slightly faster) if it's installed, otherwise default # to html.parser try: @@ -99,7 +99,7 @@ """Reads file `filename` and returns contents as Unicode string. On failure, returns None and logs error.""" try: - with open(filename, 'r') as f: + with open(filename, 'r', encoding='utf-8') as f: return f.read() except (IOError, OSError) as err: log.error("Cannot open %r: %s", filename, err) @@ -121,11 +121,30 @@ def print_diff(filename, old, new, stream=sys.stdout): """Diffs the `old` and `new` strings and prints as unified diff to file-like object `stream`.""" - # TODO: color output for terminals lines = unified_diff(old.splitlines(True), new.splitlines(True), filename, filename) + if is_color_output_required(stream): + lines = map(add_output_color, lines) stream.writelines(lines) +def is_color_output_required(stream): + """Determines whether to output the line diffs in color or not.""" + if opts.color == "never": + return False + elif opts.color == "always": + return True + return hasattr(stream, 'isatty') and stream.isatty() + + +def add_output_color(line): + """Adds color to the output of the diff lines.""" + if line.startswith('+'): + line = f'\033[1;32m{line}' + elif line.startswith('-'): + line = f'\033[1;31m{line}' + return f'{line}\033[0m' + + def handle_file(regs, filename): """Apply rules from `regs` to file `filename` @@ -192,6 +211,8 @@ help="specify custom ruleset file to use") parser.add_option("-d", "--disable", dest='disable', action="append", metavar="RULE", help="disable rules by name") +parser.add_option("--color", "--colour", type="choice", choices=("never", "always", "auto"), default="auto", + dest="color", metavar="WHEN", help="colorize the output; WHEN can be 'never', 'always', or 'auto'") def main(args=None):