├── .gitignore ├── Gemfile ├── README.md ├── _config.yml ├── _data ├── avoid.yml ├── omit.yml └── swap.yml ├── _sass ├── _styles.scss └── _vars.scss ├── css └── style.scss ├── favicon.ico ├── index.html └── js └── app.js /.gitignore: -------------------------------------------------------------------------------- 1 | _site 2 | *.lock 3 | *.sass-cache -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | gem 'github-pages' -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # copy-cop 2 | 3 | :cop: Put copy in. Get plain language out. 4 | 5 | ## Resources 6 | 7 | * [Simple Words and Phrases](http://www.plainlanguage.gov/howto/wordsuggestions/simplewords.cfm) 8 | * [Words To Avoid in Educational Writing](https://css-tricks.com/words-avoid-educational-writing/) 9 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | title: Copy cop 2 | description: Put copy in. Get plain language out. 3 | 4 | baseurl: /copy-cop 5 | markdown: kramdown 6 | sass: 7 | style: :compressed 8 | 9 | author: 10 | name: Katy DeCorah 11 | email: katydecorah@gmail.com 12 | uri: http://katydecorah.com 13 | 14 | angularjs: 1.4.8 15 | 16 | -------------------------------------------------------------------------------- /_data/avoid.yml: -------------------------------------------------------------------------------- 1 | avoid: 2 | - crazy 3 | - hot 4 | - sexy 5 | - insane 6 | -------------------------------------------------------------------------------- /_data/omit.yml: -------------------------------------------------------------------------------- 1 | # http://www.plainlanguage.gov/howto/wordsuggestions/simplewords.cfm 2 | # https://css-tricks.com/words-avoid-educational-writing/ 3 | omit: 4 | - easy 5 | - easily 6 | - simply 7 | - simple 8 | - obviously 9 | - just 10 | - basically 11 | - clearly 12 | - be advised 13 | - currently 14 | - in the process of 15 | - procure 16 | - take action to 17 | - the month of 18 | - the user of 19 | -------------------------------------------------------------------------------- /_data/swap.yml: -------------------------------------------------------------------------------- 1 | # http: //www.plainlanguage.gov/howto/wordsuggestions/simplewords.cfm 2 | # "original word/phrase": "new word/phrase" 3 | swap: 4 | - "accorded": "given" 5 | - "accordingly": "so" 6 | - "accrue": "gain" 7 | - "accurate": "correct" 8 | - "additional": "added" 9 | - "address": "discuss" 10 | - "addressees": "you" 11 | - "adjacent to": "next to" 12 | - "advantageous": "helpful" 13 | - "adversely impact on": "hurt" 14 | - "advise": "recommend" 15 | - "afford an opportunity": "allow" 16 | - "aircraft": "plane" 17 | - "allocate": "divide" 18 | - "anticipate": "expect" 19 | - "apparent": "clear" 20 | - "appreciable": "many" 21 | - "approximate": "about" 22 | - "arrive onboard": "arrive" 23 | - "as a means of": "to" 24 | - "as prescribed by": "in" 25 | - "ascertain": "learn" 26 | - "assist": "aid" 27 | - "at the present time": "at present" 28 | - "attain": "meet" 29 | - "attempt": "try" 30 | - "benefit": "help" 31 | - "by means of": "by" 32 | - "capability": "ability" 33 | - "caveat": "warning" 34 | - "close proximity": "near" 35 | - "combat environment": "combat" 36 | - "combined": "joint" 37 | - "commence": "begin" 38 | - "comply with": "follow" 39 | - "component": "part" 40 | - "comprise": "make up" 41 | - "concerning": "about" 42 | - "consequently": "so" 43 | - "consolidate": "combine" 44 | - "constitutes": "is" 45 | - "contains": "has" 46 | - "convene": "meet" 47 | - "deem": "consider" 48 | - "delete": "cut" 49 | - "demonstrate": "prove" 50 | - "depart": "leave" 51 | - "designate": "appoint" 52 | - "desire": "wish" 53 | - "determine": "decide" 54 | - "disclose": "show" 55 | - "discontinue": "stop" 56 | - "disseminate": "give" 57 | - "due to the fact that": "due to" 58 | - "during the period": "during" 59 | - "effect modifications": "make changes" 60 | - "elect": "choose" 61 | - "eliminate": "stop" 62 | - "employ": "use" 63 | - "encounter": "meet" 64 | - "endeavor": "try" 65 | - "ensure": "make sure" 66 | - "enumerate": "count" 67 | - "equipments": "equipment" 68 | - "equitable": "fair" 69 | - "establish": "set up" 70 | - "evidenced": "showed" 71 | - "evident": "clear" 72 | - "exhibit": "show" 73 | - "expedite": "hasten" 74 | - "expeditious": "fast" 75 | - "expend": "spend" 76 | - "expertise": "ability" 77 | - "expiration": "end" 78 | - "facilitate": "ease" 79 | - "failed to": "didn't" 80 | - "feasible": "can be done" 81 | - "females": "women" 82 | - "finalize": "complete" 83 | - "for a period of": "for" 84 | - "forfeit": "give up" 85 | - "forward": "send" 86 | - "frequently": "often" 87 | - "function": "act" 88 | - "furnish": "give" 89 | - "has a requirement for": "needs" 90 | - "herein": "here" 91 | - "heretofore": "until now" 92 | - "herewith": "below" 93 | - "however": "but" 94 | - "identical": "same" 95 | - "identify": "find" 96 | - "immediately": "at once" 97 | - "impacted": "affected" 98 | - "implement": "carry out" 99 | - "in a timely manner": "on time" 100 | - "in accordance with": "by" 101 | - "in addition": "also" 102 | - "in an effort to": "to" 103 | - "in lieu of": "instead" 104 | - "in order to": "to" 105 | - "in regard to": "about" 106 | - "in relation to": "about" 107 | - "in the amount of": "for" 108 | - "in the event of": "if" 109 | - "in the near future": "soon" 110 | - "in view of": "since" 111 | - "in view of the above": "so" 112 | - "inasmuch as": "since" 113 | - "inception": "start" 114 | - "incumbent upon": "must" 115 | - "indicate": "show" 116 | - "indication": "sign" 117 | - "initial": "first" 118 | - "initiate": "start" 119 | - "interface": "meet" 120 | - "interpose no objection": "don't object" 121 | - "is applicable to": "applies to" 122 | - "is authorized to": "may" 123 | - "is in consonance with": "agrees with" 124 | - "is responsible for": "handles" 125 | - "it appears": "seems" 126 | - "it is essential": "must" 127 | - "it is requested": "please" 128 | - "liaison": "discussion" 129 | - "limited number": "limits" 130 | - "magnitude": "size" 131 | - "maintain": "support" 132 | - "maximum": "greatest" 133 | - "methodology": "method" 134 | - "might": "may" 135 | - "minimize": "decrease" 136 | - "minimum": "least" 137 | - "modify": "change" 138 | - "monitor": "watch" 139 | - "necessitate": "need" 140 | - "notify": "tell" 141 | - "notwithstanding": "still" 142 | - "numerous": "many" 143 | - "objective": "goal" 144 | - "obligate": "bind" 145 | - "observe": "see" 146 | - "operate": "run" 147 | - "optimum": "best" 148 | - "option": "choice" 149 | - "parameters": "limits" 150 | - "participate": "take part" 151 | - "perform": "do" 152 | - "permit": "let" 153 | - "pertaining to": "about" 154 | - "portion": "part" 155 | - "possess": "have" 156 | - "practicable": "practical" 157 | - "preclude": "prevent" 158 | - "previous": "earlier" 159 | - "previously": "before" 160 | - "prior to": "before" 161 | - "prioritize": "rank" 162 | - "proceed": "do" 163 | - "proficiency": "skill" 164 | - "promulgate": "issue" 165 | - "provide": "give" 166 | - "provided that": "if" 167 | - "provides guidance for": "guides" 168 | - "purchase": "buy" 169 | - "pursuant to": "by" 170 | - "reflect": "show" 171 | - "regarding": "about" 172 | - "relative to": "about" 173 | - "relocate": "move" 174 | - "remain": "stay" 175 | - "remain": "stay" 176 | - "remainder": "rest" 177 | - "remuneration": "pay" 178 | - "render": "give" 179 | - "represents": "is" 180 | - "request": "ask" 181 | - "require": "need" 182 | - "requirement": "need" 183 | - "reside": "live" 184 | - "retain": "keep" 185 | - "selection": "choice" 186 | - "set forth in": "in" 187 | - "similar to": "like" 188 | - "solicit": "request" 189 | - "state-of-the-art": "latest" 190 | - "submit": "give" 191 | - "subsequent": "later" 192 | - "subsequently": "after" 193 | - "substantial": "large" 194 | - "successfully complete": "complete" 195 | - "sufficient": "enough" 196 | - "terminate": "stop" 197 | - "the undersigned": "I" 198 | - "therefore": "so" 199 | - "therein": "there" 200 | - "timely": "prompt" 201 | - "transmit": "send" 202 | - "under the provisions of": "under" 203 | - "until such time as": "until" 204 | - "utilize": "use" 205 | - "validate": "confirm" 206 | - "viable": "practical" 207 | - "vice": "instead of" 208 | - "warrant": "call for" 209 | - "whereas": "because" 210 | - "with reference to": "about" 211 | - "with the exception of": "except for" 212 | - "witnessed": "saw" 213 | - "your office": "you" -------------------------------------------------------------------------------- /_sass/_styles.scss: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | margin: 0; 4 | padding: 0; 5 | } 6 | 7 | body, 8 | textarea, 9 | pre { 10 | color: $text-color; 11 | font-size: 1em; 12 | font-family: $font-family; 13 | line-height: 1.5; 14 | } 15 | 16 | .input, 17 | .output { 18 | position: fixed; 19 | top: 0; 20 | bottom: 0; 21 | padding: 1em; 22 | width: 50%; 23 | } 24 | 25 | .input { 26 | left: 0; 27 | border: none; 28 | background: $input-bg; 29 | color: $input-color; 30 | } 31 | 32 | .output { 33 | right: 0; 34 | overflow: scroll; 35 | white-space: pre-wrap; 36 | } 37 | 38 | mark, 39 | dfn { 40 | padding-right: .2em; 41 | padding-left: .2em; 42 | color: inherit; 43 | } 44 | 45 | mark { 46 | background-color: $error; 47 | } 48 | 49 | mark:before { 50 | content: attr(data-omit); 51 | } 52 | 53 | .omit { text-decoration: line-through; } 54 | 55 | dfn { 56 | background-color: $swap; 57 | } -------------------------------------------------------------------------------- /_sass/_vars.scss: -------------------------------------------------------------------------------- 1 | $font-family: 'Open Sans', sans-serif; 2 | $text-color: #555; 3 | 4 | $bg-color: #fff; 5 | 6 | $input-bg: #2e2e2e; 7 | $input-color: $bg-color; 8 | 9 | $error: rgba(233, 30, 99, 0.2); 10 | $swap: rgba(133, 194, 38, 0.74); -------------------------------------------------------------------------------- /css/style.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | @import 'vars'; 5 | @import 'styles'; -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/katydecorah/copy-cop/4108d63d78ee2de66c23a6f8ec3cb6561c81590b/favicon.ico -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | {{site.title}} × {{site.description}} 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |

22 | 
23 | 


--------------------------------------------------------------------------------
/js/app.js:
--------------------------------------------------------------------------------
 1 | ---
 2 | ---
 3 | 
 4 | var avoid = {{site.data.avoid.avoid | jsonify }};
 5 | var omit = {{site.data.omit.omit | jsonify }};
 6 | var swap = {{site.data.swap.swap | jsonify }};
 7 | 
 8 | var app = angular.module('copy-cop',[]);
 9 | app.filter('machine', function($sce) {
10 |   return function(text) {
11 |     
12 |     omit.forEach(function(a){
13 |       if (text) text = text.split(RegExp("\\b"+a+"\\b","i")).join("");
14 |     });
15 |     
16 |     avoid.forEach(function(a){
17 |       if (text) text = text.split(RegExp("\\b"+a+"\\b","i")).join("");
18 |     });
19 |     
20 |     swap.forEach(function(swaps){
21 |       for (var key in swaps) {
22 |         if (text) text = text.split(RegExp("\\b"+key+"\\b","i")).join(""+swaps[key]+"");
23 |       }
24 |     });
25 |     
26 |     return $sce.trustAsHtml(text);
27 |   }
28 | });


--------------------------------------------------------------------------------