User:Nardog/ExpandContractions

{{Tool warning}}

{{Infobox Wikipedia user script

|name=ExpandContractions

|desc=Expands contractions

|browsers=Chrome, Firefox, etc.

|source=User:Nardog/ExpandContractions.js

}}

This script adds a button to the sidebar that expands contractions when editing in source mode (not 2017 editor). Specifically, it replaces

  • "it's" etc. with "... is" or "... has"
  • "it'd" etc. with "... would" or "... had"
  • {{"'}}re" with " are"
  • {{"'}}ve" with " have"
  • {{"'}}ll" with " will"
  • "can't" with "cannot"
  • "won't" with "will not"
  • "n't" with " not"

It will not replace "I'm", "I'd", or "ain't" because they don't typically appear in encyclopedic prose (if they do, the contractions are likely the least of the article's problems). {{"'}}ll" is assumed to be short for "will" because who uses "shall" anymore—certainly not someone who leaves contractions in.

It does its best to distinguish between "is" and "has" for {{"'}}s" and between "would" and "had" for {{"'}}d", but this is not perfect so you'll be reminded to review the result if the replacements include {{"'}}s" or {{"'}}d".

Links, references, quotes, poems, hatnotes, comments, headings, etc. are excluded from replacements, but don't rely too much on it as it might still replace contractions where it shouldn't, e.g. a template parameter for a filename. Italic and bold text is also excluded because it tends to be legitimate titles, aliases, etc. Anything after a heading named "References", "Sources", "Bibliography", "Further reading", or "External links" is also ignored.

If the script incorrectly replaces a contraction inside an inline quote (or misses one outside it), it likely means the paragraph has missing or misnested quotes (e.g. {{!xt|"... "..." ..."}} where it should be {{xt|"... '...' ..."}}).

Installation

Add the following to your common.js:

mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Nardog/ExpandContractions.js&action=raw&ctype=text/javascript');

Or you may enable the script installer in {{myprefs|Gadgets}} and click "Install" in the infobox on this page.

Acknowledgements

This script relies on Pathoschild's TemplateScript framework. Its escape feature was buggy, however, so the script implements its own.

{{User:Nardog/scripts}}