diff --git a/Changelog.md b/Changelog.md
index d93ba417d..d679a4ab8 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -14,6 +14,7 @@
* Remove whitespace from author link [#7330](https://github.com/diaspora/diaspora/pull/7330)
* Fix autosize in modals [#7339](https://github.com/diaspora/diaspora/pull/7339)
* Only display invite link on contacts page if invitations are enabled [#7342](https://github.com/diaspora/diaspora/pull/7342)
+* Fix regex for hashtags for some languages [#7350](https://github.com/diaspora/diaspora/pull/7350)
## Features
* Add support for [Liberapay](https://liberapay.com) donations [#7290](https://github.com/diaspora/diaspora/pull/7290)
diff --git a/app/assets/javascripts/app/helpers/text_formatter.js b/app/assets/javascripts/app/helpers/text_formatter.js
index ea237832c..a9ea53d3a 100644
--- a/app/assets/javascripts/app/helpers/text_formatter.js
+++ b/app/assets/javascripts/app/helpers/text_formatter.js
@@ -37,7 +37,14 @@
var hashtagPlugin = window.markdownitHashtag;
md.use(hashtagPlugin, {
// compare tag_text_regexp in app/models/acts_as_taggable_on-tag.rb
- hashtagRegExp: "[" + PosixBracketExpressions.alnum + "_\\-]+|<3",
+ hashtagRegExp: "[" + PosixBracketExpressions.word +
+ "\\u055b" + // Armenian emphasis mark
+ "\\u055c" + // Armenian exclamation mark
+ "\\u055e" + // Armenian question mark
+ "\\u058a" + // Armenian hyphen
+ "_" +
+ "\\-" +
+ "]+|<3",
// compare tag_strings in lib/diaspora/taggabe.rb
preceding: "^|\\s"
});
diff --git a/app/models/acts_as_taggable_on-tag.rb b/app/models/acts_as_taggable_on-tag.rb
index ca38de751..669a3f618 100644
--- a/app/models/acts_as_taggable_on-tag.rb
+++ b/app/models/acts_as_taggable_on-tag.rb
@@ -4,7 +4,7 @@ module ActsAsTaggableOn
self.include_root_in_json = false
def self.tag_text_regexp
- @@tag_text_regexp ||= "[[:alnum:]]_-"
+ @tag_text_regexp ||= "[[:word:]]\u055b\u055c\u055e\u058a_-"
end
def self.autocomplete(name)
diff --git a/lib/assets/javascripts/posix-bracket-expressions.js b/lib/assets/javascripts/posix-bracket-expressions.js
index 4f573e5b6..b023b9c26 100644
--- a/lib/assets/javascripts/posix-bracket-expressions.js
+++ b/lib/assets/javascripts/posix-bracket-expressions.js
@@ -1,448 +1,1365 @@
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
-// information for jshint
-/* exported PosixBracketExpressions */
-
var PosixBracketExpressions = {
- alnum : '\\u0030-\\u0039'
- + '\\u0041-\\u005a'
- + '\\u0061-\\u007a'
- + '\\u00aa'
- + '\\u00b5'
- + '\\u00ba'
- + '\\u00c0-\\u00d6'
- + '\\u00d8-\\u00f6'
- + '\\u00f8-\\u02c1'
- + '\\u02c6-\\u02d1'
- + '\\u02e0-\\u02e4'
- + '\\u02ec'
- + '\\u02ee'
- + '\\u0345'
- + '\\u0370-\\u0374'
- + '\\u0376-\\u0377'
- + '\\u037a-\\u037d'
- + '\\u0386'
- + '\\u0388-\\u038a'
- + '\\u038c'
- + '\\u038e-\\u03a1'
- + '\\u03a3-\\u03f5'
- + '\\u03f7-\\u0481'
- + '\\u048a-\\u0527'
- + '\\u0531-\\u0556'
- + '\\u0559'
- + '\\u0561-\\u0587'
- + '\\u05b0-\\u05bd'
- + '\\u05bf'
- + '\\u05c1-\\u05c2'
- + '\\u05c4-\\u05c5'
- + '\\u05c7'
- + '\\u05d0-\\u05ea'
- + '\\u05f0-\\u05f2'
- + '\\u0610-\\u061a'
- + '\\u0620-\\u0657'
- + '\\u0659-\\u0669'
- + '\\u066e-\\u06d3'
- + '\\u06d5-\\u06dc'
- + '\\u06e1-\\u06e8'
- + '\\u06ed-\\u06fc'
- + '\\u06ff'
- + '\\u0710-\\u073f'
- + '\\u074d-\\u07b1'
- + '\\u07c0-\\u07ea'
- + '\\u07f4-\\u07f5'
- + '\\u07fa'
- + '\\u0800-\\u0817'
- + '\\u081a-\\u082c'
- + '\\u0840-\\u0858'
- + '\\u08a0'
- + '\\u08a2-\\u08ac'
- + '\\u08e4-\\u08e9'
- + '\\u08f0-\\u08fe'
- + '\\u0900-\\u093b'
- + '\\u093d-\\u094c'
- + '\\u094e-\\u0950'
- + '\\u0955-\\u0963'
- + '\\u0966-\\u096f'
- + '\\u0971-\\u0977'
- + '\\u0979-\\u097f'
- + '\\u0981-\\u0983'
- + '\\u0985-\\u098c'
- + '\\u098f-\\u0990'
- + '\\u0993-\\u09a8'
- + '\\u09aa-\\u09b0'
- + '\\u09b2'
- + '\\u09b6-\\u09b9'
- + '\\u09bd-\\u09c4'
- + '\\u09c7-\\u09c8'
- + '\\u09cb-\\u09cc'
- + '\\u09ce'
- + '\\u09d7'
- + '\\u09dc-\\u09dd'
- + '\\u09df-\\u09e3'
- + '\\u09e6-\\u09f1'
- + '\\u0a01-\\u0a03'
- + '\\u0a05-\\u0a0a'
- + '\\u0a0f-\\u0a10'
- + '\\u0a13-\\u0a28'
- + '\\u0a2a-\\u0a30'
- + '\\u0a32-\\u0a33'
- + '\\u0a35-\\u0a36'
- + '\\u0a38-\\u0a39'
- + '\\u0a3e-\\u0a42'
- + '\\u0a47-\\u0a48'
- + '\\u0a4b-\\u0a4c'
- + '\\u0a51'
- + '\\u0a59-\\u0a5c'
- + '\\u0a5e'
- + '\\u0a66-\\u0a75'
- + '\\u0a81-\\u0a83'
- + '\\u0a85-\\u0a8d'
- + '\\u0a8f-\\u0a91'
- + '\\u0a93-\\u0aa8'
- + '\\u0aaa-\\u0ab0'
- + '\\u0ab2-\\u0ab3'
- + '\\u0ab5-\\u0ab9'
- + '\\u0abd-\\u0ac5'
- + '\\u0ac7-\\u0ac9'
- + '\\u0acb-\\u0acc'
- + '\\u0ad0'
- + '\\u0ae0-\\u0ae3'
- + '\\u0ae6-\\u0aef'
- + '\\u0b01-\\u0b03'
- + '\\u0b05-\\u0b0c'
- + '\\u0b0f-\\u0b10'
- + '\\u0b13-\\u0b28'
- + '\\u0b2a-\\u0b30'
- + '\\u0b32-\\u0b33'
- + '\\u0b35-\\u0b39'
- + '\\u0b3d-\\u0b44'
- + '\\u0b47-\\u0b48'
- + '\\u0b4b-\\u0b4c'
- + '\\u0b56-\\u0b57'
- + '\\u0b5c-\\u0b5d'
- + '\\u0b5f-\\u0b63'
- + '\\u0b66-\\u0b6f'
- + '\\u0b71'
- + '\\u0b82-\\u0b83'
- + '\\u0b85-\\u0b8a'
- + '\\u0b8e-\\u0b90'
- + '\\u0b92-\\u0b95'
- + '\\u0b99-\\u0b9a'
- + '\\u0b9c'
- + '\\u0b9e-\\u0b9f'
- + '\\u0ba3-\\u0ba4'
- + '\\u0ba8-\\u0baa'
- + '\\u0bae-\\u0bb9'
- + '\\u0bbe-\\u0bc2'
- + '\\u0bc6-\\u0bc8'
- + '\\u0bca-\\u0bcc'
- + '\\u0bd0'
- + '\\u0bd7'
- + '\\u0be6-\\u0bef'
- + '\\u0c01-\\u0c03'
- + '\\u0c05-\\u0c0c'
- + '\\u0c0e-\\u0c10'
- + '\\u0c12-\\u0c28'
- + '\\u0c2a-\\u0c33'
- + '\\u0c35-\\u0c39'
- + '\\u0c3d-\\u0c44'
- + '\\u0c46-\\u0c48'
- + '\\u0c4a-\\u0c4c'
- + '\\u0c55-\\u0c56'
- + '\\u0c58-\\u0c59'
- + '\\u0c60-\\u0c63'
- + '\\u0c66-\\u0c6f'
- + '\\u0c82-\\u0c83'
- + '\\u0c85-\\u0c8c'
- + '\\u0c8e-\\u0c90'
- + '\\u0c92-\\u0ca8'
- + '\\u0caa-\\u0cb3'
- + '\\u0cb5-\\u0cb9'
- + '\\u0cbd-\\u0cc4'
- + '\\u0cc6-\\u0cc8'
- + '\\u0cca-\\u0ccc'
- + '\\u0cd5-\\u0cd6'
- + '\\u0cde'
- + '\\u0ce0-\\u0ce3'
- + '\\u0ce6-\\u0cef'
- + '\\u0cf1-\\u0cf2'
- + '\\u0d02-\\u0d03'
- + '\\u0d05-\\u0d0c'
- + '\\u0d0e-\\u0d10'
- + '\\u0d12-\\u0d3a'
- + '\\u0d3d-\\u0d44'
- + '\\u0d46-\\u0d48'
- + '\\u0d4a-\\u0d4c'
- + '\\u0d4e'
- + '\\u0d57'
- + '\\u0d60-\\u0d63'
- + '\\u0d66-\\u0d6f'
- + '\\u0d7a-\\u0d7f'
- + '\\u0d82-\\u0d83'
- + '\\u0d85-\\u0d96'
- + '\\u0d9a-\\u0db1'
- + '\\u0db3-\\u0dbb'
- + '\\u0dbd'
- + '\\u0dc0-\\u0dc6'
- + '\\u0dcf-\\u0dd4'
- + '\\u0dd6'
- + '\\u0dd8-\\u0ddf'
- + '\\u0df2-\\u0df3'
- + '\\u0e01-\\u0e3a'
- + '\\u0e40-\\u0e46'
- + '\\u0e4d'
- + '\\u0e50-\\u0e59'
- + '\\u0e81-\\u0e82'
- + '\\u0e84'
- + '\\u0e87-\\u0e88'
- + '\\u0e8a'
- + '\\u0e8d'
- + '\\u0e94-\\u0e97'
- + '\\u0e99-\\u0e9f'
- + '\\u0ea1-\\u0ea3'
- + '\\u0ea5'
- + '\\u0ea7'
- + '\\u0eaa-\\u0eab'
- + '\\u0ead-\\u0eb9'
- + '\\u0ebb-\\u0ebd'
- + '\\u0ec0-\\u0ec4'
- + '\\u0ec6'
- + '\\u0ecd'
- + '\\u0ed0-\\u0ed9'
- + '\\u0edc-\\u0edf'
- + '\\u0f00'
- + '\\u0f20-\\u0f29'
- + '\\u0f40-\\u0f47'
- + '\\u0f49-\\u0f6c'
- + '\\u0f71-\\u0f81'
- + '\\u0f88-\\u0f97'
- + '\\u0f99-\\u0fbc'
- + '\\u1000-\\u1036'
- + '\\u1038'
- + '\\u103b-\\u1049'
- + '\\u1050-\\u1062'
- + '\\u1065-\\u1068'
- + '\\u106e-\\u1086'
- + '\\u108e'
- + '\\u1090-\\u1099'
- + '\\u109c-\\u109d'
- + '\\u10a0-\\u10c5'
- + '\\u10c7'
- + '\\u10cd'
- + '\\u10d0-\\u10fa'
- + '\\u10fc-\\u1248'
- + '\\u124a-\\u124d'
- + '\\u1250-\\u1256'
- + '\\u1258'
- + '\\u125a-\\u125d'
- + '\\u1260-\\u1288'
- + '\\u128a-\\u128d'
- + '\\u1290-\\u12b0'
- + '\\u12b2-\\u12b5'
- + '\\u12b8-\\u12be'
- + '\\u12c0'
- + '\\u12c2-\\u12c5'
- + '\\u12c8-\\u12d6'
- + '\\u12d8-\\u1310'
- + '\\u1312-\\u1315'
- + '\\u1318-\\u135a'
- + '\\u135f'
- + '\\u1380-\\u138f'
- + '\\u13a0-\\u13f4'
- + '\\u1401-\\u166c'
- + '\\u166f-\\u167f'
- + '\\u1681-\\u169a'
- + '\\u16a0-\\u16ea'
- + '\\u16ee-\\u16f0'
- + '\\u1700-\\u170c'
- + '\\u170e-\\u1713'
- + '\\u1720-\\u1733'
- + '\\u1740-\\u1753'
- + '\\u1760-\\u176c'
- + '\\u176e-\\u1770'
- + '\\u1772-\\u1773'
- + '\\u1780-\\u17b3'
- + '\\u17b6-\\u17c8'
- + '\\u17d7'
- + '\\u17dc'
- + '\\u17e0-\\u17e9'
- + '\\u1810-\\u1819'
- + '\\u1820-\\u1877'
- + '\\u1880-\\u18aa'
- + '\\u18b0-\\u18f5'
- + '\\u1900-\\u191c'
- + '\\u1920-\\u192b'
- + '\\u1930-\\u1938'
- + '\\u1946-\\u196d'
- + '\\u1970-\\u1974'
- + '\\u1980-\\u19ab'
- + '\\u19b0-\\u19c9'
- + '\\u19d0-\\u19d9'
- + '\\u1a00-\\u1a1b'
- + '\\u1a20-\\u1a5e'
- + '\\u1a61-\\u1a74'
- + '\\u1a80-\\u1a89'
- + '\\u1a90-\\u1a99'
- + '\\u1aa7'
- + '\\u1b00-\\u1b33'
- + '\\u1b35-\\u1b43'
- + '\\u1b45-\\u1b4b'
- + '\\u1b50-\\u1b59'
- + '\\u1b80-\\u1ba9'
- + '\\u1bac-\\u1be5'
- + '\\u1be7-\\u1bf1'
- + '\\u1c00-\\u1c35'
- + '\\u1c40-\\u1c49'
- + '\\u1c4d-\\u1c7d'
- + '\\u1ce9-\\u1cec'
- + '\\u1cee-\\u1cf3'
- + '\\u1cf5-\\u1cf6'
- + '\\u1d00-\\u1dbf'
- + '\\u1e00-\\u1f15'
- + '\\u1f18-\\u1f1d'
- + '\\u1f20-\\u1f45'
- + '\\u1f48-\\u1f4d'
- + '\\u1f50-\\u1f57'
- + '\\u1f59'
- + '\\u1f5b'
- + '\\u1f5d'
- + '\\u1f5f-\\u1f7d'
- + '\\u1f80-\\u1fb4'
- + '\\u1fb6-\\u1fbc'
- + '\\u1fbe'
- + '\\u1fc2-\\u1fc4'
- + '\\u1fc6-\\u1fcc'
- + '\\u1fd0-\\u1fd3'
- + '\\u1fd6-\\u1fdb'
- + '\\u1fe0-\\u1fec'
- + '\\u1ff2-\\u1ff4'
- + '\\u1ff6-\\u1ffc'
- + '\\u2071'
- + '\\u207f'
- + '\\u2090-\\u209c'
- + '\\u2102'
- + '\\u2107'
- + '\\u210a-\\u2113'
- + '\\u2115'
- + '\\u2119-\\u211d'
- + '\\u2124'
- + '\\u2126'
- + '\\u2128'
- + '\\u212a-\\u212d'
- + '\\u212f-\\u2139'
- + '\\u213c-\\u213f'
- + '\\u2145-\\u2149'
- + '\\u214e'
- + '\\u2160-\\u2188'
- + '\\u24b6-\\u24e9'
- + '\\u2c00-\\u2c2e'
- + '\\u2c30-\\u2c5e'
- + '\\u2c60-\\u2ce4'
- + '\\u2ceb-\\u2cee'
- + '\\u2cf2-\\u2cf3'
- + '\\u2d00-\\u2d25'
- + '\\u2d27'
- + '\\u2d2d'
- + '\\u2d30-\\u2d67'
- + '\\u2d6f'
- + '\\u2d80-\\u2d96'
- + '\\u2da0-\\u2da6'
- + '\\u2da8-\\u2dae'
- + '\\u2db0-\\u2db6'
- + '\\u2db8-\\u2dbe'
- + '\\u2dc0-\\u2dc6'
- + '\\u2dc8-\\u2dce'
- + '\\u2dd0-\\u2dd6'
- + '\\u2dd8-\\u2dde'
- + '\\u2de0-\\u2dff'
- + '\\u2e2f'
- + '\\u3005-\\u3007'
- + '\\u3021-\\u3029'
- + '\\u3031-\\u3035'
- + '\\u3038-\\u303c'
- + '\\u3041-\\u3096'
- + '\\u309d-\\u309f'
- + '\\u30a1-\\u30fa'
- + '\\u30fc-\\u30ff'
- + '\\u3105-\\u312d'
- + '\\u3131-\\u318e'
- + '\\u31a0-\\u31ba'
- + '\\u31f0-\\u31ff'
- + '\\u3400-\\u4db5'
- + '\\u4e00-\\u9fcc'
- + '\\ua000-\\ua48c'
- + '\\ua4d0-\\ua4fd'
- + '\\ua500-\\ua60c'
- + '\\ua610-\\ua62b'
- + '\\ua640-\\ua66e'
- + '\\ua674-\\ua67b'
- + '\\ua67f-\\ua697'
- + '\\ua69f-\\ua6ef'
- + '\\ua717-\\ua71f'
- + '\\ua722-\\ua788'
- + '\\ua78b-\\ua78e'
- + '\\ua790-\\ua793'
- + '\\ua7a0-\\ua7aa'
- + '\\ua7f8-\\ua801'
- + '\\ua803-\\ua805'
- + '\\ua807-\\ua80a'
- + '\\ua80c-\\ua827'
- + '\\ua840-\\ua873'
- + '\\ua880-\\ua8c3'
- + '\\ua8d0-\\ua8d9'
- + '\\ua8f2-\\ua8f7'
- + '\\ua8fb'
- + '\\ua900-\\ua92a'
- + '\\ua930-\\ua952'
- + '\\ua960-\\ua97c'
- + '\\ua980-\\ua9b2'
- + '\\ua9b4-\\ua9bf'
- + '\\ua9cf-\\ua9d9'
- + '\\uaa00-\\uaa36'
- + '\\uaa40-\\uaa4d'
- + '\\uaa50-\\uaa59'
- + '\\uaa60-\\uaa76'
- + '\\uaa7a'
- + '\\uaa80-\\uaabe'
- + '\\uaac0'
- + '\\uaac2'
- + '\\uaadb-\\uaadd'
- + '\\uaae0-\\uaaef'
- + '\\uaaf2-\\uaaf5'
- + '\\uab01-\\uab06'
- + '\\uab09-\\uab0e'
- + '\\uab11-\\uab16'
- + '\\uab20-\\uab26'
- + '\\uab28-\\uab2e'
- + '\\uabc0-\\uabea'
- + '\\uabf0-\\uabf9'
- + '\\uac00-\\ud7a3'
- + '\\ud7b0-\\ud7c6'
- + '\\ud7cb-\\ud7fb'
- + '\\uf900-\\ufa6d'
- + '\\ufa70-\\ufad9'
- + '\\ufb00-\\ufb06'
- + '\\ufb13-\\ufb17'
- + '\\ufb1d-\\ufb28'
- + '\\ufb2a-\\ufb36'
- + '\\ufb38-\\ufb3c'
- + '\\ufb3e'
- + '\\ufb40-\\ufb41'
- + '\\ufb43-\\ufb44'
- + '\\ufb46-\\ufbb1'
- + '\\ufbd3-\\ufd3d'
- + '\\ufd50-\\ufd8f'
- + '\\ufd92-\\ufdc7'
- + '\\ufdf0-\\ufdfb'
- + '\\ufe70-\\ufe74'
- + '\\ufe76-\\ufefc'
- + '\\uff10-\\uff19'
- + '\\uff21-\\uff3a'
- + '\\uff41-\\uff5a'
- + '\\uff66-\\uffbe'
- + '\\uffc2-\\uffc7'
- + '\\uffca-\\uffcf'
- + '\\uffd2-\\uffd7'
- + '\\uffda-\\uffdc'
+ // source: https://github.com/ruby/ruby/blob/ruby_2_4/enc/unicode/9.0.0/name2ctype.h#L3544
+ word: "\\u0030-\\u0039" +
+ "\\u0041-\\u005a" +
+ "\\u005f-\\u005f" +
+ "\\u0061-\\u007a" +
+ "\\u00aa-\\u00aa" +
+ "\\u00b5-\\u00b5" +
+ "\\u00ba-\\u00ba" +
+ "\\u00c0-\\u00d6" +
+ "\\u00d8-\\u00f6" +
+ "\\u00f8-\\u02c1" +
+ "\\u02c6-\\u02d1" +
+ "\\u02e0-\\u02e4" +
+ "\\u02ec-\\u02ec" +
+ "\\u02ee-\\u02ee" +
+ "\\u0300-\\u0374" +
+ "\\u0376-\\u0377" +
+ "\\u037a-\\u037d" +
+ "\\u037f-\\u037f" +
+ "\\u0386-\\u0386" +
+ "\\u0388-\\u038a" +
+ "\\u038c-\\u038c" +
+ "\\u038e-\\u03a1" +
+ "\\u03a3-\\u03f5" +
+ "\\u03f7-\\u0481" +
+ "\\u0483-\\u052f" +
+ "\\u0531-\\u0556" +
+ "\\u0559-\\u0559" +
+ "\\u0561-\\u0587" +
+ "\\u0591-\\u05bd" +
+ "\\u05bf-\\u05bf" +
+ "\\u05c1-\\u05c2" +
+ "\\u05c4-\\u05c5" +
+ "\\u05c7-\\u05c7" +
+ "\\u05d0-\\u05ea" +
+ "\\u05f0-\\u05f2" +
+ "\\u0610-\\u061a" +
+ "\\u0620-\\u0669" +
+ "\\u066e-\\u06d3" +
+ "\\u06d5-\\u06dc" +
+ "\\u06df-\\u06e8" +
+ "\\u06ea-\\u06fc" +
+ "\\u06ff-\\u06ff" +
+ "\\u0710-\\u074a" +
+ "\\u074d-\\u07b1" +
+ "\\u07c0-\\u07f5" +
+ "\\u07fa-\\u07fa" +
+ "\\u0800-\\u082d" +
+ "\\u0840-\\u085b" +
+ "\\u08a0-\\u08b4" +
+ "\\u08b6-\\u08bd" +
+ "\\u08d4-\\u08e1" +
+ "\\u08e3-\\u0963" +
+ "\\u0966-\\u096f" +
+ "\\u0971-\\u0983" +
+ "\\u0985-\\u098c" +
+ "\\u098f-\\u0990" +
+ "\\u0993-\\u09a8" +
+ "\\u09aa-\\u09b0" +
+ "\\u09b2-\\u09b2" +
+ "\\u09b6-\\u09b9" +
+ "\\u09bc-\\u09c4" +
+ "\\u09c7-\\u09c8" +
+ "\\u09cb-\\u09ce" +
+ "\\u09d7-\\u09d7" +
+ "\\u09dc-\\u09dd" +
+ "\\u09df-\\u09e3" +
+ "\\u09e6-\\u09f1" +
+ "\\u0a01-\\u0a03" +
+ "\\u0a05-\\u0a0a" +
+ "\\u0a0f-\\u0a10" +
+ "\\u0a13-\\u0a28" +
+ "\\u0a2a-\\u0a30" +
+ "\\u0a32-\\u0a33" +
+ "\\u0a35-\\u0a36" +
+ "\\u0a38-\\u0a39" +
+ "\\u0a3c-\\u0a3c" +
+ "\\u0a3e-\\u0a42" +
+ "\\u0a47-\\u0a48" +
+ "\\u0a4b-\\u0a4d" +
+ "\\u0a51-\\u0a51" +
+ "\\u0a59-\\u0a5c" +
+ "\\u0a5e-\\u0a5e" +
+ "\\u0a66-\\u0a75" +
+ "\\u0a81-\\u0a83" +
+ "\\u0a85-\\u0a8d" +
+ "\\u0a8f-\\u0a91" +
+ "\\u0a93-\\u0aa8" +
+ "\\u0aaa-\\u0ab0" +
+ "\\u0ab2-\\u0ab3" +
+ "\\u0ab5-\\u0ab9" +
+ "\\u0abc-\\u0ac5" +
+ "\\u0ac7-\\u0ac9" +
+ "\\u0acb-\\u0acd" +
+ "\\u0ad0-\\u0ad0" +
+ "\\u0ae0-\\u0ae3" +
+ "\\u0ae6-\\u0aef" +
+ "\\u0af9-\\u0af9" +
+ "\\u0b01-\\u0b03" +
+ "\\u0b05-\\u0b0c" +
+ "\\u0b0f-\\u0b10" +
+ "\\u0b13-\\u0b28" +
+ "\\u0b2a-\\u0b30" +
+ "\\u0b32-\\u0b33" +
+ "\\u0b35-\\u0b39" +
+ "\\u0b3c-\\u0b44" +
+ "\\u0b47-\\u0b48" +
+ "\\u0b4b-\\u0b4d" +
+ "\\u0b56-\\u0b57" +
+ "\\u0b5c-\\u0b5d" +
+ "\\u0b5f-\\u0b63" +
+ "\\u0b66-\\u0b6f" +
+ "\\u0b71-\\u0b71" +
+ "\\u0b82-\\u0b83" +
+ "\\u0b85-\\u0b8a" +
+ "\\u0b8e-\\u0b90" +
+ "\\u0b92-\\u0b95" +
+ "\\u0b99-\\u0b9a" +
+ "\\u0b9c-\\u0b9c" +
+ "\\u0b9e-\\u0b9f" +
+ "\\u0ba3-\\u0ba4" +
+ "\\u0ba8-\\u0baa" +
+ "\\u0bae-\\u0bb9" +
+ "\\u0bbe-\\u0bc2" +
+ "\\u0bc6-\\u0bc8" +
+ "\\u0bca-\\u0bcd" +
+ "\\u0bd0-\\u0bd0" +
+ "\\u0bd7-\\u0bd7" +
+ "\\u0be6-\\u0bef" +
+ "\\u0c00-\\u0c03" +
+ "\\u0c05-\\u0c0c" +
+ "\\u0c0e-\\u0c10" +
+ "\\u0c12-\\u0c28" +
+ "\\u0c2a-\\u0c39" +
+ "\\u0c3d-\\u0c44" +
+ "\\u0c46-\\u0c48" +
+ "\\u0c4a-\\u0c4d" +
+ "\\u0c55-\\u0c56" +
+ "\\u0c58-\\u0c5a" +
+ "\\u0c60-\\u0c63" +
+ "\\u0c66-\\u0c6f" +
+ "\\u0c80-\\u0c83" +
+ "\\u0c85-\\u0c8c" +
+ "\\u0c8e-\\u0c90" +
+ "\\u0c92-\\u0ca8" +
+ "\\u0caa-\\u0cb3" +
+ "\\u0cb5-\\u0cb9" +
+ "\\u0cbc-\\u0cc4" +
+ "\\u0cc6-\\u0cc8" +
+ "\\u0cca-\\u0ccd" +
+ "\\u0cd5-\\u0cd6" +
+ "\\u0cde-\\u0cde" +
+ "\\u0ce0-\\u0ce3" +
+ "\\u0ce6-\\u0cef" +
+ "\\u0cf1-\\u0cf2" +
+ "\\u0d01-\\u0d03" +
+ "\\u0d05-\\u0d0c" +
+ "\\u0d0e-\\u0d10" +
+ "\\u0d12-\\u0d3a" +
+ "\\u0d3d-\\u0d44" +
+ "\\u0d46-\\u0d48" +
+ "\\u0d4a-\\u0d4e" +
+ "\\u0d54-\\u0d57" +
+ "\\u0d5f-\\u0d63" +
+ "\\u0d66-\\u0d6f" +
+ "\\u0d7a-\\u0d7f" +
+ "\\u0d82-\\u0d83" +
+ "\\u0d85-\\u0d96" +
+ "\\u0d9a-\\u0db1" +
+ "\\u0db3-\\u0dbb" +
+ "\\u0dbd-\\u0dbd" +
+ "\\u0dc0-\\u0dc6" +
+ "\\u0dca-\\u0dca" +
+ "\\u0dcf-\\u0dd4" +
+ "\\u0dd6-\\u0dd6" +
+ "\\u0dd8-\\u0ddf" +
+ "\\u0de6-\\u0def" +
+ "\\u0df2-\\u0df3" +
+ "\\u0e01-\\u0e3a" +
+ "\\u0e40-\\u0e4e" +
+ "\\u0e50-\\u0e59" +
+ "\\u0e81-\\u0e82" +
+ "\\u0e84-\\u0e84" +
+ "\\u0e87-\\u0e88" +
+ "\\u0e8a-\\u0e8a" +
+ "\\u0e8d-\\u0e8d" +
+ "\\u0e94-\\u0e97" +
+ "\\u0e99-\\u0e9f" +
+ "\\u0ea1-\\u0ea3" +
+ "\\u0ea5-\\u0ea5" +
+ "\\u0ea7-\\u0ea7" +
+ "\\u0eaa-\\u0eab" +
+ "\\u0ead-\\u0eb9" +
+ "\\u0ebb-\\u0ebd" +
+ "\\u0ec0-\\u0ec4" +
+ "\\u0ec6-\\u0ec6" +
+ "\\u0ec8-\\u0ecd" +
+ "\\u0ed0-\\u0ed9" +
+ "\\u0edc-\\u0edf" +
+ "\\u0f00-\\u0f00" +
+ "\\u0f18-\\u0f19" +
+ "\\u0f20-\\u0f29" +
+ "\\u0f35-\\u0f35" +
+ "\\u0f37-\\u0f37" +
+ "\\u0f39-\\u0f39" +
+ "\\u0f3e-\\u0f47" +
+ "\\u0f49-\\u0f6c" +
+ "\\u0f71-\\u0f84" +
+ "\\u0f86-\\u0f97" +
+ "\\u0f99-\\u0fbc" +
+ "\\u0fc6-\\u0fc6" +
+ "\\u1000-\\u1049" +
+ "\\u1050-\\u109d" +
+ "\\u10a0-\\u10c5" +
+ "\\u10c7-\\u10c7" +
+ "\\u10cd-\\u10cd" +
+ "\\u10d0-\\u10fa" +
+ "\\u10fc-\\u1248" +
+ "\\u124a-\\u124d" +
+ "\\u1250-\\u1256" +
+ "\\u1258-\\u1258" +
+ "\\u125a-\\u125d" +
+ "\\u1260-\\u1288" +
+ "\\u128a-\\u128d" +
+ "\\u1290-\\u12b0" +
+ "\\u12b2-\\u12b5" +
+ "\\u12b8-\\u12be" +
+ "\\u12c0-\\u12c0" +
+ "\\u12c2-\\u12c5" +
+ "\\u12c8-\\u12d6" +
+ "\\u12d8-\\u1310" +
+ "\\u1312-\\u1315" +
+ "\\u1318-\\u135a" +
+ "\\u135d-\\u135f" +
+ "\\u1380-\\u138f" +
+ "\\u13a0-\\u13f5" +
+ "\\u13f8-\\u13fd" +
+ "\\u1401-\\u166c" +
+ "\\u166f-\\u167f" +
+ "\\u1681-\\u169a" +
+ "\\u16a0-\\u16ea" +
+ "\\u16ee-\\u16f8" +
+ "\\u1700-\\u170c" +
+ "\\u170e-\\u1714" +
+ "\\u1720-\\u1734" +
+ "\\u1740-\\u1753" +
+ "\\u1760-\\u176c" +
+ "\\u176e-\\u1770" +
+ "\\u1772-\\u1773" +
+ "\\u1780-\\u17d3" +
+ "\\u17d7-\\u17d7" +
+ "\\u17dc-\\u17dd" +
+ "\\u17e0-\\u17e9" +
+ "\\u180b-\\u180d" +
+ "\\u1810-\\u1819" +
+ "\\u1820-\\u1877" +
+ "\\u1880-\\u18aa" +
+ "\\u18b0-\\u18f5" +
+ "\\u1900-\\u191e" +
+ "\\u1920-\\u192b" +
+ "\\u1930-\\u193b" +
+ "\\u1946-\\u196d" +
+ "\\u1970-\\u1974" +
+ "\\u1980-\\u19ab" +
+ "\\u19b0-\\u19c9" +
+ "\\u19d0-\\u19d9" +
+ "\\u1a00-\\u1a1b" +
+ "\\u1a20-\\u1a5e" +
+ "\\u1a60-\\u1a7c" +
+ "\\u1a7f-\\u1a89" +
+ "\\u1a90-\\u1a99" +
+ "\\u1aa7-\\u1aa7" +
+ "\\u1ab0-\\u1abe" +
+ "\\u1b00-\\u1b4b" +
+ "\\u1b50-\\u1b59" +
+ "\\u1b6b-\\u1b73" +
+ "\\u1b80-\\u1bf3" +
+ "\\u1c00-\\u1c37" +
+ "\\u1c40-\\u1c49" +
+ "\\u1c4d-\\u1c7d" +
+ "\\u1c80-\\u1c88" +
+ "\\u1cd0-\\u1cd2" +
+ "\\u1cd4-\\u1cf6" +
+ "\\u1cf8-\\u1cf9" +
+ "\\u1d00-\\u1df5" +
+ "\\u1dfb-\\u1f15" +
+ "\\u1f18-\\u1f1d" +
+ "\\u1f20-\\u1f45" +
+ "\\u1f48-\\u1f4d" +
+ "\\u1f50-\\u1f57" +
+ "\\u1f59-\\u1f59" +
+ "\\u1f5b-\\u1f5b" +
+ "\\u1f5d-\\u1f5d" +
+ "\\u1f5f-\\u1f7d" +
+ "\\u1f80-\\u1fb4" +
+ "\\u1fb6-\\u1fbc" +
+ "\\u1fbe-\\u1fbe" +
+ "\\u1fc2-\\u1fc4" +
+ "\\u1fc6-\\u1fcc" +
+ "\\u1fd0-\\u1fd3" +
+ "\\u1fd6-\\u1fdb" +
+ "\\u1fe0-\\u1fec" +
+ "\\u1ff2-\\u1ff4" +
+ "\\u1ff6-\\u1ffc" +
+ "\\u203f-\\u2040" +
+ "\\u2054-\\u2054" +
+ "\\u2071-\\u2071" +
+ "\\u207f-\\u207f" +
+ "\\u2090-\\u209c" +
+ "\\u20d0-\\u20f0" +
+ "\\u2102-\\u2102" +
+ "\\u2107-\\u2107" +
+ "\\u210a-\\u2113" +
+ "\\u2115-\\u2115" +
+ "\\u2119-\\u211d" +
+ "\\u2124-\\u2124" +
+ "\\u2126-\\u2126" +
+ "\\u2128-\\u2128" +
+ "\\u212a-\\u212d" +
+ "\\u212f-\\u2139" +
+ "\\u213c-\\u213f" +
+ "\\u2145-\\u2149" +
+ "\\u214e-\\u214e" +
+ "\\u2160-\\u2188" +
+ "\\u24b6-\\u24e9" +
+ "\\u2c00-\\u2c2e" +
+ "\\u2c30-\\u2c5e" +
+ "\\u2c60-\\u2ce4" +
+ "\\u2ceb-\\u2cf3" +
+ "\\u2d00-\\u2d25" +
+ "\\u2d27-\\u2d27" +
+ "\\u2d2d-\\u2d2d" +
+ "\\u2d30-\\u2d67" +
+ "\\u2d6f-\\u2d6f" +
+ "\\u2d7f-\\u2d96" +
+ "\\u2da0-\\u2da6" +
+ "\\u2da8-\\u2dae" +
+ "\\u2db0-\\u2db6" +
+ "\\u2db8-\\u2dbe" +
+ "\\u2dc0-\\u2dc6" +
+ "\\u2dc8-\\u2dce" +
+ "\\u2dd0-\\u2dd6" +
+ "\\u2dd8-\\u2dde" +
+ "\\u2de0-\\u2dff" +
+ "\\u2e2f-\\u2e2f" +
+ "\\u3005-\\u3007" +
+ "\\u3021-\\u302f" +
+ "\\u3031-\\u3035" +
+ "\\u3038-\\u303c" +
+ "\\u3041-\\u3096" +
+ "\\u3099-\\u309a" +
+ "\\u309d-\\u309f" +
+ "\\u30a1-\\u30fa" +
+ "\\u30fc-\\u30ff" +
+ "\\u3105-\\u312d" +
+ "\\u3131-\\u318e" +
+ "\\u31a0-\\u31ba" +
+ "\\u31f0-\\u31ff" +
+ "\\u3400-\\u4db5" +
+ "\\u4e00-\\u9fd5" +
+ "\\ua000-\\ua48c" +
+ "\\ua4d0-\\ua4fd" +
+ "\\ua500-\\ua60c" +
+ "\\ua610-\\ua62b" +
+ "\\ua640-\\ua672" +
+ "\\ua674-\\ua67d" +
+ "\\ua67f-\\ua6f1" +
+ "\\ua717-\\ua71f" +
+ "\\ua722-\\ua788" +
+ "\\ua78b-\\ua7ae" +
+ "\\ua7b0-\\ua7b7" +
+ "\\ua7f7-\\ua827" +
+ "\\ua840-\\ua873" +
+ "\\ua880-\\ua8c5" +
+ "\\ua8d0-\\ua8d9" +
+ "\\ua8e0-\\ua8f7" +
+ "\\ua8fb-\\ua8fb" +
+ "\\ua8fd-\\ua8fd" +
+ "\\ua900-\\ua92d" +
+ "\\ua930-\\ua953" +
+ "\\ua960-\\ua97c" +
+ "\\ua980-\\ua9c0" +
+ "\\ua9cf-\\ua9d9" +
+ "\\ua9e0-\\ua9fe" +
+ "\\uaa00-\\uaa36" +
+ "\\uaa40-\\uaa4d" +
+ "\\uaa50-\\uaa59" +
+ "\\uaa60-\\uaa76" +
+ "\\uaa7a-\\uaac2" +
+ "\\uaadb-\\uaadd" +
+ "\\uaae0-\\uaaef" +
+ "\\uaaf2-\\uaaf6" +
+ "\\uab01-\\uab06" +
+ "\\uab09-\\uab0e" +
+ "\\uab11-\\uab16" +
+ "\\uab20-\\uab26" +
+ "\\uab28-\\uab2e" +
+ "\\uab30-\\uab5a" +
+ "\\uab5c-\\uab65" +
+ "\\uab70-\\uabea" +
+ "\\uabec-\\uabed" +
+ "\\uabf0-\\uabf9" +
+ "\\uac00-\\ud7a3" +
+ "\\ud7b0-\\ud7c6" +
+ "\\ud7cb-\\ud7fb" +
+ "\\uf900-\\ufa6d" +
+ "\\ufa70-\\ufad9" +
+ "\\ufb00-\\ufb06" +
+ "\\ufb13-\\ufb17" +
+ "\\ufb1d-\\ufb28" +
+ "\\ufb2a-\\ufb36" +
+ "\\ufb38-\\ufb3c" +
+ "\\ufb3e-\\ufb3e" +
+ "\\ufb40-\\ufb41" +
+ "\\ufb43-\\ufb44" +
+ "\\ufb46-\\ufbb1" +
+ "\\ufbd3-\\ufd3d" +
+ "\\ufd50-\\ufd8f" +
+ "\\ufd92-\\ufdc7" +
+ "\\ufdf0-\\ufdfb" +
+ "\\ufe00-\\ufe0f" +
+ "\\ufe20-\\ufe2f" +
+ "\\ufe33-\\ufe34" +
+ "\\ufe4d-\\ufe4f" +
+ "\\ufe70-\\ufe74" +
+ "\\ufe76-\\ufefc" +
+ "\\uff10-\\uff19" +
+ "\\uff21-\\uff3a" +
+ "\\uff3f-\\uff3f" +
+ "\\uff41-\\uff5a" +
+ "\\uff66-\\uffbe" +
+ "\\uffc2-\\uffc7" +
+ "\\uffca-\\uffcf" +
+ "\\uffd2-\\uffd7" +
+ "\\uffda-\\uffdc",
+ // "\\u10000-\\u1000b" +
+ // "\\u1000d-\\u10026" +
+ // "\\u10028-\\u1003a" +
+ // "\\u1003c-\\u1003d" +
+ // "\\u1003f-\\u1004d" +
+ // "\\u10050-\\u1005d" +
+ // "\\u10080-\\u100fa" +
+ // "\\u10140-\\u10174" +
+ // "\\u101fd-\\u101fd" +
+ // "\\u10280-\\u1029c" +
+ // "\\u102a0-\\u102d0" +
+ // "\\u102e0-\\u102e0" +
+ // "\\u10300-\\u1031f" +
+ // "\\u10330-\\u1034a" +
+ // "\\u10350-\\u1037a" +
+ // "\\u10380-\\u1039d" +
+ // "\\u103a0-\\u103c3" +
+ // "\\u103c8-\\u103cf" +
+ // "\\u103d1-\\u103d5" +
+ // "\\u10400-\\u1049d" +
+ // "\\u104a0-\\u104a9" +
+ // "\\u104b0-\\u104d3" +
+ // "\\u104d8-\\u104fb" +
+ // "\\u10500-\\u10527" +
+ // "\\u10530-\\u10563" +
+ // "\\u10600-\\u10736" +
+ // "\\u10740-\\u10755" +
+ // "\\u10760-\\u10767" +
+ // "\\u10800-\\u10805" +
+ // "\\u10808-\\u10808" +
+ // "\\u1080a-\\u10835" +
+ // "\\u10837-\\u10838" +
+ // "\\u1083c-\\u1083c" +
+ // "\\u1083f-\\u10855" +
+ // "\\u10860-\\u10876" +
+ // "\\u10880-\\u1089e" +
+ // "\\u108e0-\\u108f2" +
+ // "\\u108f4-\\u108f5" +
+ // "\\u10900-\\u10915" +
+ // "\\u10920-\\u10939" +
+ // "\\u10980-\\u109b7" +
+ // "\\u109be-\\u109bf" +
+ // "\\u10a00-\\u10a03" +
+ // "\\u10a05-\\u10a06" +
+ // "\\u10a0c-\\u10a13" +
+ // "\\u10a15-\\u10a17" +
+ // "\\u10a19-\\u10a33" +
+ // "\\u10a38-\\u10a3a" +
+ // "\\u10a3f-\\u10a3f" +
+ // "\\u10a60-\\u10a7c" +
+ // "\\u10a80-\\u10a9c" +
+ // "\\u10ac0-\\u10ac7" +
+ // "\\u10ac9-\\u10ae6" +
+ // "\\u10b00-\\u10b35" +
+ // "\\u10b40-\\u10b55" +
+ // "\\u10b60-\\u10b72" +
+ // "\\u10b80-\\u10b91" +
+ // "\\u10c00-\\u10c48" +
+ // "\\u10c80-\\u10cb2" +
+ // "\\u10cc0-\\u10cf2" +
+ // "\\u11000-\\u11046" +
+ // "\\u11066-\\u1106f" +
+ // "\\u1107f-\\u110ba" +
+ // "\\u110d0-\\u110e8" +
+ // "\\u110f0-\\u110f9" +
+ // "\\u11100-\\u11134" +
+ // "\\u11136-\\u1113f" +
+ // "\\u11150-\\u11173" +
+ // "\\u11176-\\u11176" +
+ // "\\u11180-\\u111c4" +
+ // "\\u111ca-\\u111cc" +
+ // "\\u111d0-\\u111da" +
+ // "\\u111dc-\\u111dc" +
+ // "\\u11200-\\u11211" +
+ // "\\u11213-\\u11237" +
+ // "\\u1123e-\\u1123e" +
+ // "\\u11280-\\u11286" +
+ // "\\u11288-\\u11288" +
+ // "\\u1128a-\\u1128d" +
+ // "\\u1128f-\\u1129d" +
+ // "\\u1129f-\\u112a8" +
+ // "\\u112b0-\\u112ea" +
+ // "\\u112f0-\\u112f9" +
+ // "\\u11300-\\u11303" +
+ // "\\u11305-\\u1130c" +
+ // "\\u1130f-\\u11310" +
+ // "\\u11313-\\u11328" +
+ // "\\u1132a-\\u11330" +
+ // "\\u11332-\\u11333" +
+ // "\\u11335-\\u11339" +
+ // "\\u1133c-\\u11344" +
+ // "\\u11347-\\u11348" +
+ // "\\u1134b-\\u1134d" +
+ // "\\u11350-\\u11350" +
+ // "\\u11357-\\u11357" +
+ // "\\u1135d-\\u11363" +
+ // "\\u11366-\\u1136c" +
+ // "\\u11370-\\u11374" +
+ // "\\u11400-\\u1144a" +
+ // "\\u11450-\\u11459" +
+ // "\\u11480-\\u114c5" +
+ // "\\u114c7-\\u114c7" +
+ // "\\u114d0-\\u114d9" +
+ // "\\u11580-\\u115b5" +
+ // "\\u115b8-\\u115c0" +
+ // "\\u115d8-\\u115dd" +
+ // "\\u11600-\\u11640" +
+ // "\\u11644-\\u11644" +
+ // "\\u11650-\\u11659" +
+ // "\\u11680-\\u116b7" +
+ // "\\u116c0-\\u116c9" +
+ // "\\u11700-\\u11719" +
+ // "\\u1171d-\\u1172b" +
+ // "\\u11730-\\u11739" +
+ // "\\u118a0-\\u118e9" +
+ // "\\u118ff-\\u118ff" +
+ // "\\u11ac0-\\u11af8" +
+ // "\\u11c00-\\u11c08" +
+ // "\\u11c0a-\\u11c36" +
+ // "\\u11c38-\\u11c40" +
+ // "\\u11c50-\\u11c59" +
+ // "\\u11c72-\\u11c8f" +
+ // "\\u11c92-\\u11ca7" +
+ // "\\u11ca9-\\u11cb6" +
+ // "\\u12000-\\u12399" +
+ // "\\u12400-\\u1246e" +
+ // "\\u12480-\\u12543" +
+ // "\\u13000-\\u1342e" +
+ // "\\u14400-\\u14646" +
+ // "\\u16800-\\u16a38" +
+ // "\\u16a40-\\u16a5e" +
+ // "\\u16a60-\\u16a69" +
+ // "\\u16ad0-\\u16aed" +
+ // "\\u16af0-\\u16af4" +
+ // "\\u16b00-\\u16b36" +
+ // "\\u16b40-\\u16b43" +
+ // "\\u16b50-\\u16b59" +
+ // "\\u16b63-\\u16b77" +
+ // "\\u16b7d-\\u16b8f" +
+ // "\\u16f00-\\u16f44" +
+ // "\\u16f50-\\u16f7e" +
+ // "\\u16f8f-\\u16f9f" +
+ // "\\u16fe0-\\u16fe0" +
+ // "\\u17000-\\u187ec" +
+ // "\\u18800-\\u18af2" +
+ // "\\u1b000-\\u1b001" +
+ // "\\u1bc00-\\u1bc6a" +
+ // "\\u1bc70-\\u1bc7c" +
+ // "\\u1bc80-\\u1bc88" +
+ // "\\u1bc90-\\u1bc99" +
+ // "\\u1bc9d-\\u1bc9e" +
+ // "\\u1d165-\\u1d169" +
+ // "\\u1d16d-\\u1d172" +
+ // "\\u1d17b-\\u1d182" +
+ // "\\u1d185-\\u1d18b" +
+ // "\\u1d1aa-\\u1d1ad" +
+ // "\\u1d242-\\u1d244" +
+ // "\\u1d400-\\u1d454" +
+ // "\\u1d456-\\u1d49c" +
+ // "\\u1d49e-\\u1d49f" +
+ // "\\u1d4a2-\\u1d4a2" +
+ // "\\u1d4a5-\\u1d4a6" +
+ // "\\u1d4a9-\\u1d4ac" +
+ // "\\u1d4ae-\\u1d4b9" +
+ // "\\u1d4bb-\\u1d4bb" +
+ // "\\u1d4bd-\\u1d4c3" +
+ // "\\u1d4c5-\\u1d505" +
+ // "\\u1d507-\\u1d50a" +
+ // "\\u1d50d-\\u1d514" +
+ // "\\u1d516-\\u1d51c" +
+ // "\\u1d51e-\\u1d539" +
+ // "\\u1d53b-\\u1d53e" +
+ // "\\u1d540-\\u1d544" +
+ // "\\u1d546-\\u1d546" +
+ // "\\u1d54a-\\u1d550" +
+ // "\\u1d552-\\u1d6a5" +
+ // "\\u1d6a8-\\u1d6c0" +
+ // "\\u1d6c2-\\u1d6da" +
+ // "\\u1d6dc-\\u1d6fa" +
+ // "\\u1d6fc-\\u1d714" +
+ // "\\u1d716-\\u1d734" +
+ // "\\u1d736-\\u1d74e" +
+ // "\\u1d750-\\u1d76e" +
+ // "\\u1d770-\\u1d788" +
+ // "\\u1d78a-\\u1d7a8" +
+ // "\\u1d7aa-\\u1d7c2" +
+ // "\\u1d7c4-\\u1d7cb" +
+ // "\\u1d7ce-\\u1d7ff" +
+ // "\\u1da00-\\u1da36" +
+ // "\\u1da3b-\\u1da6c" +
+ // "\\u1da75-\\u1da75" +
+ // "\\u1da84-\\u1da84" +
+ // "\\u1da9b-\\u1da9f" +
+ // "\\u1daa1-\\u1daaf" +
+ // "\\u1e000-\\u1e006" +
+ // "\\u1e008-\\u1e018" +
+ // "\\u1e01b-\\u1e021" +
+ // "\\u1e023-\\u1e024" +
+ // "\\u1e026-\\u1e02a" +
+ // "\\u1e800-\\u1e8c4" +
+ // "\\u1e8d0-\\u1e8d6" +
+ // "\\u1e900-\\u1e94a" +
+ // "\\u1e950-\\u1e959" +
+ // "\\u1ee00-\\u1ee03" +
+ // "\\u1ee05-\\u1ee1f" +
+ // "\\u1ee21-\\u1ee22" +
+ // "\\u1ee24-\\u1ee24" +
+ // "\\u1ee27-\\u1ee27" +
+ // "\\u1ee29-\\u1ee32" +
+ // "\\u1ee34-\\u1ee37" +
+ // "\\u1ee39-\\u1ee39" +
+ // "\\u1ee3b-\\u1ee3b" +
+ // "\\u1ee42-\\u1ee42" +
+ // "\\u1ee47-\\u1ee47" +
+ // "\\u1ee49-\\u1ee49" +
+ // "\\u1ee4b-\\u1ee4b" +
+ // "\\u1ee4d-\\u1ee4f" +
+ // "\\u1ee51-\\u1ee52" +
+ // "\\u1ee54-\\u1ee54" +
+ // "\\u1ee57-\\u1ee57" +
+ // "\\u1ee59-\\u1ee59" +
+ // "\\u1ee5b-\\u1ee5b" +
+ // "\\u1ee5d-\\u1ee5d" +
+ // "\\u1ee5f-\\u1ee5f" +
+ // "\\u1ee61-\\u1ee62" +
+ // "\\u1ee64-\\u1ee64" +
+ // "\\u1ee67-\\u1ee6a" +
+ // "\\u1ee6c-\\u1ee72" +
+ // "\\u1ee74-\\u1ee77" +
+ // "\\u1ee79-\\u1ee7c" +
+ // "\\u1ee7e-\\u1ee7e" +
+ // "\\u1ee80-\\u1ee89" +
+ // "\\u1ee8b-\\u1ee9b" +
+ // "\\u1eea1-\\u1eea3" +
+ // "\\u1eea5-\\u1eea9" +
+ // "\\u1eeab-\\u1eebb" +
+ // "\\u1f130-\\u1f149" +
+ // "\\u1f150-\\u1f169" +
+ // "\\u1f170-\\u1f189" +
+ // "\\u20000-\\u2a6d6" +
+ // "\\u2a700-\\u2b734" +
+ // "\\u2b740-\\u2b81d" +
+ // "\\u2b820-\\u2cea1" +
+ // "\\u2f800-\\u2fa1d" +
+ // "\\ue0100-\\ue01ef",
+
+ // source: https://github.com/ruby/ruby/blob/ruby_2_4/enc/unicode/9.0.0/name2ctype.h#L4227
+ alnum: "\\u0030-\\u0039" +
+ "\\u0041-\\u005a" +
+ "\\u0061-\\u007a" +
+ "\\u00aa-\\u00aa" +
+ "\\u00b5-\\u00b5" +
+ "\\u00ba-\\u00ba" +
+ "\\u00c0-\\u00d6" +
+ "\\u00d8-\\u00f6" +
+ "\\u00f8-\\u02c1" +
+ "\\u02c6-\\u02d1" +
+ "\\u02e0-\\u02e4" +
+ "\\u02ec-\\u02ec" +
+ "\\u02ee-\\u02ee" +
+ "\\u0345-\\u0345" +
+ "\\u0370-\\u0374" +
+ "\\u0376-\\u0377" +
+ "\\u037a-\\u037d" +
+ "\\u037f-\\u037f" +
+ "\\u0386-\\u0386" +
+ "\\u0388-\\u038a" +
+ "\\u038c-\\u038c" +
+ "\\u038e-\\u03a1" +
+ "\\u03a3-\\u03f5" +
+ "\\u03f7-\\u0481" +
+ "\\u048a-\\u052f" +
+ "\\u0531-\\u0556" +
+ "\\u0559-\\u0559" +
+ "\\u0561-\\u0587" +
+ "\\u05b0-\\u05bd" +
+ "\\u05bf-\\u05bf" +
+ "\\u05c1-\\u05c2" +
+ "\\u05c4-\\u05c5" +
+ "\\u05c7-\\u05c7" +
+ "\\u05d0-\\u05ea" +
+ "\\u05f0-\\u05f2" +
+ "\\u0610-\\u061a" +
+ "\\u0620-\\u0657" +
+ "\\u0659-\\u0669" +
+ "\\u066e-\\u06d3" +
+ "\\u06d5-\\u06dc" +
+ "\\u06e1-\\u06e8" +
+ "\\u06ed-\\u06fc" +
+ "\\u06ff-\\u06ff" +
+ "\\u0710-\\u073f" +
+ "\\u074d-\\u07b1" +
+ "\\u07c0-\\u07ea" +
+ "\\u07f4-\\u07f5" +
+ "\\u07fa-\\u07fa" +
+ "\\u0800-\\u0817" +
+ "\\u081a-\\u082c" +
+ "\\u0840-\\u0858" +
+ "\\u08a0-\\u08b4" +
+ "\\u08b6-\\u08bd" +
+ "\\u08d4-\\u08df" +
+ "\\u08e3-\\u08e9" +
+ "\\u08f0-\\u093b" +
+ "\\u093d-\\u094c" +
+ "\\u094e-\\u0950" +
+ "\\u0955-\\u0963" +
+ "\\u0966-\\u096f" +
+ "\\u0971-\\u0983" +
+ "\\u0985-\\u098c" +
+ "\\u098f-\\u0990" +
+ "\\u0993-\\u09a8" +
+ "\\u09aa-\\u09b0" +
+ "\\u09b2-\\u09b2" +
+ "\\u09b6-\\u09b9" +
+ "\\u09bd-\\u09c4" +
+ "\\u09c7-\\u09c8" +
+ "\\u09cb-\\u09cc" +
+ "\\u09ce-\\u09ce" +
+ "\\u09d7-\\u09d7" +
+ "\\u09dc-\\u09dd" +
+ "\\u09df-\\u09e3" +
+ "\\u09e6-\\u09f1" +
+ "\\u0a01-\\u0a03" +
+ "\\u0a05-\\u0a0a" +
+ "\\u0a0f-\\u0a10" +
+ "\\u0a13-\\u0a28" +
+ "\\u0a2a-\\u0a30" +
+ "\\u0a32-\\u0a33" +
+ "\\u0a35-\\u0a36" +
+ "\\u0a38-\\u0a39" +
+ "\\u0a3e-\\u0a42" +
+ "\\u0a47-\\u0a48" +
+ "\\u0a4b-\\u0a4c" +
+ "\\u0a51-\\u0a51" +
+ "\\u0a59-\\u0a5c" +
+ "\\u0a5e-\\u0a5e" +
+ "\\u0a66-\\u0a75" +
+ "\\u0a81-\\u0a83" +
+ "\\u0a85-\\u0a8d" +
+ "\\u0a8f-\\u0a91" +
+ "\\u0a93-\\u0aa8" +
+ "\\u0aaa-\\u0ab0" +
+ "\\u0ab2-\\u0ab3" +
+ "\\u0ab5-\\u0ab9" +
+ "\\u0abd-\\u0ac5" +
+ "\\u0ac7-\\u0ac9" +
+ "\\u0acb-\\u0acc" +
+ "\\u0ad0-\\u0ad0" +
+ "\\u0ae0-\\u0ae3" +
+ "\\u0ae6-\\u0aef" +
+ "\\u0af9-\\u0af9" +
+ "\\u0b01-\\u0b03" +
+ "\\u0b05-\\u0b0c" +
+ "\\u0b0f-\\u0b10" +
+ "\\u0b13-\\u0b28" +
+ "\\u0b2a-\\u0b30" +
+ "\\u0b32-\\u0b33" +
+ "\\u0b35-\\u0b39" +
+ "\\u0b3d-\\u0b44" +
+ "\\u0b47-\\u0b48" +
+ "\\u0b4b-\\u0b4c" +
+ "\\u0b56-\\u0b57" +
+ "\\u0b5c-\\u0b5d" +
+ "\\u0b5f-\\u0b63" +
+ "\\u0b66-\\u0b6f" +
+ "\\u0b71-\\u0b71" +
+ "\\u0b82-\\u0b83" +
+ "\\u0b85-\\u0b8a" +
+ "\\u0b8e-\\u0b90" +
+ "\\u0b92-\\u0b95" +
+ "\\u0b99-\\u0b9a" +
+ "\\u0b9c-\\u0b9c" +
+ "\\u0b9e-\\u0b9f" +
+ "\\u0ba3-\\u0ba4" +
+ "\\u0ba8-\\u0baa" +
+ "\\u0bae-\\u0bb9" +
+ "\\u0bbe-\\u0bc2" +
+ "\\u0bc6-\\u0bc8" +
+ "\\u0bca-\\u0bcc" +
+ "\\u0bd0-\\u0bd0" +
+ "\\u0bd7-\\u0bd7" +
+ "\\u0be6-\\u0bef" +
+ "\\u0c00-\\u0c03" +
+ "\\u0c05-\\u0c0c" +
+ "\\u0c0e-\\u0c10" +
+ "\\u0c12-\\u0c28" +
+ "\\u0c2a-\\u0c39" +
+ "\\u0c3d-\\u0c44" +
+ "\\u0c46-\\u0c48" +
+ "\\u0c4a-\\u0c4c" +
+ "\\u0c55-\\u0c56" +
+ "\\u0c58-\\u0c5a" +
+ "\\u0c60-\\u0c63" +
+ "\\u0c66-\\u0c6f" +
+ "\\u0c80-\\u0c83" +
+ "\\u0c85-\\u0c8c" +
+ "\\u0c8e-\\u0c90" +
+ "\\u0c92-\\u0ca8" +
+ "\\u0caa-\\u0cb3" +
+ "\\u0cb5-\\u0cb9" +
+ "\\u0cbd-\\u0cc4" +
+ "\\u0cc6-\\u0cc8" +
+ "\\u0cca-\\u0ccc" +
+ "\\u0cd5-\\u0cd6" +
+ "\\u0cde-\\u0cde" +
+ "\\u0ce0-\\u0ce3" +
+ "\\u0ce6-\\u0cef" +
+ "\\u0cf1-\\u0cf2" +
+ "\\u0d01-\\u0d03" +
+ "\\u0d05-\\u0d0c" +
+ "\\u0d0e-\\u0d10" +
+ "\\u0d12-\\u0d3a" +
+ "\\u0d3d-\\u0d44" +
+ "\\u0d46-\\u0d48" +
+ "\\u0d4a-\\u0d4c" +
+ "\\u0d4e-\\u0d4e" +
+ "\\u0d54-\\u0d57" +
+ "\\u0d5f-\\u0d63" +
+ "\\u0d66-\\u0d6f" +
+ "\\u0d7a-\\u0d7f" +
+ "\\u0d82-\\u0d83" +
+ "\\u0d85-\\u0d96" +
+ "\\u0d9a-\\u0db1" +
+ "\\u0db3-\\u0dbb" +
+ "\\u0dbd-\\u0dbd" +
+ "\\u0dc0-\\u0dc6" +
+ "\\u0dcf-\\u0dd4" +
+ "\\u0dd6-\\u0dd6" +
+ "\\u0dd8-\\u0ddf" +
+ "\\u0de6-\\u0def" +
+ "\\u0df2-\\u0df3" +
+ "\\u0e01-\\u0e3a" +
+ "\\u0e40-\\u0e46" +
+ "\\u0e4d-\\u0e4d" +
+ "\\u0e50-\\u0e59" +
+ "\\u0e81-\\u0e82" +
+ "\\u0e84-\\u0e84" +
+ "\\u0e87-\\u0e88" +
+ "\\u0e8a-\\u0e8a" +
+ "\\u0e8d-\\u0e8d" +
+ "\\u0e94-\\u0e97" +
+ "\\u0e99-\\u0e9f" +
+ "\\u0ea1-\\u0ea3" +
+ "\\u0ea5-\\u0ea5" +
+ "\\u0ea7-\\u0ea7" +
+ "\\u0eaa-\\u0eab" +
+ "\\u0ead-\\u0eb9" +
+ "\\u0ebb-\\u0ebd" +
+ "\\u0ec0-\\u0ec4" +
+ "\\u0ec6-\\u0ec6" +
+ "\\u0ecd-\\u0ecd" +
+ "\\u0ed0-\\u0ed9" +
+ "\\u0edc-\\u0edf" +
+ "\\u0f00-\\u0f00" +
+ "\\u0f20-\\u0f29" +
+ "\\u0f40-\\u0f47" +
+ "\\u0f49-\\u0f6c" +
+ "\\u0f71-\\u0f81" +
+ "\\u0f88-\\u0f97" +
+ "\\u0f99-\\u0fbc" +
+ "\\u1000-\\u1036" +
+ "\\u1038-\\u1038" +
+ "\\u103b-\\u1049" +
+ "\\u1050-\\u1062" +
+ "\\u1065-\\u1068" +
+ "\\u106e-\\u1086" +
+ "\\u108e-\\u108e" +
+ "\\u1090-\\u1099" +
+ "\\u109c-\\u109d" +
+ "\\u10a0-\\u10c5" +
+ "\\u10c7-\\u10c7" +
+ "\\u10cd-\\u10cd" +
+ "\\u10d0-\\u10fa" +
+ "\\u10fc-\\u1248" +
+ "\\u124a-\\u124d" +
+ "\\u1250-\\u1256" +
+ "\\u1258-\\u1258" +
+ "\\u125a-\\u125d" +
+ "\\u1260-\\u1288" +
+ "\\u128a-\\u128d" +
+ "\\u1290-\\u12b0" +
+ "\\u12b2-\\u12b5" +
+ "\\u12b8-\\u12be" +
+ "\\u12c0-\\u12c0" +
+ "\\u12c2-\\u12c5" +
+ "\\u12c8-\\u12d6" +
+ "\\u12d8-\\u1310" +
+ "\\u1312-\\u1315" +
+ "\\u1318-\\u135a" +
+ "\\u135f-\\u135f" +
+ "\\u1380-\\u138f" +
+ "\\u13a0-\\u13f5" +
+ "\\u13f8-\\u13fd" +
+ "\\u1401-\\u166c" +
+ "\\u166f-\\u167f" +
+ "\\u1681-\\u169a" +
+ "\\u16a0-\\u16ea" +
+ "\\u16ee-\\u16f8" +
+ "\\u1700-\\u170c" +
+ "\\u170e-\\u1713" +
+ "\\u1720-\\u1733" +
+ "\\u1740-\\u1753" +
+ "\\u1760-\\u176c" +
+ "\\u176e-\\u1770" +
+ "\\u1772-\\u1773" +
+ "\\u1780-\\u17b3" +
+ "\\u17b6-\\u17c8" +
+ "\\u17d7-\\u17d7" +
+ "\\u17dc-\\u17dc" +
+ "\\u17e0-\\u17e9" +
+ "\\u1810-\\u1819" +
+ "\\u1820-\\u1877" +
+ "\\u1880-\\u18aa" +
+ "\\u18b0-\\u18f5" +
+ "\\u1900-\\u191e" +
+ "\\u1920-\\u192b" +
+ "\\u1930-\\u1938" +
+ "\\u1946-\\u196d" +
+ "\\u1970-\\u1974" +
+ "\\u1980-\\u19ab" +
+ "\\u19b0-\\u19c9" +
+ "\\u19d0-\\u19d9" +
+ "\\u1a00-\\u1a1b" +
+ "\\u1a20-\\u1a5e" +
+ "\\u1a61-\\u1a74" +
+ "\\u1a80-\\u1a89" +
+ "\\u1a90-\\u1a99" +
+ "\\u1aa7-\\u1aa7" +
+ "\\u1b00-\\u1b33" +
+ "\\u1b35-\\u1b43" +
+ "\\u1b45-\\u1b4b" +
+ "\\u1b50-\\u1b59" +
+ "\\u1b80-\\u1ba9" +
+ "\\u1bac-\\u1be5" +
+ "\\u1be7-\\u1bf1" +
+ "\\u1c00-\\u1c35" +
+ "\\u1c40-\\u1c49" +
+ "\\u1c4d-\\u1c7d" +
+ "\\u1c80-\\u1c88" +
+ "\\u1ce9-\\u1cec" +
+ "\\u1cee-\\u1cf3" +
+ "\\u1cf5-\\u1cf6" +
+ "\\u1d00-\\u1dbf" +
+ "\\u1de7-\\u1df4" +
+ "\\u1e00-\\u1f15" +
+ "\\u1f18-\\u1f1d" +
+ "\\u1f20-\\u1f45" +
+ "\\u1f48-\\u1f4d" +
+ "\\u1f50-\\u1f57" +
+ "\\u1f59-\\u1f59" +
+ "\\u1f5b-\\u1f5b" +
+ "\\u1f5d-\\u1f5d" +
+ "\\u1f5f-\\u1f7d" +
+ "\\u1f80-\\u1fb4" +
+ "\\u1fb6-\\u1fbc" +
+ "\\u1fbe-\\u1fbe" +
+ "\\u1fc2-\\u1fc4" +
+ "\\u1fc6-\\u1fcc" +
+ "\\u1fd0-\\u1fd3" +
+ "\\u1fd6-\\u1fdb" +
+ "\\u1fe0-\\u1fec" +
+ "\\u1ff2-\\u1ff4" +
+ "\\u1ff6-\\u1ffc" +
+ "\\u2071-\\u2071" +
+ "\\u207f-\\u207f" +
+ "\\u2090-\\u209c" +
+ "\\u2102-\\u2102" +
+ "\\u2107-\\u2107" +
+ "\\u210a-\\u2113" +
+ "\\u2115-\\u2115" +
+ "\\u2119-\\u211d" +
+ "\\u2124-\\u2124" +
+ "\\u2126-\\u2126" +
+ "\\u2128-\\u2128" +
+ "\\u212a-\\u212d" +
+ "\\u212f-\\u2139" +
+ "\\u213c-\\u213f" +
+ "\\u2145-\\u2149" +
+ "\\u214e-\\u214e" +
+ "\\u2160-\\u2188" +
+ "\\u24b6-\\u24e9" +
+ "\\u2c00-\\u2c2e" +
+ "\\u2c30-\\u2c5e" +
+ "\\u2c60-\\u2ce4" +
+ "\\u2ceb-\\u2cee" +
+ "\\u2cf2-\\u2cf3" +
+ "\\u2d00-\\u2d25" +
+ "\\u2d27-\\u2d27" +
+ "\\u2d2d-\\u2d2d" +
+ "\\u2d30-\\u2d67" +
+ "\\u2d6f-\\u2d6f" +
+ "\\u2d80-\\u2d96" +
+ "\\u2da0-\\u2da6" +
+ "\\u2da8-\\u2dae" +
+ "\\u2db0-\\u2db6" +
+ "\\u2db8-\\u2dbe" +
+ "\\u2dc0-\\u2dc6" +
+ "\\u2dc8-\\u2dce" +
+ "\\u2dd0-\\u2dd6" +
+ "\\u2dd8-\\u2dde" +
+ "\\u2de0-\\u2dff" +
+ "\\u2e2f-\\u2e2f" +
+ "\\u3005-\\u3007" +
+ "\\u3021-\\u3029" +
+ "\\u3031-\\u3035" +
+ "\\u3038-\\u303c" +
+ "\\u3041-\\u3096" +
+ "\\u309d-\\u309f" +
+ "\\u30a1-\\u30fa" +
+ "\\u30fc-\\u30ff" +
+ "\\u3105-\\u312d" +
+ "\\u3131-\\u318e" +
+ "\\u31a0-\\u31ba" +
+ "\\u31f0-\\u31ff" +
+ "\\u3400-\\u4db5" +
+ "\\u4e00-\\u9fd5" +
+ "\\ua000-\\ua48c" +
+ "\\ua4d0-\\ua4fd" +
+ "\\ua500-\\ua60c" +
+ "\\ua610-\\ua62b" +
+ "\\ua640-\\ua66e" +
+ "\\ua674-\\ua67b" +
+ "\\ua67f-\\ua6ef" +
+ "\\ua717-\\ua71f" +
+ "\\ua722-\\ua788" +
+ "\\ua78b-\\ua7ae" +
+ "\\ua7b0-\\ua7b7" +
+ "\\ua7f7-\\ua801" +
+ "\\ua803-\\ua805" +
+ "\\ua807-\\ua80a" +
+ "\\ua80c-\\ua827" +
+ "\\ua840-\\ua873" +
+ "\\ua880-\\ua8c3" +
+ "\\ua8c5-\\ua8c5" +
+ "\\ua8d0-\\ua8d9" +
+ "\\ua8f2-\\ua8f7" +
+ "\\ua8fb-\\ua8fb" +
+ "\\ua8fd-\\ua8fd" +
+ "\\ua900-\\ua92a" +
+ "\\ua930-\\ua952" +
+ "\\ua960-\\ua97c" +
+ "\\ua980-\\ua9b2" +
+ "\\ua9b4-\\ua9bf" +
+ "\\ua9cf-\\ua9d9" +
+ "\\ua9e0-\\ua9e4" +
+ "\\ua9e6-\\ua9fe" +
+ "\\uaa00-\\uaa36" +
+ "\\uaa40-\\uaa4d" +
+ "\\uaa50-\\uaa59" +
+ "\\uaa60-\\uaa76" +
+ "\\uaa7a-\\uaa7a" +
+ "\\uaa7e-\\uaabe" +
+ "\\uaac0-\\uaac0" +
+ "\\uaac2-\\uaac2" +
+ "\\uaadb-\\uaadd" +
+ "\\uaae0-\\uaaef" +
+ "\\uaaf2-\\uaaf5" +
+ "\\uab01-\\uab06" +
+ "\\uab09-\\uab0e" +
+ "\\uab11-\\uab16" +
+ "\\uab20-\\uab26" +
+ "\\uab28-\\uab2e" +
+ "\\uab30-\\uab5a" +
+ "\\uab5c-\\uab65" +
+ "\\uab70-\\uabea" +
+ "\\uabf0-\\uabf9" +
+ "\\uac00-\\ud7a3" +
+ "\\ud7b0-\\ud7c6" +
+ "\\ud7cb-\\ud7fb" +
+ "\\uf900-\\ufa6d" +
+ "\\ufa70-\\ufad9" +
+ "\\ufb00-\\ufb06" +
+ "\\ufb13-\\ufb17" +
+ "\\ufb1d-\\ufb28" +
+ "\\ufb2a-\\ufb36" +
+ "\\ufb38-\\ufb3c" +
+ "\\ufb3e-\\ufb3e" +
+ "\\ufb40-\\ufb41" +
+ "\\ufb43-\\ufb44" +
+ "\\ufb46-\\ufbb1" +
+ "\\ufbd3-\\ufd3d" +
+ "\\ufd50-\\ufd8f" +
+ "\\ufd92-\\ufdc7" +
+ "\\ufdf0-\\ufdfb" +
+ "\\ufe70-\\ufe74" +
+ "\\ufe76-\\ufefc" +
+ "\\uff10-\\uff19" +
+ "\\uff21-\\uff3a" +
+ "\\uff41-\\uff5a" +
+ "\\uff66-\\uffbe" +
+ "\\uffc2-\\uffc7" +
+ "\\uffca-\\uffcf" +
+ "\\uffd2-\\uffd7" +
+ "\\uffda-\\uffdc"
+ // "\\u10000-\\u1000b" +
+ // "\\u1000d-\\u10026" +
+ // "\\u10028-\\u1003a" +
+ // "\\u1003c-\\u1003d" +
+ // "\\u1003f-\\u1004d" +
+ // "\\u10050-\\u1005d" +
+ // "\\u10080-\\u100fa" +
+ // "\\u10140-\\u10174" +
+ // "\\u10280-\\u1029c" +
+ // "\\u102a0-\\u102d0" +
+ // "\\u10300-\\u1031f" +
+ // "\\u10330-\\u1034a" +
+ // "\\u10350-\\u1037a" +
+ // "\\u10380-\\u1039d" +
+ // "\\u103a0-\\u103c3" +
+ // "\\u103c8-\\u103cf" +
+ // "\\u103d1-\\u103d5" +
+ // "\\u10400-\\u1049d" +
+ // "\\u104a0-\\u104a9" +
+ // "\\u104b0-\\u104d3" +
+ // "\\u104d8-\\u104fb" +
+ // "\\u10500-\\u10527" +
+ // "\\u10530-\\u10563" +
+ // "\\u10600-\\u10736" +
+ // "\\u10740-\\u10755" +
+ // "\\u10760-\\u10767" +
+ // "\\u10800-\\u10805" +
+ // "\\u10808-\\u10808" +
+ // "\\u1080a-\\u10835" +
+ // "\\u10837-\\u10838" +
+ // "\\u1083c-\\u1083c" +
+ // "\\u1083f-\\u10855" +
+ // "\\u10860-\\u10876" +
+ // "\\u10880-\\u1089e" +
+ // "\\u108e0-\\u108f2" +
+ // "\\u108f4-\\u108f5" +
+ // "\\u10900-\\u10915" +
+ // "\\u10920-\\u10939" +
+ // "\\u10980-\\u109b7" +
+ // "\\u109be-\\u109bf" +
+ // "\\u10a00-\\u10a03" +
+ // "\\u10a05-\\u10a06" +
+ // "\\u10a0c-\\u10a13" +
+ // "\\u10a15-\\u10a17" +
+ // "\\u10a19-\\u10a33" +
+ // "\\u10a60-\\u10a7c" +
+ // "\\u10a80-\\u10a9c" +
+ // "\\u10ac0-\\u10ac7" +
+ // "\\u10ac9-\\u10ae4" +
+ // "\\u10b00-\\u10b35" +
+ // "\\u10b40-\\u10b55" +
+ // "\\u10b60-\\u10b72" +
+ // "\\u10b80-\\u10b91" +
+ // "\\u10c00-\\u10c48" +
+ // "\\u10c80-\\u10cb2" +
+ // "\\u10cc0-\\u10cf2" +
+ // "\\u11000-\\u11045" +
+ // "\\u11066-\\u1106f" +
+ // "\\u11082-\\u110b8" +
+ // "\\u110d0-\\u110e8" +
+ // "\\u110f0-\\u110f9" +
+ // "\\u11100-\\u11132" +
+ // "\\u11136-\\u1113f" +
+ // "\\u11150-\\u11172" +
+ // "\\u11176-\\u11176" +
+ // "\\u11180-\\u111bf" +
+ // "\\u111c1-\\u111c4" +
+ // "\\u111d0-\\u111da" +
+ // "\\u111dc-\\u111dc" +
+ // "\\u11200-\\u11211" +
+ // "\\u11213-\\u11234" +
+ // "\\u11237-\\u11237" +
+ // "\\u1123e-\\u1123e" +
+ // "\\u11280-\\u11286" +
+ // "\\u11288-\\u11288" +
+ // "\\u1128a-\\u1128d" +
+ // "\\u1128f-\\u1129d" +
+ // "\\u1129f-\\u112a8" +
+ // "\\u112b0-\\u112e8" +
+ // "\\u112f0-\\u112f9" +
+ // "\\u11300-\\u11303" +
+ // "\\u11305-\\u1130c" +
+ // "\\u1130f-\\u11310" +
+ // "\\u11313-\\u11328" +
+ // "\\u1132a-\\u11330" +
+ // "\\u11332-\\u11333" +
+ // "\\u11335-\\u11339" +
+ // "\\u1133d-\\u11344" +
+ // "\\u11347-\\u11348" +
+ // "\\u1134b-\\u1134c" +
+ // "\\u11350-\\u11350" +
+ // "\\u11357-\\u11357" +
+ // "\\u1135d-\\u11363" +
+ // "\\u11400-\\u11441" +
+ // "\\u11443-\\u11445" +
+ // "\\u11447-\\u1144a" +
+ // "\\u11450-\\u11459" +
+ // "\\u11480-\\u114c1" +
+ // "\\u114c4-\\u114c5" +
+ // "\\u114c7-\\u114c7" +
+ // "\\u114d0-\\u114d9" +
+ // "\\u11580-\\u115b5" +
+ // "\\u115b8-\\u115be" +
+ // "\\u115d8-\\u115dd" +
+ // "\\u11600-\\u1163e" +
+ // "\\u11640-\\u11640" +
+ // "\\u11644-\\u11644" +
+ // "\\u11650-\\u11659" +
+ // "\\u11680-\\u116b5" +
+ // "\\u116c0-\\u116c9" +
+ // "\\u11700-\\u11719" +
+ // "\\u1171d-\\u1172a" +
+ // "\\u11730-\\u11739" +
+ // "\\u118a0-\\u118e9" +
+ // "\\u118ff-\\u118ff" +
+ // "\\u11ac0-\\u11af8" +
+ // "\\u11c00-\\u11c08" +
+ // "\\u11c0a-\\u11c36" +
+ // "\\u11c38-\\u11c3e" +
+ // "\\u11c40-\\u11c40" +
+ // "\\u11c50-\\u11c59" +
+ // "\\u11c72-\\u11c8f" +
+ // "\\u11c92-\\u11ca7" +
+ // "\\u11ca9-\\u11cb6" +
+ // "\\u12000-\\u12399" +
+ // "\\u12400-\\u1246e" +
+ // "\\u12480-\\u12543" +
+ // "\\u13000-\\u1342e" +
+ // "\\u14400-\\u14646" +
+ // "\\u16800-\\u16a38" +
+ // "\\u16a40-\\u16a5e" +
+ // "\\u16a60-\\u16a69" +
+ // "\\u16ad0-\\u16aed" +
+ // "\\u16b00-\\u16b36" +
+ // "\\u16b40-\\u16b43" +
+ // "\\u16b50-\\u16b59" +
+ // "\\u16b63-\\u16b77" +
+ // "\\u16b7d-\\u16b8f" +
+ // "\\u16f00-\\u16f44" +
+ // "\\u16f50-\\u16f7e" +
+ // "\\u16f93-\\u16f9f" +
+ // "\\u16fe0-\\u16fe0" +
+ // "\\u17000-\\u187ec" +
+ // "\\u18800-\\u18af2" +
+ // "\\u1b000-\\u1b001" +
+ // "\\u1bc00-\\u1bc6a" +
+ // "\\u1bc70-\\u1bc7c" +
+ // "\\u1bc80-\\u1bc88" +
+ // "\\u1bc90-\\u1bc99" +
+ // "\\u1bc9e-\\u1bc9e" +
+ // "\\u1d400-\\u1d454" +
+ // "\\u1d456-\\u1d49c" +
+ // "\\u1d49e-\\u1d49f" +
+ // "\\u1d4a2-\\u1d4a2" +
+ // "\\u1d4a5-\\u1d4a6" +
+ // "\\u1d4a9-\\u1d4ac" +
+ // "\\u1d4ae-\\u1d4b9" +
+ // "\\u1d4bb-\\u1d4bb" +
+ // "\\u1d4bd-\\u1d4c3" +
+ // "\\u1d4c5-\\u1d505" +
+ // "\\u1d507-\\u1d50a" +
+ // "\\u1d50d-\\u1d514" +
+ // "\\u1d516-\\u1d51c" +
+ // "\\u1d51e-\\u1d539" +
+ // "\\u1d53b-\\u1d53e" +
+ // "\\u1d540-\\u1d544" +
+ // "\\u1d546-\\u1d546" +
+ // "\\u1d54a-\\u1d550" +
+ // "\\u1d552-\\u1d6a5" +
+ // "\\u1d6a8-\\u1d6c0" +
+ // "\\u1d6c2-\\u1d6da" +
+ // "\\u1d6dc-\\u1d6fa" +
+ // "\\u1d6fc-\\u1d714" +
+ // "\\u1d716-\\u1d734" +
+ // "\\u1d736-\\u1d74e" +
+ // "\\u1d750-\\u1d76e" +
+ // "\\u1d770-\\u1d788" +
+ // "\\u1d78a-\\u1d7a8" +
+ // "\\u1d7aa-\\u1d7c2" +
+ // "\\u1d7c4-\\u1d7cb" +
+ // "\\u1d7ce-\\u1d7ff" +
+ // "\\u1e000-\\u1e006" +
+ // "\\u1e008-\\u1e018" +
+ // "\\u1e01b-\\u1e021" +
+ // "\\u1e023-\\u1e024" +
+ // "\\u1e026-\\u1e02a" +
+ // "\\u1e800-\\u1e8c4" +
+ // "\\u1e900-\\u1e943" +
+ // "\\u1e947-\\u1e947" +
+ // "\\u1e950-\\u1e959" +
+ // "\\u1ee00-\\u1ee03" +
+ // "\\u1ee05-\\u1ee1f" +
+ // "\\u1ee21-\\u1ee22" +
+ // "\\u1ee24-\\u1ee24" +
+ // "\\u1ee27-\\u1ee27" +
+ // "\\u1ee29-\\u1ee32" +
+ // "\\u1ee34-\\u1ee37" +
+ // "\\u1ee39-\\u1ee39" +
+ // "\\u1ee3b-\\u1ee3b" +
+ // "\\u1ee42-\\u1ee42" +
+ // "\\u1ee47-\\u1ee47" +
+ // "\\u1ee49-\\u1ee49" +
+ // "\\u1ee4b-\\u1ee4b" +
+ // "\\u1ee4d-\\u1ee4f" +
+ // "\\u1ee51-\\u1ee52" +
+ // "\\u1ee54-\\u1ee54" +
+ // "\\u1ee57-\\u1ee57" +
+ // "\\u1ee59-\\u1ee59" +
+ // "\\u1ee5b-\\u1ee5b" +
+ // "\\u1ee5d-\\u1ee5d" +
+ // "\\u1ee5f-\\u1ee5f" +
+ // "\\u1ee61-\\u1ee62" +
+ // "\\u1ee64-\\u1ee64" +
+ // "\\u1ee67-\\u1ee6a" +
+ // "\\u1ee6c-\\u1ee72" +
+ // "\\u1ee74-\\u1ee77" +
+ // "\\u1ee79-\\u1ee7c" +
+ // "\\u1ee7e-\\u1ee7e" +
+ // "\\u1ee80-\\u1ee89" +
+ // "\\u1ee8b-\\u1ee9b" +
+ // "\\u1eea1-\\u1eea3" +
+ // "\\u1eea5-\\u1eea9" +
+ // "\\u1eeab-\\u1eebb" +
+ // "\\u1f130-\\u1f149" +
+ // "\\u1f150-\\u1f169" +
+ // "\\u1f170-\\u1f189" +
+ // "\\u20000-\\u2a6d6" +
+ // "\\u2a700-\\u2b734" +
+ // "\\u2b740-\\u2b81d" +
+ // "\\u2b820-\\u2cea1" +
+ // "\\u2f800-\\u2fa1d"
};
// @license-end
diff --git a/spec/javascripts/app/helpers/text_formatter_spec.js b/spec/javascripts/app/helpers/text_formatter_spec.js
index eb6f95686..c2e8e7bcf 100644
--- a/spec/javascripts/app/helpers/text_formatter_spec.js
+++ b/spec/javascripts/app/helpers/text_formatter_spec.js
@@ -9,21 +9,46 @@ describe("app.helpers.textFormatter", function(){
// https://github.com/svbergerem/markdown-it-hashtag/tree/master/test
context("hashtags", function() {
beforeEach(function() {
- this.tags = [
+ this.goodTags = [
"tag",
"diaspora",
"PARTIES",
- "<3"
+ "<3",
+ "diaspora-dev",
+ "diaspora_dev",
+ // issue #5765
+ "മലയാണ്മ",
+ // issue #5815
+ "ինչո՞ւ",
+ "այո՜ո",
+ "սեւ֊սպիտակ",
+ "գժանո՛ց"
+ ];
+
+ this.badTags = [
+ "tag.tag",
+ "hash:tag",
+ "hash*tag"
];
});
- it("renders tags as links", function() {
- var formattedText = this.formatter('#'+this.tags.join(" #"));
- _.each(this.tags, function(tag) {
- var link ='#'+tag.replace("<","<")+'';
+ it("renders good tags as links", function() {
+ var self = this;
+ this.goodTags.forEach(function(tag) {
+ var formattedText = self.formatter("#newhashtag #" + tag + " test");
+ var link = "#" + tag.replace("<", "<") + "";
expect(formattedText).toContain(link);
});
});
+
+ it("doesn't render bad tags as links", function() {
+ var self = this;
+ this.badTags.forEach(function(tag) {
+ var formattedText = self.formatter("#newhashtag #" + tag + " test");
+ var link = "#" + tag.replace("<", "<") + "";
+ expect(formattedText).not.toContain(link);
+ });
+ });
});
// Some basic specs. For more detailed specs see
diff --git a/spec/lib/diaspora/taggable_spec.rb b/spec/lib/diaspora/taggable_spec.rb
index 501285623..f3b03f0e5 100644
--- a/spec/lib/diaspora/taggable_spec.rb
+++ b/spec/lib/diaspora/taggable_spec.rb
@@ -27,6 +27,42 @@ describe Diaspora::Taggable do
expect(text).to eq("#l #lol")
end
end
+
+ context "good tags" do
+ it "autolinks" do
+ good_tags = [
+ "tag",
+ "diaspora",
+ "PARTIES",
+ "diaspora-dev",
+ "diaspora_dev",
+ # issue #5765
+ "മലയാണ്മ",
+ # issue #5815
+ "ինչո՞ւ",
+ "այո՜ո",
+ "սեւ֊սպիտակ",
+ "գժանո՛ց"
+ ]
+ good_tags.each do |tag|
+ text = Diaspora::Taggable.format_tags("#newhashtag ##{tag} #newhashtag")
+ expect(text).to match("##{tag}")
+ end
+ end
+ end
+
+ context "bad tags" do
+ it "doesn't autolink" do
+ bad_tags = [
+ "tag.tag",
+ "hash:tag"
+ ]
+ bad_tags.each do |tag|
+ text = Diaspora::Taggable.format_tags("#newhashtag ##{tag} #newhashtag")
+ expect(text).not_to match("##{tag}")
+ end
+ end
+ end
end
describe "#format_tags_for_mail" do
diff --git a/spec/shared_behaviors/taggable.rb b/spec/shared_behaviors/taggable.rb
index 7d3dd21de..e7a61fb5f 100644
--- a/spec/shared_behaviors/taggable.rb
+++ b/spec/shared_behaviors/taggable.rb
@@ -10,23 +10,35 @@ shared_examples_for "it is taggable" do
link_to "##{s}", "/tags/#{s}", :class => 'tag'
end
- describe '.format_tags' do
+ describe ".format_tags" do
+ let(:tag_list) {
+ [
+ "what",
+ "hey",
+ "vöglein",
+ "മലയാണ്മ",
+ "գժանո՛ց"
+ ]
+ }
+
before do
- @str = '#what #hey #vöglein'
+ @str = tag_list.map {|tag| "##{tag}" }.join(" ")
@object.send(@object.class.field_with_tags_setter, @str)
@object.build_tags
@object.save!
end
it "supports non-ascii characters" do
- expect(@object.tags(true).map(&:name)).to include('vöglein')
+ tag_list.each do |tag|
+ expect(@object.tags(true).map(&:name)).to include(tag)
+ end
end
- it 'links each tag' do
+ it "links each tag" do
formatted_string = Diaspora::Taggable.format_tags(@str)
- expect(formatted_string).to include(tag_link('what'))
- expect(formatted_string).to include(tag_link('hey'))
- expect(formatted_string).to include(tag_link('vöglein'))
+ tag_list.each do |tag|
+ expect(formatted_string).to include(tag_link(tag))
+ end
end
it 'responds to plain_text' do