Emoji.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. // Copyright 2019 Mathias Bynens. All rights reserved.
  2. // This code is governed by the BSD license found in the LICENSE file.
  3. /*---
  4. author: Mathias Bynens
  5. description: >
  6. Unicode property escapes for `Emoji`
  7. info: |
  8. Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests
  9. Unicode v12.1.0
  10. esid: sec-static-semantics-unicodematchproperty-p
  11. features: [regexp-unicode-property-escapes]
  12. includes: [regExpUtils.js]
  13. ---*/
  14. const matchSymbols = buildString({
  15. loneCodePoints: [
  16. 0x000023,
  17. 0x00002A,
  18. 0x0000A9,
  19. 0x0000AE,
  20. 0x00203C,
  21. 0x002049,
  22. 0x002122,
  23. 0x002139,
  24. 0x002328,
  25. 0x0023CF,
  26. 0x0024C2,
  27. 0x0025B6,
  28. 0x0025C0,
  29. 0x00260E,
  30. 0x002611,
  31. 0x002618,
  32. 0x00261D,
  33. 0x002620,
  34. 0x002626,
  35. 0x00262A,
  36. 0x002640,
  37. 0x002642,
  38. 0x002663,
  39. 0x002668,
  40. 0x00267B,
  41. 0x002699,
  42. 0x0026C8,
  43. 0x0026D1,
  44. 0x0026FD,
  45. 0x002702,
  46. 0x002705,
  47. 0x00270F,
  48. 0x002712,
  49. 0x002714,
  50. 0x002716,
  51. 0x00271D,
  52. 0x002721,
  53. 0x002728,
  54. 0x002744,
  55. 0x002747,
  56. 0x00274C,
  57. 0x00274E,
  58. 0x002757,
  59. 0x0027A1,
  60. 0x0027B0,
  61. 0x0027BF,
  62. 0x002B50,
  63. 0x002B55,
  64. 0x003030,
  65. 0x00303D,
  66. 0x003297,
  67. 0x003299,
  68. 0x01F004,
  69. 0x01F0CF,
  70. 0x01F18E,
  71. 0x01F21A,
  72. 0x01F22F,
  73. 0x01F587,
  74. 0x01F590,
  75. 0x01F5A8,
  76. 0x01F5BC,
  77. 0x01F5E1,
  78. 0x01F5E3,
  79. 0x01F5E8,
  80. 0x01F5EF,
  81. 0x01F5F3,
  82. 0x01F6D5,
  83. 0x01F6E9,
  84. 0x01F6F0
  85. ],
  86. ranges: [
  87. [0x000030, 0x000039],
  88. [0x002194, 0x002199],
  89. [0x0021A9, 0x0021AA],
  90. [0x00231A, 0x00231B],
  91. [0x0023E9, 0x0023F3],
  92. [0x0023F8, 0x0023FA],
  93. [0x0025AA, 0x0025AB],
  94. [0x0025FB, 0x0025FE],
  95. [0x002600, 0x002604],
  96. [0x002614, 0x002615],
  97. [0x002622, 0x002623],
  98. [0x00262E, 0x00262F],
  99. [0x002638, 0x00263A],
  100. [0x002648, 0x002653],
  101. [0x00265F, 0x002660],
  102. [0x002665, 0x002666],
  103. [0x00267E, 0x00267F],
  104. [0x002692, 0x002697],
  105. [0x00269B, 0x00269C],
  106. [0x0026A0, 0x0026A1],
  107. [0x0026AA, 0x0026AB],
  108. [0x0026B0, 0x0026B1],
  109. [0x0026BD, 0x0026BE],
  110. [0x0026C4, 0x0026C5],
  111. [0x0026CE, 0x0026CF],
  112. [0x0026D3, 0x0026D4],
  113. [0x0026E9, 0x0026EA],
  114. [0x0026F0, 0x0026F5],
  115. [0x0026F7, 0x0026FA],
  116. [0x002708, 0x00270D],
  117. [0x002733, 0x002734],
  118. [0x002753, 0x002755],
  119. [0x002763, 0x002764],
  120. [0x002795, 0x002797],
  121. [0x002934, 0x002935],
  122. [0x002B05, 0x002B07],
  123. [0x002B1B, 0x002B1C],
  124. [0x01F170, 0x01F171],
  125. [0x01F17E, 0x01F17F],
  126. [0x01F191, 0x01F19A],
  127. [0x01F1E6, 0x01F1FF],
  128. [0x01F201, 0x01F202],
  129. [0x01F232, 0x01F23A],
  130. [0x01F250, 0x01F251],
  131. [0x01F300, 0x01F321],
  132. [0x01F324, 0x01F393],
  133. [0x01F396, 0x01F397],
  134. [0x01F399, 0x01F39B],
  135. [0x01F39E, 0x01F3F0],
  136. [0x01F3F3, 0x01F3F5],
  137. [0x01F3F7, 0x01F4FD],
  138. [0x01F4FF, 0x01F53D],
  139. [0x01F549, 0x01F54E],
  140. [0x01F550, 0x01F567],
  141. [0x01F56F, 0x01F570],
  142. [0x01F573, 0x01F57A],
  143. [0x01F58A, 0x01F58D],
  144. [0x01F595, 0x01F596],
  145. [0x01F5A4, 0x01F5A5],
  146. [0x01F5B1, 0x01F5B2],
  147. [0x01F5C2, 0x01F5C4],
  148. [0x01F5D1, 0x01F5D3],
  149. [0x01F5DC, 0x01F5DE],
  150. [0x01F5FA, 0x01F64F],
  151. [0x01F680, 0x01F6C5],
  152. [0x01F6CB, 0x01F6D2],
  153. [0x01F6E0, 0x01F6E5],
  154. [0x01F6EB, 0x01F6EC],
  155. [0x01F6F3, 0x01F6FA],
  156. [0x01F7E0, 0x01F7EB],
  157. [0x01F90D, 0x01F93A],
  158. [0x01F93C, 0x01F945],
  159. [0x01F947, 0x01F971],
  160. [0x01F973, 0x01F976],
  161. [0x01F97A, 0x01F9A2],
  162. [0x01F9A5, 0x01F9AA],
  163. [0x01F9AE, 0x01F9CA],
  164. [0x01F9CD, 0x01F9FF],
  165. [0x01FA70, 0x01FA73],
  166. [0x01FA78, 0x01FA7A],
  167. [0x01FA80, 0x01FA82],
  168. [0x01FA90, 0x01FA95]
  169. ]
  170. });
  171. testPropertyEscapes(
  172. /^\p{Emoji}+$/u,
  173. matchSymbols,
  174. "\\p{Emoji}"
  175. );
  176. const nonMatchSymbols = buildString({
  177. loneCodePoints: [
  178. 0x0025FF,
  179. 0x002621,
  180. 0x002641,
  181. 0x002664,
  182. 0x002667,
  183. 0x002698,
  184. 0x00269A,
  185. 0x0026D0,
  186. 0x0026D2,
  187. 0x0026F6,
  188. 0x00270E,
  189. 0x002713,
  190. 0x002715,
  191. 0x00274D,
  192. 0x002756,
  193. 0x003298,
  194. 0x01F200,
  195. 0x01F398,
  196. 0x01F3F6,
  197. 0x01F4FE,
  198. 0x01F54F,
  199. 0x01F5E2,
  200. 0x01F6EA,
  201. 0x01F93B,
  202. 0x01F946,
  203. 0x01F972
  204. ],
  205. ranges: [
  206. [0x00DC00, 0x00DFFF],
  207. [0x000000, 0x000022],
  208. [0x000024, 0x000029],
  209. [0x00002B, 0x00002F],
  210. [0x00003A, 0x0000A8],
  211. [0x0000AA, 0x0000AD],
  212. [0x0000AF, 0x00203B],
  213. [0x00203D, 0x002048],
  214. [0x00204A, 0x002121],
  215. [0x002123, 0x002138],
  216. [0x00213A, 0x002193],
  217. [0x00219A, 0x0021A8],
  218. [0x0021AB, 0x002319],
  219. [0x00231C, 0x002327],
  220. [0x002329, 0x0023CE],
  221. [0x0023D0, 0x0023E8],
  222. [0x0023F4, 0x0023F7],
  223. [0x0023FB, 0x0024C1],
  224. [0x0024C3, 0x0025A9],
  225. [0x0025AC, 0x0025B5],
  226. [0x0025B7, 0x0025BF],
  227. [0x0025C1, 0x0025FA],
  228. [0x002605, 0x00260D],
  229. [0x00260F, 0x002610],
  230. [0x002612, 0x002613],
  231. [0x002616, 0x002617],
  232. [0x002619, 0x00261C],
  233. [0x00261E, 0x00261F],
  234. [0x002624, 0x002625],
  235. [0x002627, 0x002629],
  236. [0x00262B, 0x00262D],
  237. [0x002630, 0x002637],
  238. [0x00263B, 0x00263F],
  239. [0x002643, 0x002647],
  240. [0x002654, 0x00265E],
  241. [0x002661, 0x002662],
  242. [0x002669, 0x00267A],
  243. [0x00267C, 0x00267D],
  244. [0x002680, 0x002691],
  245. [0x00269D, 0x00269F],
  246. [0x0026A2, 0x0026A9],
  247. [0x0026AC, 0x0026AF],
  248. [0x0026B2, 0x0026BC],
  249. [0x0026BF, 0x0026C3],
  250. [0x0026C6, 0x0026C7],
  251. [0x0026C9, 0x0026CD],
  252. [0x0026D5, 0x0026E8],
  253. [0x0026EB, 0x0026EF],
  254. [0x0026FB, 0x0026FC],
  255. [0x0026FE, 0x002701],
  256. [0x002703, 0x002704],
  257. [0x002706, 0x002707],
  258. [0x002710, 0x002711],
  259. [0x002717, 0x00271C],
  260. [0x00271E, 0x002720],
  261. [0x002722, 0x002727],
  262. [0x002729, 0x002732],
  263. [0x002735, 0x002743],
  264. [0x002745, 0x002746],
  265. [0x002748, 0x00274B],
  266. [0x00274F, 0x002752],
  267. [0x002758, 0x002762],
  268. [0x002765, 0x002794],
  269. [0x002798, 0x0027A0],
  270. [0x0027A2, 0x0027AF],
  271. [0x0027B1, 0x0027BE],
  272. [0x0027C0, 0x002933],
  273. [0x002936, 0x002B04],
  274. [0x002B08, 0x002B1A],
  275. [0x002B1D, 0x002B4F],
  276. [0x002B51, 0x002B54],
  277. [0x002B56, 0x00302F],
  278. [0x003031, 0x00303C],
  279. [0x00303E, 0x003296],
  280. [0x00329A, 0x00DBFF],
  281. [0x00E000, 0x01F003],
  282. [0x01F005, 0x01F0CE],
  283. [0x01F0D0, 0x01F16F],
  284. [0x01F172, 0x01F17D],
  285. [0x01F180, 0x01F18D],
  286. [0x01F18F, 0x01F190],
  287. [0x01F19B, 0x01F1E5],
  288. [0x01F203, 0x01F219],
  289. [0x01F21B, 0x01F22E],
  290. [0x01F230, 0x01F231],
  291. [0x01F23B, 0x01F24F],
  292. [0x01F252, 0x01F2FF],
  293. [0x01F322, 0x01F323],
  294. [0x01F394, 0x01F395],
  295. [0x01F39C, 0x01F39D],
  296. [0x01F3F1, 0x01F3F2],
  297. [0x01F53E, 0x01F548],
  298. [0x01F568, 0x01F56E],
  299. [0x01F571, 0x01F572],
  300. [0x01F57B, 0x01F586],
  301. [0x01F588, 0x01F589],
  302. [0x01F58E, 0x01F58F],
  303. [0x01F591, 0x01F594],
  304. [0x01F597, 0x01F5A3],
  305. [0x01F5A6, 0x01F5A7],
  306. [0x01F5A9, 0x01F5B0],
  307. [0x01F5B3, 0x01F5BB],
  308. [0x01F5BD, 0x01F5C1],
  309. [0x01F5C5, 0x01F5D0],
  310. [0x01F5D4, 0x01F5DB],
  311. [0x01F5DF, 0x01F5E0],
  312. [0x01F5E4, 0x01F5E7],
  313. [0x01F5E9, 0x01F5EE],
  314. [0x01F5F0, 0x01F5F2],
  315. [0x01F5F4, 0x01F5F9],
  316. [0x01F650, 0x01F67F],
  317. [0x01F6C6, 0x01F6CA],
  318. [0x01F6D3, 0x01F6D4],
  319. [0x01F6D6, 0x01F6DF],
  320. [0x01F6E6, 0x01F6E8],
  321. [0x01F6ED, 0x01F6EF],
  322. [0x01F6F1, 0x01F6F2],
  323. [0x01F6FB, 0x01F7DF],
  324. [0x01F7EC, 0x01F90C],
  325. [0x01F977, 0x01F979],
  326. [0x01F9A3, 0x01F9A4],
  327. [0x01F9AB, 0x01F9AD],
  328. [0x01F9CB, 0x01F9CC],
  329. [0x01FA00, 0x01FA6F],
  330. [0x01FA74, 0x01FA77],
  331. [0x01FA7B, 0x01FA7F],
  332. [0x01FA83, 0x01FA8F],
  333. [0x01FA96, 0x10FFFF]
  334. ]
  335. });
  336. testPropertyEscapes(
  337. /^\P{Emoji}+$/u,
  338. nonMatchSymbols,
  339. "\\P{Emoji}"
  340. );