├── .gitignore ├── .travis.yml ├── .yamllint.yml ├── Gemfile ├── LICENSE ├── README.md ├── features ├── rules.feature ├── steps.rb └── support │ └── aruba.rb ├── fixtures ├── basic │ ├── .vale.ini │ └── test.md └── punctuation │ ├── .vale.ini │ └── test.md └── proselint ├── Airlinese.yml ├── AnimalLabels.yml ├── Annotations.yml ├── Apologizing.yml ├── Archaisms.yml ├── But.yml ├── Cliches.yml ├── CorporateSpeak.yml ├── Currency.yml ├── Cursing.yml ├── DateCase.yml ├── DateMidnight.yml ├── DateRedundancy.yml ├── DateSpacing.yml ├── DenizenLabels.yml ├── Diacritical.yml ├── GenderBias.yml ├── GroupTerms.yml ├── Hedging.yml ├── Hyperbole.yml ├── Jargon.yml ├── LGBTOffensive.yml ├── LGBTTerms.yml ├── Malapropisms.yml ├── Needless.yml ├── Nonwords.yml ├── Oxymorons.yml ├── P-Value.yml ├── RASSyndrome.yml ├── README.md ├── Skunked.yml ├── Spelling.yml ├── Typography.yml ├── Uncomparables.yml ├── Very.yml └── meta.json /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | *.rbc 3 | /.config 4 | /coverage/ 5 | /InstalledFiles 6 | /pkg/ 7 | /spec/reports/ 8 | /spec/examples.txt 9 | /test/tmp/ 10 | /test/version_tmp/ 11 | /tmp/ 12 | 13 | # Used by dotenv library to load environment variables. 14 | # .env 15 | 16 | ## Specific to RubyMotion: 17 | .dat* 18 | .repl_history 19 | build/ 20 | *.bridgesupport 21 | build-iPhoneOS/ 22 | build-iPhoneSimulator/ 23 | 24 | ## Specific to RubyMotion (use of CocoaPods): 25 | # 26 | # We recommend against adding the Pods directory to your .gitignore. However 27 | # you should judge for yourself, the pros and cons are mentioned at: 28 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 29 | # 30 | # vendor/Pods/ 31 | 32 | ## Documentation cache and generated files: 33 | /.yardoc/ 34 | /_yardoc/ 35 | /doc/ 36 | /rdoc/ 37 | 38 | ## Environment normalization: 39 | /.bundle/ 40 | /vendor/bundle 41 | /lib/bundler/man/ 42 | 43 | # for a library or gem, you might want to ignore these files since the code is 44 | # intended to run in multiple environments; otherwise, check them in: 45 | # Gemfile.lock 46 | # .ruby-version 47 | # .ruby-gemset 48 | 49 | # unless supporting rvm < 1.11.0 or doing something fancy, ignore this: 50 | .rvmrc 51 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | cache: bundler 3 | python: 4 | - "3.6" 5 | install: 6 | # Install the latest release of Vale: 7 | - curl -sL https://install.goreleaser.com/github.com/ValeLint/vale.sh | bash 8 | - export PATH=./bin:"$PATH" 9 | 10 | - bundle install --jobs=3 11 | 12 | - pip install yamllint 13 | - pip install markdata 14 | - pip install pyyaml 15 | before_script: 16 | - yamllint -c '.yamllint.yml' proselint 17 | script: 18 | - cucumber 19 | - zip -r proselint.zip proselint -x "*.DS_Store" 20 | deploy: 21 | provider: releases 22 | api_key: $GITHUB_TOKEN 23 | file: proselint.zip 24 | skip_cleanup: true 25 | on: 26 | tags: true 27 | -------------------------------------------------------------------------------- /.yamllint.yml: -------------------------------------------------------------------------------- 1 | rules: 2 | # We only include a single document (without directives) in our rules, so 3 | # the extra markup is unnecessary. 4 | document-start: disable 5 | # Many rules include a `link` key that can be relatively long. 6 | # 7 | # TODO: Should we change this? 8 | line-length: disable 9 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'aruba', '~> 0.14.3' 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2019, errata.ai 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # proselint [![Build Status](https://travis-ci.org/errata-ai/proselint.svg?branch=master)](https://travis-ci.org/errata-ai/proselint) ![Vale version](https://img.shields.io/badge/vale-%3E%3D%20v1.7.0-blue.svg) ![license](https://img.shields.io/github/license/mashape/apistatus.svg) 2 | 3 | > [`proselint`](https://github.com/amperser/proselint/) places the world’s greatest writers and editors by your side, where they whisper suggestions on how to improve your prose. 4 | 5 | This repository contains a [Vale-compatible](https://github.com/errata-ai/vale) implementation of the guidelines enforced by the `proselint` ([LICENSE](https://github.com/amperser/proselint/blob/master/LICENSE.md)) linter. 6 | 7 | ## Getting Started 8 | 9 | To get started, add the package to your configuration file (as shown below) and then run `vale sync`. 10 | 11 | ```ini 12 | StylesPath = styles 13 | MinAlertLevel = suggestion 14 | 15 | Packages = proselint 16 | 17 | [*] 18 | BasedOnStyles = proselint 19 | ``` 20 | -------------------------------------------------------------------------------- /features/rules.feature: -------------------------------------------------------------------------------- 1 | Feature: Rules 2 | 3 | Scenario: Rules about punctuation 4 | When I test "punctuation" 5 | Then the output should contain exactly: 6 | """ 7 | test.md:3:17:proselint.Hyperbole:'idea!!' is hyperbolic. 8 | test.md:8:23:proselint.Hyperbole:'here!!' is hyperbolic. 9 | test.md:12:14:proselint.DateCase:With lowercase letters, the periods are standard. 10 | """ 11 | 12 | Scenario: Basic tests 13 | When I test "basic" 14 | Then the output should contain exactly: 15 | """ 16 | test.md:1:19:proselint.Nonwords:Consider using 'regardless' instead of 'irregardless'. 17 | test.md:3:18:proselint.Archaisms:'perchance' is archaic. 18 | test.md:7:6:proselint.Cliches:'a chip off the old block' is a cliche. 19 | test.md:9:12:proselint.Cliches:'a fate worse than death' is a cliche. 20 | test.md:11:20:proselint.Spelling:Inconsistent spelling of 'color'. 21 | test.md:11:61:proselint.Spelling:Inconsistent spelling of 'center'. 22 | test.md:13:9:proselint.CorporateSpeak:'circle back around' is corporate speak. 23 | test.md:15:5:proselint.Cursing:Consider replacing 'shit'. 24 | test.md:17:16:proselint.DateCase:With lowercase letters, the periods are standard. 25 | test.md:17:37:proselint.DateSpacing:It's standard to put a space before '7a.m.' 26 | test.md:17:58:proselint.DateMidnight:Use 'midnight' or 'noon'. 27 | test.md:17:81:proselint.DateRedundancy:'a.m.' is always morning; 'p.m.' is always night. 28 | test.md:19:18:proselint.Uncomparables:'most correct' is not comparable 29 | test.md:21:1:proselint.Hedging:'I would argue that' is hedging. 30 | test.md:23:4:proselint.Hyperbole:'exaggerated!!!' is hyperbolic. 31 | test.md:25:14:proselint.Jargon:'in the affirmative' is jargon. 32 | test.md:29:14:proselint.LGBTOffensive:'fag' is offensive. Remove it or consider the context. 33 | test.md:29:44:proselint.LGBTTerms:Consider using 'sexual orientation' instead of 'sexual preference'. 34 | test.md:31:10:proselint.Malapropisms:'the Infinitesimal Universe' is a malapropism. 35 | test.md:33:1:proselint.Apologizing:Excessive apologizing: 'More research is needed' 36 | test.md:35:1:proselint.But:Do not start a paragraph with a 'but'. 37 | test.md:37:9:proselint.Currency:Incorrect use of symbols in '$10 dollars'. 38 | test.md:39:14:proselint.Oxymorons:'exact estimate' is an oxymoron. 39 | test.md:41:38:proselint.GenderBias:Consider using 'lawyer' instead of 'lady lawyer'. 40 | test.md:43:11:proselint.Skunked:'impassionate' is a bit of a skunked term — impossible to use without issue. 41 | test.md:45:21:proselint.DenizenLabels:Did you mean 'Hong Konger'? 42 | test.md:47:13:proselint.AnimalLabels:Consider using 'avine' instead of 'bird-like'. 43 | test.md:49:20:proselint.Typography:Consider using the '©' symbol instead of '(C)'. 44 | test.md:49:40:proselint.Typography:Consider using the '™' symbol instead of '(tm)'. 45 | test.md:49:56:proselint.Typography:Consider using the '®' symbol instead of '(R)'. 46 | test.md:49:79:proselint.Typography:Consider using the '×' symbol instead of '2 x 2'. 47 | test.md:51:27:proselint.Diacritical:Consider using 'Beyoncé' instead of 'Beyonce'. 48 | test.md:51:36:proselint.P-Value:You should use more decimal places, unless 'p = 0.00' is really true. 49 | test.md:51:47:proselint.Needless:Prefer 'abolition' over 'abolishment' 50 | """ 51 | -------------------------------------------------------------------------------- /features/steps.rb: -------------------------------------------------------------------------------- 1 | cmd = 'vale --output=line --sort --normalize --relative' 2 | 3 | When(/^I test "(.*)"$/) do |rule| 4 | step %(I cd to "../../fixtures/#{rule}") 5 | step %(I run `#{cmd} .`) 6 | end 7 | -------------------------------------------------------------------------------- /features/support/aruba.rb: -------------------------------------------------------------------------------- 1 | require 'aruba/cucumber' 2 | -------------------------------------------------------------------------------- /fixtures/basic/.vale.ini: -------------------------------------------------------------------------------- 1 | StylesPath = ../../ 2 | 3 | MinAlertLevel = suggestion 4 | 5 | [*.md] 6 | BasedOnStyles = proselint 7 | -------------------------------------------------------------------------------- /fixtures/basic/test.md: -------------------------------------------------------------------------------- 1 | The test was good irregardless. 2 | 3 | I want to sleep, perchance to dream. 4 | 5 | It's a matter of concern. 6 | 7 | He's a chip off the old block. 8 | 9 | Worse than a fate worse than death. 10 | 11 | Painting colour on color. The centre of the arts is the art center. 12 | 13 | We will circle back around to it. 14 | 15 | Bad shit in this phrase. The QB is named ball licker. 16 | 17 | It happened at 7 am. It happened at 7a.m. It happened at 12 a.m. It happened at 7 a.m. in the morning. 18 | 19 | This sentence is most correct. 20 | 21 | I would argue that this is a good test. 22 | 23 | So exaggerated!!! 24 | 25 | I agree it's in the affirmative. 26 | 27 | Paris in the the springtime. 28 | 29 | I once met a fag. I once met a gay man. My sexual preference is for women. 30 | 31 | Found in the Infinitesimal Universe. 32 | 33 | More research is needed. 34 | 35 | But I never start with the word "but". 36 | 37 | It cost $10 dollars. 38 | 39 | He needed an exact estimate. 40 | 41 | The legal team had two lawyers and a lady lawyer. 42 | 43 | I gave an impassionate defence of the situation. 44 | 45 | He was definitely a Hong Kongite. 46 | 47 | It was some bird-like creature. 48 | 49 | Show me the money! (C) The Fresh Maker (tm) Just Do It (R) It is obvious that 2 x 2 = 4 50 | 51 | He saw the performance by Beyonce (p = 0.00). abolishment is a needless variant. 52 | -------------------------------------------------------------------------------- /fixtures/punctuation/.vale.ini: -------------------------------------------------------------------------------- 1 | StylesPath = ../../ 2 | 3 | MinAlertLevel = suggestion 4 | 5 | [*.md] 6 | BasedOnStyles = proselint 7 | -------------------------------------------------------------------------------- /fixtures/punctuation/test.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | This is a great idea!! 4 | 5 | !!! important 6 | the important text 7 | 8 | Another sentence goes here!! 9 | 10 | 1600 Amphitheatre Pkwy, Mountain View, CA 94043. 11 | 12 | It starts at 10 am today. 13 | -------------------------------------------------------------------------------- /proselint/Airlinese.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is airlinese." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - enplan(?:e|ed|ing|ement) 7 | - deplan(?:e|ed|ing|ement) 8 | - taking off momentarily 9 | -------------------------------------------------------------------------------- /proselint/AnimalLabels.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: "Consider using '%s' instead of '%s'." 3 | level: error 4 | action: 5 | name: replace 6 | swap: 7 | (?:bull|ox)-like: taurine 8 | (?:calf|veal)-like: vituline 9 | (?:crow|raven)-like: corvine 10 | (?:leopard|panther)-like: pardine 11 | bird-like: avine 12 | centipede-like: scolopendrine 13 | crab-like: cancrine 14 | crocodile-like: crocodiline 15 | deer-like: damine 16 | eagle-like: aquiline 17 | earthworm-like: lumbricine 18 | falcon-like: falconine 19 | ferine: wild animal-like 20 | fish-like: piscine 21 | fox-like: vulpine 22 | frog-like: ranine 23 | goat-like: hircine 24 | goose-like: anserine 25 | gull-like: laridine 26 | hare-like: leporine 27 | hawk-like: accipitrine 28 | hippopotamus-like: hippopotamine 29 | lizard-like: lacertine 30 | mongoose-like: viverrine 31 | mouse-like: murine 32 | ostrich-like: struthionine 33 | peacock-like: pavonine 34 | porcupine-like: hystricine 35 | rattlesnake-like: crotaline 36 | sable-like: zibeline 37 | sheep-like: ovine 38 | shrew-like: soricine 39 | sparrow-like: passerine 40 | swallow-like: hirundine 41 | swine-like: suilline 42 | tiger-like: tigrine 43 | viper-like: viperine 44 | vulture-like: vulturine 45 | wasp-like: vespine 46 | wolf-like: lupine 47 | woodpecker-like: picine 48 | zebra-like: zebrine 49 | -------------------------------------------------------------------------------- /proselint/Annotations.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' left in text." 3 | ignorecase: false 4 | level: error 5 | tokens: 6 | - XXX 7 | - FIXME 8 | - TODO 9 | - NOTE 10 | -------------------------------------------------------------------------------- /proselint/Apologizing.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Excessive apologizing: '%s'" 3 | ignorecase: true 4 | level: error 5 | action: 6 | name: remove 7 | tokens: 8 | - More research is needed 9 | -------------------------------------------------------------------------------- /proselint/Archaisms.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is archaic." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - alack 7 | - anent 8 | - begat 9 | - belike 10 | - betimes 11 | - boughten 12 | - brocage 13 | - brokage 14 | - camarade 15 | - chiefer 16 | - chiefest 17 | - Christiana 18 | - completely obsolescent 19 | - cozen 20 | - divers 21 | - deflexion 22 | - fain 23 | - forsooth 24 | - foreclose from 25 | - haply 26 | - howbeit 27 | - illumine 28 | - in sooth 29 | - maugre 30 | - meseems 31 | - methinks 32 | - nigh 33 | - peradventure 34 | - perchance 35 | - saith 36 | - shew 37 | - sistren 38 | - spake 39 | - to wit 40 | - verily 41 | - whilom 42 | - withal 43 | - wot 44 | - enclosed please find 45 | - please find enclosed 46 | - enclosed herewith 47 | - enclosed herein 48 | - inforce 49 | - ex postfacto 50 | - forewent 51 | - for ever 52 | -------------------------------------------------------------------------------- /proselint/But.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Do not start a paragraph with a 'but'." 3 | level: error 4 | scope: paragraph 5 | action: 6 | name: remove 7 | tokens: 8 | - ^But 9 | -------------------------------------------------------------------------------- /proselint/Cliches.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is a cliche." 3 | level: error 4 | ignorecase: true 5 | tokens: 6 | - a chip off the old block 7 | - a clean slate 8 | - a dark and stormy night 9 | - a far cry 10 | - a fate worse than death 11 | - a fine kettle of fish 12 | - a loose cannon 13 | - a penny saved is a penny earned 14 | - a tough row to hoe 15 | - a word to the wise 16 | - ace in the hole 17 | - acid test 18 | - add insult to injury 19 | - against all odds 20 | - air your dirty laundry 21 | - alas and alack 22 | - all fun and games 23 | - all hell broke loose 24 | - all in a day's work 25 | - all talk, no action 26 | - all thumbs 27 | - all your eggs in one basket 28 | - all's fair in love and war 29 | - all's well that ends well 30 | - almighty dollar 31 | - American as apple pie 32 | - an axe to grind 33 | - another day, another dollar 34 | - armed to the teeth 35 | - as luck would have it 36 | - as old as time 37 | - as the crow flies 38 | - at loose ends 39 | - at my wits end 40 | - at the end of the day 41 | - avoid like the plague 42 | - babe in the woods 43 | - back against the wall 44 | - back in the saddle 45 | - back to square one 46 | - back to the drawing board 47 | - bad to the bone 48 | - badge of honor 49 | - bald faced liar 50 | - bald-faced lie 51 | - ballpark figure 52 | - banging your head against a brick wall 53 | - baptism by fire 54 | - barking up the wrong tree 55 | - bat out of hell 56 | - be all and end all 57 | - beat a dead horse 58 | - beat around the bush 59 | - been there, done that 60 | - beggars can't be choosers 61 | - behind the eight ball 62 | - bend over backwards 63 | - benefit of the doubt 64 | - bent out of shape 65 | - best thing since sliced bread 66 | - bet your bottom dollar 67 | - better half 68 | - better late than never 69 | - better mousetrap 70 | - better safe than sorry 71 | - between a rock and a hard place 72 | - between Scylla and Charybdis 73 | - between the devil and the deep blue see 74 | - betwixt and between 75 | - beyond the pale 76 | - bide your time 77 | - big as life 78 | - big cheese 79 | - big fish in a small pond 80 | - big man on campus 81 | - bigger they are the harder they fall 82 | - bird in the hand 83 | - bird's eye view 84 | - birds and the bees 85 | - birds of a feather flock together 86 | - bit the hand that feeds you 87 | - bite the bullet 88 | - bite the dust 89 | - bitten off more than he can chew 90 | - black as coal 91 | - black as pitch 92 | - black as the ace of spades 93 | - blast from the past 94 | - bleeding heart 95 | - blessing in disguise 96 | - blind ambition 97 | - blind as a bat 98 | - blind leading the blind 99 | - blissful ignorance 100 | - blood is thicker than water 101 | - blood sweat and tears 102 | - blow a fuse 103 | - blow off steam 104 | - blow your own horn 105 | - blushing bride 106 | - boils down to 107 | - bolt from the blue 108 | - bone to pick 109 | - bored stiff 110 | - bored to tears 111 | - bottomless pit 112 | - boys will be boys 113 | - bright and early 114 | - brings home the bacon 115 | - broad across the beam 116 | - broken record 117 | - brought back to reality 118 | - bulk large 119 | - bull by the horns 120 | - bull in a china shop 121 | - burn the midnight oil 122 | - burning question 123 | - burning the candle at both ends 124 | - burst your bubble 125 | - bury the hatchet 126 | - busy as a bee 127 | - but that's another story 128 | - by hook or by crook 129 | - call a spade a spade 130 | - called onto the carpet 131 | - calm before the storm 132 | - can of worms 133 | - can't cut the mustard 134 | - can't hold a candle to 135 | - case of mistaken identity 136 | - cast aspersions 137 | - cat got your tongue 138 | - cat's meow 139 | - caught in the crossfire 140 | - caught red-handed 141 | - chase a red herring 142 | - checkered past 143 | - chomping at the bit 144 | - cleanliness is next to godliness 145 | - clear as a bell 146 | - clear as mud 147 | - close to the vest 148 | - cock and bull story 149 | - cold shoulder 150 | - come hell or high water 151 | - comparing apples and oranges 152 | - compleat 153 | - conspicuous by its absence 154 | - cool as a cucumber 155 | - cool, calm, and collected 156 | - cost a king's ransom 157 | - count your blessings 158 | - crack of dawn 159 | - crash course 160 | - creature comforts 161 | - cross that bridge when you come to it 162 | - crushing blow 163 | - cry like a baby 164 | - cry me a river 165 | - cry over spilt milk 166 | - crystal clear 167 | - curiosity killed the cat 168 | - cut and dried 169 | - cut through the red tape 170 | - cut to the chase 171 | - cute as a bugs ear 172 | - cute as a button 173 | - cute as a puppy 174 | - cuts to the quick 175 | - cutting edge 176 | - dark before the dawn 177 | - day in, day out 178 | - dead as a doornail 179 | - decision-making process 180 | - devil is in the details 181 | - dime a dozen 182 | - divide and conquer 183 | - dog and pony show 184 | - dog days 185 | - dog eat dog 186 | - dog tired 187 | - don't burn your bridges 188 | - don't count your chickens 189 | - don't look a gift horse in the mouth 190 | - don't rock the boat 191 | - don't step on anyone's toes 192 | - don't take any wooden nickels 193 | - down and out 194 | - down at the heels 195 | - down in the dumps 196 | - down the hatch 197 | - down to earth 198 | - draw the line 199 | - dressed to kill 200 | - dressed to the nines 201 | - drives me up the wall 202 | - dubious distinction 203 | - dull as dishwater 204 | - duly authorized 205 | - dyed in the wool 206 | - eagle eye 207 | - ear to the ground 208 | - early bird catches the worm 209 | - easier said than done 210 | - easy as pie 211 | - eat your heart out 212 | - eat your words 213 | - eleventh hour 214 | - even the playing field 215 | - every dog has its day 216 | - every fiber of my being 217 | - everything but the kitchen sink 218 | - eye for an eye 219 | - eyes peeled 220 | - face the music 221 | - facts of life 222 | - fair weather friend 223 | - fall by the wayside 224 | - fan the flames 225 | - far be it from me 226 | - fast and loose 227 | - feast or famine 228 | - feather your nest 229 | - feathered friends 230 | - few and far between 231 | - fifteen minutes of fame 232 | - fills the bill 233 | - filthy vermin 234 | - fine kettle of fish 235 | - first and foremost 236 | - fish out of water 237 | - fishing for a compliment 238 | - fit as a fiddle 239 | - fit the bill 240 | - fit to be tied 241 | - flash in the pan 242 | - flat as a pancake 243 | - flip your lid 244 | - flog a dead horse 245 | - fly by night 246 | - fly the coop 247 | - follow your heart 248 | - for all intents and purposes 249 | - for free 250 | - for the birds 251 | - for what it's worth 252 | - force of nature 253 | - force to be reckoned with 254 | - forgive and forget 255 | - fox in the henhouse 256 | - free and easy 257 | - free as a bird 258 | - fresh as a daisy 259 | - full steam ahead 260 | - fun in the sun 261 | - garbage in, garbage out 262 | - gentle as a lamb 263 | - get a kick out of 264 | - get a leg up 265 | - get down and dirty 266 | - get the lead out 267 | - get to the bottom of 268 | - get with the program 269 | - get your feet wet 270 | - gets my goat 271 | - gilding the lily 272 | - give and take 273 | - go against the grain 274 | - go at it tooth and nail 275 | - go for broke 276 | - go him one better 277 | - go the extra mile 278 | - go with the flow 279 | - goes without saying 280 | - good as gold 281 | - good deed for the day 282 | - good things come to those who wait 283 | - good time was had by all 284 | - good times were had by all 285 | - greased lightning 286 | - greek to me 287 | - green thumb 288 | - green-eyed monster 289 | - grist for the mill 290 | - growing like a weed 291 | - hair of the dog 292 | - hand to mouth 293 | - happy as a clam 294 | - happy as a lark 295 | - hasn't a clue 296 | - have a nice day 297 | - have a short fuse 298 | - have high hopes 299 | - have the last laugh 300 | - haven't got a row to hoe 301 | - he's got his hands full 302 | - head honcho 303 | - head over heels 304 | - hear a pin drop 305 | - heard it through the grapevine 306 | - heart's content 307 | - heavy as lead 308 | - hem and haw 309 | - high and dry 310 | - high and mighty 311 | - high as a kite 312 | - his own worst enemy 313 | - his work cut out for him 314 | - hit paydirt 315 | - hither and yon 316 | - Hobson's choice 317 | - hold your head up high 318 | - hold your horses 319 | - hold your own 320 | - hold your tongue 321 | - honest as the day is long 322 | - horns of a dilemma 323 | - horse of a different color 324 | - hot under the collar 325 | - hour of need 326 | - I beg to differ 327 | - icing on the cake 328 | - if the shoe fits 329 | - if the shoe were on the other foot 330 | - if you catch my drift 331 | - in a jam 332 | - in a jiffy 333 | - in a nutshell 334 | - in a pig's eye 335 | - in a pinch 336 | - in a word 337 | - in hot water 338 | - in light of 339 | - in the final analysis 340 | - in the gutter 341 | - in the last analysis 342 | - in the nick of time 343 | - in the thick of it 344 | - in your dreams 345 | - innocent bystander 346 | - it ain't over till the fat lady sings 347 | - it goes without saying 348 | - it takes all kinds 349 | - it takes one to know one 350 | - it's a small world 351 | - it's not what you know, it's who you know 352 | - it's only a matter of time 353 | - ivory tower 354 | - Jack of all trades 355 | - jockey for position 356 | - jog your memory 357 | - joined at the hip 358 | - judge a book by its cover 359 | - jump down your throat 360 | - jump in with both feet 361 | - jump on the bandwagon 362 | - jump the gun 363 | - jump to conclusions 364 | - just a hop, skip, and a jump 365 | - just the ticket 366 | - justice is blind 367 | - keep a stiff upper lip 368 | - keep an eye on 369 | - keep it simple, stupid 370 | - keep the home fires burning 371 | - keep up with the Joneses 372 | - keep your chin up 373 | - keep your fingers crossed 374 | - kick the bucket 375 | - kick up your heels 376 | - kick your feet up 377 | - kid in a candy store 378 | - kill two birds with one stone 379 | - kiss of death 380 | - knock it out of the park 381 | - knock on wood 382 | - knock your socks off 383 | - know him from Adam 384 | - know the ropes 385 | - know the score 386 | - knuckle down 387 | - knuckle sandwich 388 | - knuckle under 389 | - labor of love 390 | - ladder of success 391 | - land on your feet 392 | - lap of luxury 393 | - last but not least 394 | - last hurrah 395 | - last-ditch effort 396 | - law of the jungle 397 | - law of the land 398 | - lay down the law 399 | - leaps and bounds 400 | - let sleeping dogs lie 401 | - let the cat out of the bag 402 | - let the good times roll 403 | - let your hair down 404 | - let's talk turkey 405 | - letter perfect 406 | - lick your wounds 407 | - lies like a rug 408 | - life's a bitch 409 | - life's a grind 410 | - light at the end of the tunnel 411 | - lighter than a feather 412 | - lighter than air 413 | - like clockwork 414 | - like father like son 415 | - like taking candy from a baby 416 | - like there's no tomorrow 417 | - lion's share 418 | - live and learn 419 | - live and let live 420 | - long and short of it 421 | - long lost love 422 | - look before you leap 423 | - look down your nose 424 | - look what the cat dragged in 425 | - looking a gift horse in the mouth 426 | - looks like death warmed over 427 | - loose cannon 428 | - lose your head 429 | - lose your temper 430 | - loud as a horn 431 | - lounge lizard 432 | - loved and lost 433 | - low man on the totem pole 434 | - luck of the draw 435 | - luck of the Irish 436 | - make a mockery of 437 | - make hay while the sun shines 438 | - make money hand over fist 439 | - make my day 440 | - make the best of a bad situation 441 | - make the best of it 442 | - make your blood boil 443 | - male chauvinism 444 | - man of few words 445 | - man's best friend 446 | - mark my words 447 | - meaningful dialogue 448 | - missed the boat on that one 449 | - moment in the sun 450 | - moment of glory 451 | - moment of truth 452 | - money to burn 453 | - more in sorrow than in anger 454 | - more power to you 455 | - more sinned against than sinning 456 | - more than one way to skin a cat 457 | - movers and shakers 458 | - moving experience 459 | - my better half 460 | - naked as a jaybird 461 | - naked truth 462 | - neat as a pin 463 | - needle in a haystack 464 | - needless to say 465 | - neither here nor there 466 | - never look back 467 | - never say never 468 | - nip and tuck 469 | - nip in the bud 470 | - nip it in the bud 471 | - no guts, no glory 472 | - no love lost 473 | - no pain, no gain 474 | - no skin off my back 475 | - no stone unturned 476 | - no time like the present 477 | - no use crying over spilled milk 478 | - nose to the grindstone 479 | - not a hope in hell 480 | - not a minute's peace 481 | - not in my backyard 482 | - not playing with a full deck 483 | - not the end of the world 484 | - not written in stone 485 | - nothing to sneeze at 486 | - nothing ventured nothing gained 487 | - now we're cooking 488 | - off the top of my head 489 | - off the wagon 490 | - off the wall 491 | - old hat 492 | - olden days 493 | - older and wiser 494 | - older than dirt 495 | - older than Methuselah 496 | - on a roll 497 | - on cloud nine 498 | - on pins and needles 499 | - on the bandwagon 500 | - on the money 501 | - on the nose 502 | - on the rocks 503 | - on the same page 504 | - on the spot 505 | - on the tip of my tongue 506 | - on the wagon 507 | - on thin ice 508 | - once bitten, twice shy 509 | - one bad apple doesn't spoil the bushel 510 | - one born every minute 511 | - one brick short 512 | - one foot in the grave 513 | - one in a million 514 | - one red cent 515 | - only game in town 516 | - open a can of worms 517 | - open and shut case 518 | - open the flood gates 519 | - opportunity doesn't knock twice 520 | - out of pocket 521 | - out of sight, out of mind 522 | - out of the frying pan into the fire 523 | - out of the woods 524 | - out on a limb 525 | - over a barrel 526 | - over the hump 527 | - pain and suffering 528 | - pain in the 529 | - panic button 530 | - par for the course 531 | - part and parcel 532 | - party pooper 533 | - pass the buck 534 | - patience is a virtue 535 | - pay through the nose 536 | - penny pincher 537 | - perfect storm 538 | - pig in a poke 539 | - pile it on 540 | - pillar of the community 541 | - pin your hopes on 542 | - pitter patter of little feet 543 | - plain as day 544 | - plain as the nose on your face 545 | - play by the rules 546 | - play your cards right 547 | - playing the field 548 | - playing with fire 549 | - pleased as punch 550 | - plenty of fish in the sea 551 | - point with pride 552 | - poor as a church mouse 553 | - pot calling the kettle black 554 | - presidential timber 555 | - pretty as a picture 556 | - pull a fast one 557 | - pull your punches 558 | - pulled no punches 559 | - pulling your leg 560 | - pure as the driven snow 561 | - put it in a nutshell 562 | - put one over on you 563 | - put the cart before the horse 564 | - put the pedal to the metal 565 | - put your best foot forward 566 | - put your foot down 567 | - quantum jump 568 | - quantum leap 569 | - quick as a bunny 570 | - quick as a lick 571 | - quick as a wink 572 | - quick as lightning 573 | - quiet as a dormouse 574 | - rags to riches 575 | - raining buckets 576 | - raining cats and dogs 577 | - rank and file 578 | - rat race 579 | - reap what you sow 580 | - red as a beet 581 | - red herring 582 | - redound to one's credit 583 | - redound to the benefit of 584 | - reinvent the wheel 585 | - rich and famous 586 | - rings a bell 587 | - ripe old age 588 | - ripped me off 589 | - rise and shine 590 | - road to hell is paved with good intentions 591 | - rob Peter to pay Paul 592 | - roll over in the grave 593 | - rub the wrong way 594 | - ruled the roost 595 | - running in circles 596 | - sad but true 597 | - sadder but wiser 598 | - salt of the earth 599 | - scared stiff 600 | - scared to death 601 | - sea change 602 | - sealed with a kiss 603 | - second to none 604 | - see eye to eye 605 | - seen the light 606 | - seize the day 607 | - set the record straight 608 | - set the world on fire 609 | - set your teeth on edge 610 | - sharp as a tack 611 | - shirked his duties 612 | - shoot for the moon 613 | - shoot the breeze 614 | - shot in the dark 615 | - shoulder to the wheel 616 | - sick as a dog 617 | - sigh of relief 618 | - signed, sealed, and delivered 619 | - sink or swim 620 | - six of one, half a dozen of another 621 | - six of one, half a dozen of the other 622 | - skating on thin ice 623 | - slept like a log 624 | - slinging mud 625 | - slippery as an eel 626 | - slow as molasses 627 | - smart as a whip 628 | - smooth as a baby's bottom 629 | - sneaking suspicion 630 | - snug as a bug in a rug 631 | - sow wild oats 632 | - spare the rod, spoil the child 633 | - speak of the devil 634 | - spilled the beans 635 | - spinning your wheels 636 | - spitting image of 637 | - spoke with relish 638 | - spread like wildfire 639 | - spring to life 640 | - squeaky wheel gets the grease 641 | - stands out like a sore thumb 642 | - start from scratch 643 | - stick in the mud 644 | - still waters run deep 645 | - stitch in time 646 | - stop and smell the roses 647 | - straight as an arrow 648 | - straw that broke the camel's back 649 | - stretched to the breaking point 650 | - strong as an ox 651 | - stubborn as a mule 652 | - stuff that dreams are made of 653 | - stuffed shirt 654 | - sweating blood 655 | - sweating bullets 656 | - take a load off 657 | - take one for the team 658 | - take the bait 659 | - take the bull by the horns 660 | - take the plunge 661 | - takes one to know one 662 | - takes two to tango 663 | - than you can shake a stick at 664 | - the cream of the crop 665 | - the cream rises to the top 666 | - the more the merrier 667 | - the real deal 668 | - the real McCoy 669 | - the red carpet treatment 670 | - the same old story 671 | - the straw that broke the camel's back 672 | - there is no accounting for taste 673 | - thick as a brick 674 | - thick as thieves 675 | - thin as a rail 676 | - think outside of the box 677 | - thinking outside the box 678 | - third time's the charm 679 | - this day and age 680 | - this hurts me worse than it hurts you 681 | - this point in time 682 | - thought leaders? 683 | - three sheets to the wind 684 | - through thick and thin 685 | - throw in the towel 686 | - throw the baby out with the bathwater 687 | - tie one on 688 | - tighter than a drum 689 | - time and time again 690 | - time is of the essence 691 | - tip of the iceberg 692 | - tired but happy 693 | - to coin a phrase 694 | - to each his own 695 | - to make a long story short 696 | - to the best of my knowledge 697 | - toe the line 698 | - tongue in cheek 699 | - too good to be true 700 | - too hot to handle 701 | - too numerous to mention 702 | - touch with a ten foot pole 703 | - tough as nails 704 | - trial and error 705 | - trials and tribulations 706 | - tried and true 707 | - trip down memory lane 708 | - twist of fate 709 | - two cents worth 710 | - two peas in a pod 711 | - ugly as sin 712 | - under the counter 713 | - under the gun 714 | - under the same roof 715 | - under the weather 716 | - until the cows come home 717 | - unvarnished truth 718 | - up the creek 719 | - uphill battle 720 | - upper crust 721 | - upset the applecart 722 | - vain attempt 723 | - vain effort 724 | - vanquish the enemy 725 | - various and sundry 726 | - vested interest 727 | - viable alternative 728 | - waiting for the other shoe to drop 729 | - wakeup call 730 | - warm welcome 731 | - watch your p's and q's 732 | - watch your tongue 733 | - watching the clock 734 | - water under the bridge 735 | - wax eloquent 736 | - wax poetic 737 | - we've got a situation here 738 | - weather the storm 739 | - weed them out 740 | - week of Sundays 741 | - went belly up 742 | - wet behind the ears 743 | - what goes around comes around 744 | - what you see is what you get 745 | - when it rains, it pours 746 | - when push comes to shove 747 | - when the cat's away 748 | - when the going gets tough, the tough get going 749 | - whet (?:the|your) appetite 750 | - white as a sheet 751 | - whole ball of wax 752 | - whole hog 753 | - whole nine yards 754 | - wild goose chase 755 | - will wonders never cease? 756 | - wisdom of the ages 757 | - wise as an owl 758 | - wolf at the door 759 | - wool pulled over our eyes 760 | - words fail me 761 | - work like a dog 762 | - world weary 763 | - worst nightmare 764 | - worth its weight in gold 765 | - writ large 766 | - wrong side of the bed 767 | - yanking your chain 768 | - yappy as a dog 769 | - years young 770 | - you are what you eat 771 | - you can run but you can't hide 772 | - you only live once 773 | - you're the boss 774 | - young and foolish 775 | - young and vibrant 776 | -------------------------------------------------------------------------------- /proselint/CorporateSpeak.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is corporate speak." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - at the end of the day 7 | - back to the drawing board 8 | - hit the ground running 9 | - get the ball rolling 10 | - low-hanging fruit 11 | - thrown under the bus 12 | - think outside the box 13 | - let's touch base 14 | - get my manager's blessing 15 | - it's on my radar 16 | - ping me 17 | - i don't have the bandwidth 18 | - no brainer 19 | - par for the course 20 | - bang for your buck 21 | - synergy 22 | - move the goal post 23 | - apples to apples 24 | - win-win 25 | - circle back around 26 | - all hands on deck 27 | - take this offline 28 | - drill-down 29 | - elephant in the room 30 | - on my plate 31 | -------------------------------------------------------------------------------- /proselint/Currency.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Incorrect use of symbols in '%s'." 3 | ignorecase: true 4 | raw: 5 | - \$[\d]* ?(?:dollars|usd|us dollars) 6 | -------------------------------------------------------------------------------- /proselint/Cursing.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Consider replacing '%s'." 3 | level: error 4 | ignorecase: true 5 | tokens: 6 | - shit 7 | - piss 8 | - fuck 9 | - cunt 10 | - cocksucker 11 | - motherfucker 12 | - tits 13 | - fart 14 | - turd 15 | - twat 16 | -------------------------------------------------------------------------------- /proselint/DateCase.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: With lowercase letters, the periods are standard. 3 | ignorecase: false 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '\d{1,2} ?[ap]m\b' 8 | -------------------------------------------------------------------------------- /proselint/DateMidnight.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use 'midnight' or 'noon'." 3 | ignorecase: true 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '12 ?[ap]\.?m\.?' 8 | -------------------------------------------------------------------------------- /proselint/DateRedundancy.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'a.m.' is always morning; 'p.m.' is always night." 3 | ignorecase: true 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '\d{1,2} ?a\.?m\.? in the morning' 8 | - '\d{1,2} ?p\.?m\.? in the evening' 9 | - '\d{1,2} ?p\.?m\.? at night' 10 | - '\d{1,2} ?p\.?m\.? in the afternoon' 11 | -------------------------------------------------------------------------------- /proselint/DateSpacing.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "It's standard to put a space before '%s'" 3 | ignorecase: true 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '\d{1,2}[ap]\.?m\.?' 8 | -------------------------------------------------------------------------------- /proselint/DenizenLabels.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: Did you mean '%s'? 3 | ignorecase: false 4 | action: 5 | name: replace 6 | swap: 7 | (?:Afrikaaner|Afrikander): Afrikaner 8 | (?:Hong Kongite|Hong Kongian): Hong Konger 9 | (?:Indianan|Indianian): Hoosier 10 | (?:Michiganite|Michiganian): Michigander 11 | (?:New Hampshireite|New Hampshireman): New Hampshirite 12 | (?:Newcastlite|Newcastleite): Novocastrian 13 | (?:Providencian|Providencer): Providentian 14 | (?:Trentian|Trentonian): Tridentine 15 | (?:Warsawer|Warsawian): Varsovian 16 | (?:Wolverhamptonite|Wolverhamptonian): Wulfrunian 17 | Alabaman: Alabamian 18 | Albuquerquian: Albuquerquean 19 | Anchoragite: Anchorageite 20 | Arizonian: Arizonan 21 | Arkansawyer: Arkansan 22 | Belarusan: Belarusian 23 | Cayman Islander: Caymanian 24 | Coloradoan: Coloradan 25 | Connecticuter: Nutmegger 26 | Fairbanksian: Fairbanksan 27 | Fort Worther: Fort Worthian 28 | Grenadian: Grenadan 29 | Halifaxer: Haligonian 30 | Hartlepoolian: Hartlepudlian 31 | Illinoisian: Illinoisan 32 | Iowegian: Iowan 33 | Leedsian: Leodenisian 34 | Liverpoolian: Liverpudlian 35 | Los Angelean: Angeleno 36 | Manchesterian: Mancunian 37 | Minneapolisian: Minneapolitan 38 | Missouran: Missourian 39 | Monacan: Monegasque 40 | Neopolitan: Neapolitan 41 | New Jerseyite: New Jerseyan 42 | New Orleansian: New Orleanian 43 | Oklahoma Citian: Oklahoma Cityan 44 | Oklahomian: Oklahoman 45 | Saudi Arabian: Saudi 46 | Seattlite: Seattleite 47 | Surinamer: Surinamese 48 | Tallahassean: Tallahasseean 49 | Tennesseean: Tennessean 50 | Trois-Rivièrester: Trifluvian 51 | Utahan: Utahn 52 | Valladolidian: Vallisoletano 53 | -------------------------------------------------------------------------------- /proselint/Diacritical.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: Consider using '%s' instead of '%s'. 3 | ignorecase: true 4 | level: error 5 | action: 6 | name: replace 7 | swap: 8 | beau ideal: beau idéal 9 | boutonniere: boutonnière 10 | bric-a-brac: bric-à-brac 11 | cafe: café 12 | cause celebre: cause célèbre 13 | chevre: chèvre 14 | cliche: cliché 15 | consomme: consommé 16 | coup de grace: coup de grâce 17 | crudites: crudités 18 | creme brulee: crème brûlée 19 | creme de menthe: crème de menthe 20 | creme fraice: crème fraîche 21 | creme fresh: crème fraîche 22 | crepe: crêpe 23 | debutante: débutante 24 | decor: décor 25 | deja vu: déjà vu 26 | denouement: dénouement 27 | facade: façade 28 | fiance: fiancé 29 | fiancee: fiancée 30 | flambe: flambé 31 | garcon: garçon 32 | lycee: lycée 33 | maitre d: maître d 34 | menage a trois: ménage à trois 35 | negligee: négligée 36 | protege: protégé 37 | protegee: protégée 38 | puree: purée 39 | my resume: my résumé 40 | your resume: your résumé 41 | his resume: his résumé 42 | her resume: her résumé 43 | a resume: a résumé 44 | the resume: the résumé 45 | risque: risqué 46 | roue: roué 47 | soiree: soirée 48 | souffle: soufflé 49 | soupcon: soupçon 50 | touche: touché 51 | tete-a-tete: tête-à-tête 52 | voila: voilà 53 | a la carte: à la carte 54 | a la mode: à la mode 55 | emigre: émigré 56 | 57 | # Spanish loanwords 58 | El Nino: El Niño 59 | jalapeno: jalapeño 60 | La Nina: La Niña 61 | pina colada: piña colada 62 | senor: señor 63 | senora: señora 64 | senorita: señorita 65 | 66 | # Portuguese loanwords 67 | acai: açaí 68 | 69 | # German loanwords 70 | doppelganger: doppelgänger 71 | Fuhrer: Führer 72 | Gewurztraminer: Gewürztraminer 73 | vis-a-vis: vis-à-vis 74 | Ubermensch: Übermensch 75 | 76 | # Swedish loanwords 77 | filmjolk: filmjölk 78 | smorgasbord: smörgåsbord 79 | 80 | # Names, places, and companies 81 | Beyonce: Beyoncé 82 | Bronte: Brontë 83 | Champs-Elysees: Champs-Élysées 84 | Citroen: Citroën 85 | Curacao: Curaçao 86 | Lowenbrau: Löwenbräu 87 | Monegasque: Monégasque 88 | Motley Crue: Mötley Crüe 89 | Nescafe: Nescafé 90 | Queensryche: Queensrÿche 91 | Quebec: Québec 92 | Quebecois: Québécois 93 | Angstrom: Ångström 94 | angstrom: ångström 95 | Skoda: Škoda 96 | -------------------------------------------------------------------------------- /proselint/GenderBias.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: Consider using '%s' instead of '%s'. 3 | ignorecase: true 4 | level: error 5 | action: 6 | name: replace 7 | swap: 8 | (?:alumnae|alumni): graduates 9 | (?:alumna|alumnus): graduate 10 | air(?:m[ae]n|wom[ae]n): pilot(s) 11 | anchor(?:m[ae]n|wom[ae]n): anchor(s) 12 | authoress: author 13 | camera(?:m[ae]n|wom[ae]n): camera operator(s) 14 | chair(?:m[ae]n|wom[ae]n): chair(s) 15 | congress(?:m[ae]n|wom[ae]n): member(s) of congress 16 | door(?:m[ae]|wom[ae]n): concierge(s) 17 | draft(?:m[ae]n|wom[ae]n): drafter(s) 18 | fire(?:m[ae]n|wom[ae]n): firefighter(s) 19 | fisher(?:m[ae]n|wom[ae]n): fisher(s) 20 | fresh(?:m[ae]n|wom[ae]n): first-year student(s) 21 | garbage(?:m[ae]n|wom[ae]n): waste collector(s) 22 | lady lawyer: lawyer 23 | ladylike: courteous 24 | landlord: building manager 25 | mail(?:m[ae]n|wom[ae]n): mail carriers 26 | man and wife: husband and wife 27 | man enough: strong enough 28 | mankind: human kind 29 | manmade: manufactured 30 | men and girls: men and women 31 | middle(?:m[ae]n|wom[ae]n): intermediary 32 | news(?:m[ae]n|wom[ae]n): journalist(s) 33 | ombuds(?:man|woman): ombuds 34 | oneupmanship: upstaging 35 | poetess: poet 36 | police(?:m[ae]n|wom[ae]n): police officer(s) 37 | repair(?:m[ae]n|wom[ae]n): technician(s) 38 | sales(?:m[ae]n|wom[ae]n): salesperson or sales people 39 | service(?:m[ae]n|wom[ae]n): soldier(s) 40 | steward(?:ess)?: flight attendant 41 | tribes(?:m[ae]n|wom[ae]n): tribe member(s) 42 | waitress: waiter 43 | woman doctor: doctor 44 | woman scientist[s]?: scientist(s) 45 | work(?:m[ae]n|wom[ae]n): worker(s) 46 | -------------------------------------------------------------------------------- /proselint/GroupTerms.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: Consider using '%s' instead of '%s'. 3 | ignorecase: true 4 | action: 5 | name: replace 6 | swap: 7 | (?:bunch|group|pack|flock) of chickens: brood of chickens 8 | (?:bunch|group|pack|flock) of crows: murder of crows 9 | (?:bunch|group|pack|flock) of hawks: cast of hawks 10 | (?:bunch|group|pack|flock) of parrots: pandemonium of parrots 11 | (?:bunch|group|pack|flock) of peacocks: muster of peacocks 12 | (?:bunch|group|pack|flock) of penguins: muster of penguins 13 | (?:bunch|group|pack|flock) of sparrows: host of sparrows 14 | (?:bunch|group|pack|flock) of turkeys: rafter of turkeys 15 | (?:bunch|group|pack|flock) of woodpeckers: descent of woodpeckers 16 | (?:bunch|group|pack|herd) of apes: shrewdness of apes 17 | (?:bunch|group|pack|herd) of baboons: troop of baboons 18 | (?:bunch|group|pack|herd) of badgers: cete of badgers 19 | (?:bunch|group|pack|herd) of bears: sloth of bears 20 | (?:bunch|group|pack|herd) of bullfinches: bellowing of bullfinches 21 | (?:bunch|group|pack|herd) of bullocks: drove of bullocks 22 | (?:bunch|group|pack|herd) of caterpillars: army of caterpillars 23 | (?:bunch|group|pack|herd) of cats: clowder of cats 24 | (?:bunch|group|pack|herd) of colts: rag of colts 25 | (?:bunch|group|pack|herd) of crocodiles: bask of crocodiles 26 | (?:bunch|group|pack|herd) of dolphins: school of dolphins 27 | (?:bunch|group|pack|herd) of foxes: skulk of foxes 28 | (?:bunch|group|pack|herd) of gorillas: band of gorillas 29 | (?:bunch|group|pack|herd) of hippopotami: bloat of hippopotami 30 | (?:bunch|group|pack|herd) of horses: drove of horses 31 | (?:bunch|group|pack|herd) of jellyfish: fluther of jellyfish 32 | (?:bunch|group|pack|herd) of kangeroos: mob of kangeroos 33 | (?:bunch|group|pack|herd) of monkeys: troop of monkeys 34 | (?:bunch|group|pack|herd) of oxen: yoke of oxen 35 | (?:bunch|group|pack|herd) of rhinoceros: crash of rhinoceros 36 | (?:bunch|group|pack|herd) of wild boar: sounder of wild boar 37 | (?:bunch|group|pack|herd) of wild pigs: drift of wild pigs 38 | (?:bunch|group|pack|herd) of zebras: zeal of wild pigs 39 | (?:bunch|group|pack|school) of trout: hover of trout 40 | -------------------------------------------------------------------------------- /proselint/Hedging.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is hedging." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - I would argue that 7 | - ', so to speak' 8 | - to a certain degree 9 | -------------------------------------------------------------------------------- /proselint/Hyperbole.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is hyperbolic." 3 | level: error 4 | nonword: true 5 | tokens: 6 | - '[a-z]+[!?]{2,}' 7 | -------------------------------------------------------------------------------- /proselint/Jargon.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is jargon." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - in the affirmative 7 | - in the negative 8 | - agendize 9 | - per your order 10 | - per your request 11 | - disincentivize 12 | -------------------------------------------------------------------------------- /proselint/LGBTOffensive.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is offensive. Remove it or consider the context." 3 | ignorecase: true 4 | tokens: 5 | - fag 6 | - faggot 7 | - dyke 8 | - sodomite 9 | - homosexual agenda 10 | - gay agenda 11 | - transvestite 12 | - homosexual lifestyle 13 | - gay lifestyle 14 | -------------------------------------------------------------------------------- /proselint/LGBTTerms.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: "Consider using '%s' instead of '%s'." 3 | ignorecase: true 4 | action: 5 | name: replace 6 | swap: 7 | homosexual man: gay man 8 | homosexual men: gay men 9 | homosexual woman: lesbian 10 | homosexual women: lesbians 11 | homosexual people: gay people 12 | homosexual couple: gay couple 13 | sexual preference: sexual orientation 14 | (?:admitted homosexual|avowed homosexual): openly gay 15 | special rights: equal rights 16 | -------------------------------------------------------------------------------- /proselint/Malapropisms.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is a malapropism." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - the infinitesimal universe 7 | - a serial experience 8 | - attack my voracity 9 | -------------------------------------------------------------------------------- /proselint/Needless.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: Prefer '%s' over '%s' 3 | ignorecase: true 4 | action: 5 | name: replace 6 | swap: 7 | '(?:cell phone|cell-phone)': cellphone 8 | '(?:cliquey|cliquy)': cliquish 9 | '(?:pygmean|pygmaen)': pygmy 10 | '(?:retributional|retributionary)': retributive 11 | '(?:revokable|revokeable)': revocable 12 | abolishment: abolition 13 | accessary: accessory 14 | accreditate: accredit 15 | accruement: accrual 16 | accusee: accused 17 | acquaintanceship: acquaintance 18 | acquitment: acquittal 19 | administrate: administer 20 | administrated: administered 21 | administrating: administering 22 | adulterate: adulterous 23 | advisatory: advisory 24 | advocator: advocate 25 | aggrievance: grievance 26 | allegator: alleger 27 | allusory: allusive 28 | amative: amorous 29 | amortizement: amortization 30 | amphiboly: amphibology 31 | anecdotalist: anecdotist 32 | anilinctus: anilingus 33 | anticipative: anticipatory 34 | antithetic: antithetical 35 | applicative: applicable 36 | applicatory: applicable 37 | applier: applicator 38 | approbative: approbatory 39 | arbitrager: arbitrageur 40 | arsenous: arsenious 41 | ascendance: ascendancy 42 | ascendence: ascendancy 43 | ascendency: ascendancy 44 | auctorial: authorial 45 | averral: averment 46 | barbwire: barbed wire 47 | benefic: beneficent 48 | benignant: benign 49 | bestowment: bestowal 50 | betrothment: betrothal 51 | blamableness: blameworthiness 52 | butt naked: buck naked 53 | camarade: comrade 54 | carta blanca: carte blanche 55 | casualities: casualties 56 | casuality: casualty 57 | catch on fire: catch fire 58 | catholicly: catholically 59 | cease fire: ceasefire 60 | channelize: channel 61 | chaplainship: chaplaincy 62 | chrysalid: chrysalis 63 | chrysalids: chrysalises 64 | cigaret: cigarette 65 | coemployee: coworker 66 | cognitional: cognitive 67 | cohabitate: cohabit 68 | cohabitor: cohabitant 69 | collodium: collodion 70 | collusory: collusive 71 | commemoratory: commemorative 72 | commonty: commonage 73 | communicatory: communicative 74 | compensative: compensatory 75 | complacence: complacency 76 | complicitous: complicit 77 | computate: compute 78 | conciliative: conciliatory 79 | concomitancy: concomitance 80 | condonance: condonation 81 | confirmative: confirmatory 82 | congruency: congruence 83 | connotate: connote 84 | consanguineal: consanguine 85 | conspicuity: conspicuousness 86 | conspiratorialist: conspirator 87 | constitutionist: constitutionalist 88 | contingence: contingency 89 | contributary: contributory 90 | contumacity: contumacy 91 | conversible: convertible 92 | conveyal: conveyance 93 | copartner: partner 94 | copartnership: partnership 95 | corroboratory: corroborative 96 | cotemporaneous: contemporaneous 97 | cotemporary: contemporary 98 | criminate: incriminate 99 | culpatory: inculpatory 100 | cumbrance: encumbrance 101 | cumulate: accumulate 102 | curatory: curative 103 | daredeviltry: daredevilry 104 | deceptious: deceptive 105 | defamative: defamatory 106 | defraudulent: fraudulent 107 | degeneratory: degenerative 108 | delimitate: delimit 109 | delusory: delusive 110 | denouncement: denunciation 111 | depositee: depositary 112 | depreciative: depreciatory 113 | deprival: deprivation 114 | derogative: derogatory 115 | destroyable: destructible 116 | detoxicate: detoxify 117 | detractory: detractive 118 | deviancy: deviance 119 | deviationist: deviant 120 | digamy: deuterogamy 121 | digitalize: digitize 122 | diminishment: diminution 123 | diplomatist: diplomat 124 | disassociate: dissociate 125 | disciplinatory: disciplinary 126 | discriminant: discriminating 127 | disenthrone: dethrone 128 | disintegratory: disintegrative 129 | dismission: dismissal 130 | disorientate: disorient 131 | disorientated: disoriented 132 | disquieten: disquiet 133 | distraite: distrait 134 | divergency: divergence 135 | dividable: divisible 136 | doctrinary: doctrinaire 137 | documental: documentary 138 | domesticize: domesticate 139 | duplicatory: duplicative 140 | duteous: dutiful 141 | educationalist: educationist 142 | educatory: educative 143 | enigmatas: enigmas 144 | enlargen: enlarge 145 | enswathe: swathe 146 | epical: epic 147 | erotism: eroticism 148 | ethician: ethicist 149 | ex officiis: ex officio 150 | exculpative: exculpatory 151 | exigeant: exigent 152 | exigence: exigency 153 | exotism: exoticism 154 | expedience: expediency 155 | expediential: expedient 156 | extensible: extendable 157 | eying: eyeing 158 | fiefdom: fief 159 | flagrance: flagrancy 160 | flatulency: flatulence 161 | fraudful: fraudulent 162 | funebrial: funereal 163 | geographical: geographic 164 | geometrical: geometric 165 | gerry-rigged: jury-rigged 166 | goatherder: goatherd 167 | gustatorial: gustatory 168 | habitude: habit 169 | henceforward: henceforth 170 | hesitance: hesitancy 171 | heterogenous: heterogeneous 172 | hierarchic: hierarchical 173 | hindermost: hindmost 174 | honorand: honoree 175 | hypostasize: hypostatize 176 | hysteric: hysterical 177 | idolatrize: idolize 178 | impanel: empanel 179 | imperviable: impervious 180 | importunacy: importunity 181 | impotency: impotence 182 | imprimatura: imprimatur 183 | improprietous: improper 184 | inalterable: unalterable 185 | incitation: incitement 186 | incommunicative: uncommunicative 187 | inconsistence: inconsistency 188 | incontrollable: uncontrollable 189 | incurment: incurrence 190 | indow: endow 191 | indue: endue 192 | inhibitive: inhibitory 193 | innavigable: unnavigable 194 | innovational: innovative 195 | inquisitional: inquisitorial 196 | insistment: insistence 197 | insolvable: unsolvable 198 | instillment: instillation 199 | instinctual: instinctive 200 | insuror: insurer 201 | insurrectional: insurrectionary 202 | interpretate: interpret 203 | intervenience: intervention 204 | ironical: ironic 205 | jerry-rigged: jury-rigged 206 | judgmatic: judgmental 207 | labyrinthian: labyrinthine 208 | laudative: laudatory 209 | legitimatization: legitimation 210 | legitimatize: legitimize 211 | legitimization: legitimation 212 | lengthways: lengthwise 213 | life-sized: life-size 214 | liquorice: licorice 215 | lithesome: lithe 216 | lollipop: lollypop 217 | loth: loath 218 | lubricous: lubricious 219 | maihem: mayhem 220 | medicinal marijuana: medical marijuana 221 | meliorate: ameliorate 222 | minimalize: minimize 223 | mirk: murk 224 | mirky: murky 225 | misdoubt: doubt 226 | monetarize: monetize 227 | moveable: movable 228 | narcism: narcissism 229 | neglective: neglectful 230 | negligency: negligence 231 | neologizer: neologist 232 | neurologic: neurological 233 | nicknack: knickknack 234 | nictate: nictitate 235 | nonenforceable: unenforceable 236 | normalcy: normality 237 | numbedness: numbness 238 | omittable: omissible 239 | onomatopoetic: onomatopoeic 240 | opinioned: opined 241 | optimum advantage: optimal advantage 242 | orientate: orient 243 | outsized: outsize 244 | oversized: oversize 245 | overthrowal: overthrow 246 | pacificist: pacifist 247 | paederast: pederast 248 | parachronism: anachronism 249 | parti-color: parti-colored 250 | participative: participatory 251 | party-colored: parti-colored 252 | pediatrist: pediatrician 253 | penumbrous: penumbral 254 | perjorative: pejorative 255 | permissory: permissive 256 | permutate: permute 257 | personation: impersonation 258 | pharmaceutic: pharmaceutical 259 | pleuritis: pleurisy 260 | policy holder: policyholder 261 | policyowner: policyholder 262 | politicalize: politicize 263 | precedency: precedence 264 | preceptoral: preceptorial 265 | precipitance: precipitancy 266 | precipitant: precipitate 267 | preclusory: preclusive 268 | precolumbian: pre-Columbian 269 | prefectoral: prefectorial 270 | preponderately: preponderantly 271 | preserval: preservation 272 | preventative: preventive 273 | proconsulship: proconsulate 274 | procreational: procreative 275 | procurance: procurement 276 | propelment: propulsion 277 | propulsory: propulsive 278 | prosecutive: prosecutory 279 | protectory: protective 280 | provocatory: provocative 281 | pruriency: prurience 282 | psychal: psychical 283 | punitory: punitive 284 | quantitate: quantify 285 | questionary: questionnaire 286 | quiescency: quiescence 287 | rabbin: rabbi 288 | reasonability: reasonableness 289 | recidivistic: recidivous 290 | recriminative: recriminatory 291 | recruital: recruitment 292 | recurrency: recurrence 293 | recusance: recusancy 294 | recusation: recusal 295 | recusement: recusal 296 | redemptory: redemptive 297 | referrable: referable 298 | referrible: referable 299 | refutatory: refutative 300 | remitment: remittance 301 | remittal: remission 302 | renouncement: renunciation 303 | renunciable: renounceable 304 | reparatory: reparative 305 | repudiative: repudiatory 306 | requitement: requital 307 | rescindment: rescission 308 | restoral: restoration 309 | reticency: reticence 310 | reviewal: review 311 | revisal: revision 312 | revisional: revisionary 313 | revolute: revolt 314 | saliency: salience 315 | salutiferous: salutary 316 | sensatory: sensory 317 | sessionary: sessional 318 | shareowner: shareholder 319 | sicklily: sickly 320 | signator: signatory 321 | slanderize: slander 322 | societary: societal 323 | sodomist: sodomite 324 | solicitate: solicit 325 | speculatory: speculative 326 | spiritous: spirituous 327 | statutorial: statutory 328 | submergeable: submersible 329 | submittal: submission 330 | subtile: subtle 331 | succuba: succubus 332 | sufficience: sufficiency 333 | suppliant: supplicant 334 | surmisal: surmise 335 | suspendible: suspendable 336 | synthetize: synthesize 337 | systemize: systematize 338 | tactual: tactile 339 | tangental: tangential 340 | tautologous: tautological 341 | tee-shirt: T-shirt 342 | thenceforward: thenceforth 343 | transiency: transience 344 | transposal: transposition 345 | unfrequent: infrequent 346 | unreasonability: unreasonableness 347 | unrevokable: irrevocable 348 | unsubstantial: insubstantial 349 | usurpature: usurpation 350 | variative: variational 351 | vegetive: vegetative 352 | vindicative: vindictive 353 | vituperous: vituperative 354 | vociferant: vociferous 355 | volitive: volitional 356 | wolverene: wolverine 357 | wolvish: wolfish 358 | Zoroastrism: Zoroastrianism 359 | -------------------------------------------------------------------------------- /proselint/Nonwords.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: "Consider using '%s' instead of '%s'." 3 | ignorecase: true 4 | level: error 5 | action: 6 | name: replace 7 | swap: 8 | affrontery: effrontery 9 | analyzation: analysis 10 | annoyment: annoyance 11 | confirmant: confirmand 12 | confirmants: confirmands 13 | conversate: converse 14 | crained: craned 15 | discomforture: discomfort|discomfiture 16 | dispersement: disbursement|dispersal 17 | doubtlessly: doubtless|undoubtedly 18 | forebearance: forbearance 19 | improprietous: improper 20 | inclimate: inclement 21 | inimicable: inimical 22 | irregardless: regardless 23 | minimalize: minimize 24 | minimalized: minimized 25 | minimalizes: minimizes 26 | minimalizing: minimizing 27 | optimalize: optimize 28 | paralyzation: paralysis 29 | pettifogger: pettifog 30 | proprietous: proper 31 | relative inexpense: relatively low price|affordability 32 | seldomly: seldom 33 | thusly: thus 34 | uncategorically: categorically 35 | undoubtably: undoubtedly|indubitably 36 | unequivocable: unequivocal 37 | unmercilessly: mercilessly 38 | unrelentlessly: unrelentingly|relentlessly 39 | -------------------------------------------------------------------------------- /proselint/Oxymorons.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is an oxymoron." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - amateur expert 7 | - increasingly less 8 | - advancing backwards 9 | - alludes explicitly to 10 | - explicitly alludes to 11 | - totally obsolescent 12 | - completely obsolescent 13 | - generally always 14 | - usually always 15 | - build down 16 | - conspicuous absence 17 | - exact estimate 18 | - found missing 19 | - intense apathy 20 | - mandatory choice 21 | - organized mess 22 | -------------------------------------------------------------------------------- /proselint/P-Value.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "You should use more decimal places, unless '%s' is really true." 3 | ignorecase: true 4 | level: suggestion 5 | tokens: 6 | - 'p = 0\.0{2,4}' 7 | -------------------------------------------------------------------------------- /proselint/RASSyndrome.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is redundant." 3 | level: error 4 | action: 5 | name: edit 6 | params: 7 | - split 8 | - ' ' 9 | - '0' 10 | tokens: 11 | - ABM missile 12 | - ACT test 13 | - ABM missiles 14 | - ABS braking system 15 | - ATM machine 16 | - CD disc 17 | - CPI Index 18 | - GPS system 19 | - GUI interface 20 | - HIV virus 21 | - ISBN number 22 | - LCD display 23 | - PDF format 24 | - PIN number 25 | - RAS syndrome 26 | - RIP in peace 27 | - please RSVP 28 | - SALT talks 29 | - SAT test 30 | - UPC codes 31 | -------------------------------------------------------------------------------- /proselint/README.md: -------------------------------------------------------------------------------- 1 | Copyright © 2014–2015, Jordan Suchow, Michael Pacer, and Lara A. Ross 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 7 | 8 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 9 | 10 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 11 | 12 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 13 | -------------------------------------------------------------------------------- /proselint/Skunked.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is a bit of a skunked term — impossible to use without issue." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - bona fides 7 | - deceptively 8 | - decimate 9 | - effete 10 | - fulsome 11 | - hopefully 12 | - impassionate 13 | - Thankfully 14 | -------------------------------------------------------------------------------- /proselint/Spelling.yml: -------------------------------------------------------------------------------- 1 | extends: consistency 2 | message: "Inconsistent spelling of '%s'." 3 | level: error 4 | ignorecase: true 5 | either: 6 | advisor: adviser 7 | centre: center 8 | colour: color 9 | emphasise: emphasize 10 | finalise: finalize 11 | focussed: focused 12 | labour: labor 13 | learnt: learned 14 | organise: organize 15 | organised: organized 16 | organising: organizing 17 | recognise: recognize 18 | -------------------------------------------------------------------------------- /proselint/Typography.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: Consider using the '%s' symbol instead of '%s'. 3 | level: error 4 | nonword: true 5 | swap: 6 | '\.\.\.': … 7 | '\([cC]\)': © 8 | '\(TM\)': ™ 9 | '\(tm\)': ™ 10 | '\([rR]\)': ® 11 | '[0-9]+ ?x ?[0-9]+': × 12 | -------------------------------------------------------------------------------- /proselint/Uncomparables.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' is not comparable" 3 | ignorecase: true 4 | level: error 5 | action: 6 | name: edit 7 | params: 8 | - split 9 | - ' ' 10 | - '1' 11 | raw: 12 | - \b(?:absolutely|most|more|less|least|very|quite|largely|extremely|increasingly|kind of|mildy|hardly|greatly|sort of)\b\s* 13 | tokens: 14 | - absolute 15 | - adequate 16 | - complete 17 | - correct 18 | - certain 19 | - devoid 20 | - entire 21 | - 'false' 22 | - fatal 23 | - favorite 24 | - final 25 | - ideal 26 | - impossible 27 | - inevitable 28 | - infinite 29 | - irrevocable 30 | - main 31 | - manifest 32 | - only 33 | - paramount 34 | - perfect 35 | - perpetual 36 | - possible 37 | - preferable 38 | - principal 39 | - singular 40 | - stationary 41 | - sufficient 42 | - 'true' 43 | - unanimous 44 | - unavoidable 45 | - unbroken 46 | - uniform 47 | - unique 48 | - universal 49 | - void 50 | - whole 51 | -------------------------------------------------------------------------------- /proselint/Very.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Remove '%s'." 3 | ignorecase: true 4 | level: error 5 | tokens: 6 | - very 7 | -------------------------------------------------------------------------------- /proselint/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "jdkato", 3 | "description": "A Vale-compatible implementation of the proselint linter.", 4 | "email": "support@errata.ai", 5 | "lang": "en", 6 | "url": "https://github.com/errata-ai/proselint/releases/latest/download/proselint.zip", 7 | "feed": "https://github.com/errata-ai/proselint/releases.atom", 8 | "issues": "https://github.com/errata-ai/proselint/issues/new", 9 | "license": "BSD-3-Clause", 10 | "name": "proselint", 11 | "sources": [ 12 | "https://github.com/amperser/proselint" 13 | ], 14 | "vale_version": ">=1.0.0", 15 | "coverage": 0.0, 16 | "version": "0.1.0" 17 | } 18 | --------------------------------------------------------------------------------