Comparing version
// Generated by CoffeeScript 1.3.3 | ||
/* | ||
http://home.nerbonne.org/A-vs-An/ | ||
http://stackoverflow.com/questions/1288291/how-can-i-correctly-prefix-a-word-with-a-and-an/1288473#1288473 | ||
This page determines whether "a" or "an" should precede a word. It does this using the method described in this stackoverflow response. The dataset used is the wikipedia-article-text dump. Some additional preprocessing was done to remove as much wiki-markup as possible and extract only things vague resembling sentences using regular expressions. If the word following 'a' or 'an' was quoted, those quotes were ignored. The entire resultant dataset is merely 13KB in size and could be compressed further; it's included inline in this page. | ||
*/ | ||
(function() { | ||
var Articles, | ||
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }, | ||
var articles, articlize, find, | ||
__slice = [].slice; | ||
Articles = (function() { | ||
articles = require('./articledata'); | ||
function Articles() {} | ||
find = function(word, obj, article) { | ||
var key, _ref; | ||
if (obj == null) { | ||
obj = articles; | ||
} | ||
if (article == null) { | ||
article = 'a'; | ||
} | ||
if (word == null) { | ||
return article; | ||
} | ||
key = word[0]; | ||
obj = obj[key]; | ||
if ((key != null) && (obj != null)) { | ||
return find(word.slice(1), obj, (_ref = obj.article) != null ? _ref : article); | ||
} else { | ||
return article; | ||
} | ||
}; | ||
Articles.articles = [["an", ["8"]], ["an", ["11", "18"]], ["a", ["110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "180", "890"]], ["an", ["1800", "1801", "1802", "1803", "1804", "1805", "1806", "1807", "1808", "1809"]], ["an", ["`a", "£8"]], ["an", ["0-11"]], ["a", ["0-4 "]], ["an", ["0-4"]], ["an", ["0-6-"]], ["an", ["0-8"]], ["an", ["08", "09"]], ["a", ["11.4", "181-", "181 ", "182-", "182 ", "183-", "183 ", "184-", "184 ", "185-", "185 ", "186-", "186 ", "187-", "187 ", "188-", "188 ", "189-", "189 "]], ["a", ["8,1"]], ["a", ["800x"]], ["an", ["∞"]], ["a", ["a "]], ["an", ["about-"]], ["a", ["abou", "agai", "al-I", "algu", "alth", "amon"]], ["a", ["an "]], ["an", ["anda", "ande", "andr"]], ["a", ["and"]], ["a", ["anot", "anyw", "apre", "are ", "are:", "artí"]], ["an", ["a"]], ["a", ["A$"]], ["a", ["AAA"]], ["a", ["Andaluc"]], ["a", ["Armat"]], ["a", ["Asturias"]], ["an", ["Athleti"]], ["an", ["Athlo"]], ["a", ["Athl"]], ["a", ["AU$", "AUD"]], ["a", ["AUSC"]], ["an", ["A", "Á"]], ["an", ["á;"]], ["an", ["à", "Ä", "ā", "Å", "æ"]], ["a", ["Æn"]], ["an", ["Æ"]], ["an", ["Chais"]], ["an", ["County,"]], ["an", ["describes"]], ["an", ["Dinas"]], ["an", ["Diver-"]], ["a", ["Dún", "e.g"]], ["a", ["each "]], ["a", ["either ", "either."]], ["a", ["el-"]], ["a", ["ella"]], ["a", ["empez", "enoug"]], ["an", ["eup "]], ["a", ["eu", "ew"]], ["a", ["exists"]], ["an", ["e"]], ["a", ["Empez"]], ["a", ["Enam"]], ["an", ["Espad"]], ["an", ["Espe", "Espo"]], ["a", ["Esp"]], ["an", ["Eul"]], ["a", ["Eu"]], ["a", ["EUR"]], ["an", ["E"]], ["a", ["ég"]], ["an", ["éta", "étu"]], ["a", ["ét"]], ["an", ["é", "É"]], ["an", ["f-", "f ", "f/", "fM", "fp", "ft", "F'", "F-", "F ", "F\"", "F#", "F,", "F.", "F/", "F”", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F9"]], ["a", ["FAC", "FAD"]], ["a", ["FAIR"]], ["a", ["FAL", "FAM", "FAN", "FAP", "FAQ", "FAR", "FAS", "FAT"]], ["an", ["FA", "FB", "FC", "Fc", "FD"]], ["an", ["FEC", "FEI"]], ["a", ["FF "]], ["an", ["FF", "Ff", "Fh", "FH"]], ["a", ["FIAT"]], ["an", ["FIA"]], ["an", ["FID ", "FIR ", "FIS "]], ["an", ["FK"]], ["an", ["FLC", "FLN", "FLP"]], ["a", ["FMR"]], ["an", ["FM"]], ["an", ["FO "]], ["an", ["FOI "]], ["a", ["FP.", "FP?"]], ["a", ["FPC?"]], ["an", ["FP"]], ["an", ["FRC", "FRS"]], ["an", ["FS"]], ["a", ["FTS", "FTT"]], ["an", ["FT"]], ["an", ["FU ", "FU,", "FU."]], ["an", ["FV"]], ["a", ["FWD"]], ["an", ["FW", "FX", "FY", "Fσ"]], ["an", ["Ghae", "Ghai"]], ["an", ["h'"]], ["a", ["h-U"]], ["an", ["h-", "h ", "h\"", "h,", "hC"]], ["a", ["heira"]], ["an", ["heir", "hims"]], ["a", ["historic"]], ["an", ["homa", "homm"]], ["a", ["honey"]], ["a", ["honk", "honv"]], ["an", ["hon"]], ["an", ["hors "]], ["an", ["hour"]], ["an", ["http "]], ["a", ["htt"]], ["an", ["ht", "H'", "H-", "H ", "H\"", "H&", "H,"]], ["a", ["H.A"]], ["an", ["H.", "H+", "H1", "H2", "H3", "H4", "H5"]], ["an", ["Habilitations"]], ["an", ["HB", "HC"]], ["a", ["HDB"]], ["an", ["HD"]], ["an", ["Heir"]], ["an", ["HF", "HG", "HH"]], ["a", ["HID", "HIG", "HIM", "HIP"]], ["an", ["HI"]], ["a", ["HLA-D"]], ["an", ["HL", "HM", "HN"]], ["a", ["Hond"]], ["an", ["Hones"]], ["a", ["Hone", "Hong", "Honk"]], ["a", ["Honol"]], ["an", ["Hon"]], ["an", ["Hour"]], ["an", ["HO ", "HOV"]], ["an", ["HP", "HQ"]], ["a", ["HRT"]], ["an", ["HR"]], ["a", ["HS ", "HSR", "HST"]], ["an", ["HS"]], ["a", ["HTP"]], ["an", ["HT", "HV"]], ["an", ["HWT"]], ["a", ["i.e", "ibn", "if "]], ["a", ["ii"]], ["a", ["includi"]], ["a", ["indicates"]], ["an", ["instead?"]], ["a", ["instea"]], ["a", ["is ", "is.", "it "]], ["a", ["iu"]], ["an", ["i"]], ["a", ["I-A", "I-I", "III", "Ilb", "IMH"]], ["a", ["Imams"]], ["a", ["IR£"]], ["a", ["Islam ", "Islam,", "Islam."]], ["a", ["Islands"]], ["an", ["I", "İ"]], ["a", ["Jian"]], ["an", ["Jia", "ku "]], ["an", ["l ", "l\"", "lp"]], ["a", ["L'A"]], ["an", ["L'"]], ["a", ["L-a"]], ["an", ["L-", "L ", "L\"", "L&", "L,", "L.", "L/", "L1", "L2", "L3", "L5"]], ["an", ["Lae"]], ["an", ["Laoig"]], ["an", ["LA ", "LAL", "LAP"]], ["an", ["LB", "LC", "LD"]], ["a", ["LEA", "LEE", "LEG", "LEO", "LEP", "LET"]], ["an", ["LE", "LF", "LG", "LH"]], ["an", ["LIR"]], ["an", ["LL"]], ["a", ["LMX"]], ["an", ["LM", "LN"]], ["an", ["Locha"]], ["an", ["LOE"]], ["an", ["LP", "LR", "LS", "LT"]], ["an", ["LU "]], ["an", ["LV", "LX", "LZ", "m-", "m ", "m\"", "m&"]], ["an", ["makes "]], ["an", ["mb"]], ["an", ["mein"]], ["an", ["mentions"]], ["an", ["mf", "mp", "mR", "mt", "M'"]], ["a", ["M-t"]], ["an", ["M-", "M ", "M\"", "M&", "M,"]], ["a", ["M.A.S"]], ["an", ["M.", "M/"]], ["an", ["M190"]], ["a", ["M19"]], ["an", ["M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9"]], ["a", ["MAC", "MAD", "MAF", "MAG", "MAJ", "MAL", "MAM", "MAN", "MAP", "MAR", "MAS", "MAT", "MAX", "MAY"]], ["an", ["MA", "MB", "MC", "MD"]], ["an", ["Me-", "MEd", "MEn", "MEP"]], ["an", ["MF", "Mf", "MG", "MH", "Mh"]], ["an", ["Mie", "MI ", "MI5", "MI6", "MIA", "MIT"]], ["an", ["MK", "ML"]], ["a", ["MMT"]], ["an", ["MM", "MN"]], ["an", ["MoU", "MO "]], ["an", ["MOT "]], ["an", ["MOU"]], ["an", ["MP", "MR", "MS"]], ["an", ["Msc"]], ["a", ["MTR"]], ["an", ["MT"]], ["an", ["MUV"]], ["an", ["MV", "MX", "N'"]], ["a", ["N-a", "N-S"]], ["an", ["N-", "N ", "N\"", "N,"]], ["a", ["N.Y"]], ["an", ["N.", "N=", "N²", "N4", "N6"]], ["an", ["Nao", "NA "]], ["a", ["NAAF"]], ["an", ["NAA", "NAI"]], ["an", ["NASL"]], ["an", ["NB", "NC", "ND"]], ["an", ["NEA", "NEH"]], ["an", ["NES "]], ["an", ["NF", "NG", "NH"]], ["a", ["NIC", "NIL"]], ["an", ["NIMH"]], ["a", ["NIM", "NIN", "NIS"]], ["an", ["NI"]], ["an", ["NJC"]], ["an", ["NK"]], ["a", ["NLS"]], ["an", ["NL", "NM"]], ["an", ["NNR", "NNT"]], ["an", ["NPOV-"]], ["a", ["NPO"]], ["an", ["NP"]], ["a", ["NRJ", "NRT"]], ["an", ["NR"]], ["a", ["NSW"]], ["an", ["NS"]], ["a", ["NT$"]], ["an", ["NT"]], ["an", ["NUS"]], ["an", ["NV", "Nv"]], ["an", ["NWA"]], ["an", ["NX"]], ["an", ["NYP", "NYU"]], ["an", ["n-", "n−", "n ", "n\"", "n&", "n,", "n+", "n×"]], ["an", ["nda", "npa"]], ["an", ["nt", "nV", "nW"]], ["a", ["obr"]], ["a", ["occurs"]], ["a", ["ocho"]], ["a", ["of "]], ["an", ["on-", "on/", "onb"]], ["an", ["onco"]], ["an", ["ond"]], ["an", ["oner"]], ["an", ["ong", "oni", "onl", "onm", "ono", "onr", "ons", "ont", "onu", "onw", "ony"]], ["a", ["on"]], ["a", ["or ", "or,", "oui"]], ["an", ["o"]], ["an", ["Oberst ", "Oberstl"]], ["a", ["Obers"]], ["a", ["Olv"]], ["an", ["Onei"]], ["a", ["One", "ONE", "Oop", "Oui"]], ["an", ["O", "Ó", "Ö", "ö", "Ō", "ō"]], ["an", ["Phob", "Phoi"]], ["an", ["r'", "r-", "r ", "r\"", "r&", "r."]], ["an", ["refers"]], ["an", ["rf", "rm", "rs", "R'", "R-", "R ", "R\"", "R&", "R,"]], ["a", ["R.C"]], ["an", ["R.", "R/"]], ["a", ["R10"]], ["an", ["R1", "R2", "R3", "R4", "R5", "R6"]], ["an", ["RA ", "RAF"]], ["an", ["RB", "RC", "RD"]], ["an", ["RE ", "RER"]], ["an", ["RF", "Rf", "RG"]], ["an", ["RHS", "RIA"]], ["an", ["RIC "]], ["an", ["RJ", "RK"]], ["a", ["RL "]], ["an", ["RL"]], ["a", ["RM1"]], ["an", ["RM"]], ["a", ["RNG"]], ["an", ["RN"]], ["an", ["ROT"]], ["an", ["RP", "RQ", "RR"]], ["a", ["RS ", "RS)", "RS,", "RS.", "RS?", "RST"]], ["an", ["RS", "RT", "RU", "RV", "RX", "s-", "s\"", "s)", "s,", "s."]], ["an", ["says", "sich"]], ["an", ["sp3"]], ["an", ["sprot"]], ["an", ["ssh"]], ["an", ["states ", "states:"]], ["a", ["sva", "sve"]], ["an", ["sv", "S'", "S-", "S ", "S\""]], ["a", ["S&W"]], ["an", ["S&", "S,"]], ["an", ["S.B", "S.M", "S.O"]], ["an", ["S”", "S1", "S2", "S3", "S4", "S5", "S6"]], ["a", ["SA-1"]], ["an", ["SA-", "SA "]], ["an", ["SACD"]], ["an", ["SAE"]], ["a", ["SASE"]], ["an", ["SAS"]], ["an", ["SAT ", "SATB"]], ["an", ["SB"]], ["an", ["SCA "]], ["an", ["SCC", "SCM"]], ["an", ["SCO "]], ["a", ["SCRA"]], ["an", ["SCR", "SCT"]], ["an", ["SD"]], ["an", ["SE "]], ["a", ["SECO", "SECR"]], ["an", ["SEC", "SEI", "SEO"]], ["an", ["SF", "SG"]], ["an", ["SH-", "SH2", "SH3", "SI "]], ["an", ["SJ", "SK"]], ["a", ["SLA", "SLI", "SLO"]], ["an", ["SL"]], ["a", ["SMA"]], ["an", ["SME "]], ["a", ["SME", "SMI"]], ["an", ["SM"]], ["a", ["SNA", "SNE", "SNO"]], ["an", ["SN"]], ["an", ["SO("]], ["an", ["SOA ", "SOAI"]], ["an", ["SOE", "SOI", "SOS", "SOV"]], ["a", ["SPAC", "SPAD", "SPAM", "SPAN", "SPAR"]], ["an", ["SPE "]], ["a", ["SPE"]], ["a", ["SPIC"]], ["a", ["SPO", "SPU"]], ["an", ["SP", "SR", "SS"]], ["an", ["ST-"]], ["an", ["STA "]], ["an", ["STB", "STC", "STD", "STF", "STL", "STM", "STS", "STV"]], ["an", ["Sura "]], ["a", ["SUB", "SUL", "SUN", "SUP", "SUS"]], ["an", ["SU", "SV"]], ["an", ["SWF", "SWP", "SWR"]], ["a", ["SXS"]], ["an", ["SX"]], ["an", ["t-S"]], ["an", ["tS"]], ["an", ["Taves"]], ["an", ["Tà"]], ["a", ["u-", "u ", "u\"", "u."]], ["an", ["ube"]], ["a", ["ub", "uf"]], ["an", ["uka"]], ["a", ["uk"]], ["a", ["ulu", "um ", "un "]], ["a", ["una "]], ["an", ["unana", "unann", "unans", "unant"]], ["a", ["unan"]], ["a", ["unary"]], ["a", ["une "]], ["an", ["unicorp"]], ["a", ["unidi"]], ["an", ["unid"]], ["a", ["unimo"]], ["an", ["unim", "unin"]], ["an", ["univo"]], ["a", ["uni"]], ["a", ["unles"]], ["a", ["upo", "ura", "ure", "uri", "url", "uro"]], ["an", ["us-", "us ", "ush"]], ["a", ["us"]], ["an", ["utm", "utt"]], ["a", ["ut", "uv", "uw"]], ["an", ["u"]], ["a", ["U-Bo"]], ["an", ["U-B"]], ["an", ["U1", "Ua"]], ["a", ["Ubi"]], ["an", ["Ub"]], ["an", ["UDP-"]], ["an", ["Ud"]], ["an", ["Ugl"]], ["an", ["Uh", "Ui"]], ["a", ["Uli"]], ["an", ["Ul", "Um"]], ["an", ["UMN", "Un-"]], ["a", ["Unan"]], ["an", ["Una", "Unb", "Unc", "Und"]], ["a", ["Unes"]], ["an", ["Une", "Unf", "Ung", "Unh"]], ["an", ["Unid", "Unin"]], ["an", ["Unk", "Unl", "Unm", "Unn", "Uno", "Unp", "Unr", "Uns"]], ["a", ["Unters"]], ["an", ["Unt", "Unu", "Unw"]], ["an", ["Up"]], ["a", ["Ura", "Uri"]], ["an", ["Uruguayan-"]], ["an", ["Uruk"]], ["a", ["Uru"]], ["an", ["Ur"]], ["an", ["Ush", "Ust", "Utn"]], ["an", ["Uto-"]], ["an", ["Utr", "Utt"]], ["an", ["Ux", "Uz"]], ["an", ["ü", "Ü"]], ["an", ["VII"]], ["a", ["xa", "xe", "xi", "xo", "xx", "xy"]], ["an", ["x"]], ["a", ["Xa", "XA", "Xe", "Xh", "Xi"]], ["a", ["XIV", "XIX"]], ["a", ["Xo", "Xu", "XU", "XV"]], ["an", ["XX "]], ["a", ["XX", "Xy"]], ["an", ["X"]], ["an", ["Yp"]], ["an", ["α", "ε", "ω"]], ["a", [""]]]; | ||
Articles.find = function(input) { | ||
var article, inputPrefix, prefixList, _i, _len, _ref, _ref1; | ||
_ref = this.articles; | ||
for (_i = 0, _len = _ref.length; _i < _len; _i++) { | ||
_ref1 = _ref[_i], article = _ref1[0], prefixList = _ref1[1]; | ||
inputPrefix = input.slice(0, prefixList[0].length); | ||
if (__indexOf.call(prefixList, inputPrefix) >= 0) { | ||
return article; | ||
articlize = function() { | ||
var input, inputs, out; | ||
inputs = 1 <= arguments.length ? __slice.call(arguments, 0) : []; | ||
out = (function() { | ||
var _i, _len, _results; | ||
_results = []; | ||
for (_i = 0, _len = inputs.length; _i < _len; _i++) { | ||
input = inputs[_i]; | ||
if (input != null) { | ||
_results.push("" + (find(input)) + " " + input); | ||
} | ||
} | ||
}; | ||
return _results; | ||
})(); | ||
if (inputs.length === 1) { | ||
return out[0]; | ||
} else { | ||
return out; | ||
} | ||
}; | ||
Articles.articlize = function() { | ||
var input, inputs, out; | ||
inputs = 1 <= arguments.length ? __slice.call(arguments, 0) : []; | ||
out = (function() { | ||
var _i, _len, _results; | ||
_results = []; | ||
for (_i = 0, _len = inputs.length; _i < _len; _i++) { | ||
input = inputs[_i]; | ||
if (input != null) { | ||
_results.push("" + (this.find(input)) + " " + input); | ||
} | ||
} | ||
return _results; | ||
}).call(this); | ||
if (inputs.length === 1) { | ||
return out[0]; | ||
} else { | ||
return out; | ||
} | ||
}; | ||
module.exports = { | ||
find: find, | ||
articlize: articlize | ||
}; | ||
return Articles; | ||
})(); | ||
module.exports = Articles; | ||
}).call(this); |
{ | ||
"name": "articles", | ||
"version": "0.1.0", | ||
"version": "0.2.0", | ||
"description": "Utility to determine the indirect article (in English) for a given word, using the method described at http://stackoverflow.com/questions/1288291/how-can-i-correctly-prefix-a-word-with-a-and-an/1288473#1288473 and the data provided at http://home.nerbonne.org/A-vs-An/", | ||
@@ -5,0 +5,0 @@ "main": "Articles.js", |
Sorry, the diff of this file is not supported yet
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
38177
36.6%9
80%8926
-12.21%64
-22.89%2
100%