Skip to content

Commit

Permalink
Native regexes: Use native Emoji props for Emoji text presentation
Browse files Browse the repository at this point in the history
  • Loading branch information
janlelis committed Oct 20, 2024
1 parent 7aa5987 commit 9852eba
Show file tree
Hide file tree
Showing 10 changed files with 14 additions and 11 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

### 3.8.0 (unreleased)

- Native regexes: Use native Emoji props for Emoji text presentation
- Improve documentation and add detailed table about which regex has which features
- Add specs running through `emoji-text.txt` and classify qualification statuses per regex

Expand Down
8 changes: 5 additions & 3 deletions data/generate_constants.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ def pack_and_join(ords)
end
end

def compile(emoji_character:, emoji_modifier:, emoji_modifier_base:, emoji_component:, emoji_presentation:, picto:, picto_no_emoji:)
def compile(emoji_character:, emoji_modifier:, emoji_modifier_base:, emoji_component:, emoji_presentation:, text_presentation:, picto:, picto_no_emoji:)
emoji_presentation_sequence = \
join(
pack_and_join(TEXT_PRESENTATION) + pack(EMOJI_VARIATION_SELECTOR),
text_presentation + pack(EMOJI_VARIATION_SELECTOR),
emoji_presentation + "(?!" + pack(TEXT_VARIATION_SELECTOR) + ")" + pack(EMOJI_VARIATION_SELECTOR) + "?",
)

Expand All @@ -83,7 +83,7 @@ def compile(emoji_character:, emoji_modifier:, emoji_modifier_base:, emoji_compo

text_presentation_sequence = \
join(
pack_and_join(TEXT_PRESENTATION)+ "(?!" + join(emoji_modifier, pack(EMOJI_VARIATION_SELECTOR)) + ")" + pack(TEXT_VARIATION_SELECTOR) + "?",
text_presentation + "(?!" + join(emoji_modifier, pack(EMOJI_VARIATION_SELECTOR)) + ")" + pack(TEXT_VARIATION_SELECTOR) + "?",
emoji_presentation + pack(TEXT_VARIATION_SELECTOR),
)

Expand Down Expand Up @@ -246,6 +246,7 @@ def compile(emoji_character:, emoji_modifier:, emoji_modifier_base:, emoji_compo
emoji_modifier_base: pack_and_join(EMOJI_MODIFIER_BASES),
emoji_component: pack_and_join(EMOJI_COMPONENT),
emoji_presentation: pack_and_join(EMOJI_PRESENTATION),
text_presentation: pack_and_join(TEXT_PRESENTATION),
picto: pack_and_join(EXTENDED_PICTOGRAPHIC),
picto_no_emoji: pack_and_join(EXTENDED_PICTOGRAPHIC_NO_EMOJI)
)
Expand All @@ -257,6 +258,7 @@ def compile(emoji_character:, emoji_modifier:, emoji_modifier_base:, emoji_compo
emoji_modifier_base: "\\p{EBase}",
emoji_component: "\\p{EComp}",
emoji_presentation: "\\p{EPres}",
text_presentation: "\\p{Emoji}(?<!\\p{EPres})",
picto: "\\p{ExtPict}",
picto_no_emoji: "\\p{ExtPict}(?<!\\p{Emoji})"
)
Expand Down
2 changes: 1 addition & 1 deletion lib/unicode/emoji/generated_native/regex.rb

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion lib/unicode/emoji/generated_native/regex_basic.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@

module Unicode
module Emoji
REGEX_BASIC = /(?!\p{EComp})(?:[\#\*0-9ยฉยฎโ€ผโ‰โ„ขโ„นโ†”-โ†™โ†ฉโ†ชโŒจโโญ-โฏโฑโฒโธ-โบโ“‚โ–ชโ–ซโ–ถโ—€โ—ปโ—ผโ˜€-โ˜„โ˜Žโ˜‘โ˜˜โ˜โ˜ โ˜ขโ˜ฃโ˜ฆโ˜ชโ˜ฎโ˜ฏโ˜ธ-โ˜บโ™€โ™‚โ™Ÿโ™ โ™ฃโ™ฅโ™ฆโ™จโ™ปโ™พโš’โš”-โš—โš™โš›โšœโš โšงโšฐโšฑโ›ˆโ›โ›‘โ›“โ›ฉโ›ฐโ›ฑโ›ดโ›ท-โ›นโœ‚โœˆโœ‰โœŒโœโœโœ’โœ”โœ–โœโœกโœณโœดโ„โ‡โฃโคโžกโคดโคตโฌ…-โฌ‡ใ€ฐใ€ฝใŠ—ใŠ™๐Ÿ…ฐ๐Ÿ…ฑ๐Ÿ…พ๐Ÿ…ฟ๐Ÿˆ‚๐Ÿˆท๐ŸŒก๐ŸŒค-๐ŸŒฌ๐ŸŒถ๐Ÿฝ๐ŸŽ–๐ŸŽ—๐ŸŽ™-๐ŸŽ›๐ŸŽž๐ŸŽŸ๐Ÿ‹-๐ŸŽ๐Ÿ”-๐ŸŸ๐Ÿณ๐Ÿต๐Ÿท๐Ÿฟ๐Ÿ‘๐Ÿ“ฝ๐Ÿ•‰๐Ÿ•Š๐Ÿ•ฏ๐Ÿ•ฐ๐Ÿ•ณ-๐Ÿ•น๐Ÿ–‡๐Ÿ–Š-๐Ÿ–๐Ÿ–๐Ÿ–ฅ๐Ÿ–จ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ–ผ๐Ÿ—‚-๐Ÿ—„๐Ÿ—‘-๐Ÿ—“๐Ÿ—œ-๐Ÿ—ž๐Ÿ—ก๐Ÿ—ฃ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ—ณ๐Ÿ—บ๐Ÿ›‹๐Ÿ›-๐Ÿ›๐Ÿ› -๐Ÿ›ฅ๐Ÿ›ฉ๐Ÿ›ฐ๐Ÿ›ณ]๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)/
REGEX_BASIC = /(?!\p{EComp})(?:\p{Emoji}(?<!\p{EPres})๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)/
end
end
2 changes: 1 addition & 1 deletion lib/unicode/emoji/generated_native/regex_include_text.rb

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion lib/unicode/emoji/generated_native/regex_text.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@

module Unicode
module Emoji
REGEX_TEXT = /(?:(?!\p{EComp})(?:[\#\*0-9ยฉยฎโ€ผโ‰โ„ขโ„นโ†”-โ†™โ†ฉโ†ชโŒจโโญ-โฏโฑโฒโธ-โบโ“‚โ–ชโ–ซโ–ถโ—€โ—ปโ—ผโ˜€-โ˜„โ˜Žโ˜‘โ˜˜โ˜โ˜ โ˜ขโ˜ฃโ˜ฆโ˜ชโ˜ฎโ˜ฏโ˜ธ-โ˜บโ™€โ™‚โ™Ÿโ™ โ™ฃโ™ฅโ™ฆโ™จโ™ปโ™พโš’โš”-โš—โš™โš›โšœโš โšงโšฐโšฑโ›ˆโ›โ›‘โ›“โ›ฉโ›ฐโ›ฑโ›ดโ›ท-โ›นโœ‚โœˆโœ‰โœŒโœโœโœ’โœ”โœ–โœโœกโœณโœดโ„โ‡โฃโคโžกโคดโคตโฌ…-โฌ‡ใ€ฐใ€ฝใŠ—ใŠ™๐Ÿ…ฐ๐Ÿ…ฑ๐Ÿ…พ๐Ÿ…ฟ๐Ÿˆ‚๐Ÿˆท๐ŸŒก๐ŸŒค-๐ŸŒฌ๐ŸŒถ๐Ÿฝ๐ŸŽ–๐ŸŽ—๐ŸŽ™-๐ŸŽ›๐ŸŽž๐ŸŽŸ๐Ÿ‹-๐ŸŽ๐Ÿ”-๐ŸŸ๐Ÿณ๐Ÿต๐Ÿท๐Ÿฟ๐Ÿ‘๐Ÿ“ฝ๐Ÿ•‰๐Ÿ•Š๐Ÿ•ฏ๐Ÿ•ฐ๐Ÿ•ณ-๐Ÿ•น๐Ÿ–‡๐Ÿ–Š-๐Ÿ–๐Ÿ–๐Ÿ–ฅ๐Ÿ–จ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ–ผ๐Ÿ—‚-๐Ÿ—„๐Ÿ—‘-๐Ÿ—“๐Ÿ—œ-๐Ÿ—ž๐Ÿ—ก๐Ÿ—ฃ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ—ณ๐Ÿ—บ๐Ÿ›‹๐Ÿ›-๐Ÿ›๐Ÿ› -๐Ÿ›ฅ๐Ÿ›ฉ๐Ÿ›ฐ๐Ÿ›ณ](?!(?:\p{EMod}|๏ธ))๏ธŽ?|\p{EPres}๏ธŽ)|(?:\#โƒฃ|\*โƒฃ|0โƒฃ|1โƒฃ|2โƒฃ|3โƒฃ|4โƒฃ|5โƒฃ|6โƒฃ|7โƒฃ|8โƒฃ|9โƒฃ))/
REGEX_TEXT = /(?:(?!\p{EComp})(?:\p{Emoji}(?<!\p{EPres})(?!(?:\p{EMod}|๏ธ))๏ธŽ?|\p{EPres}๏ธŽ)|(?:\#โƒฃ|\*โƒฃ|0โƒฃ|1โƒฃ|2โƒฃ|3โƒฃ|4โƒฃ|5โƒฃ|6โƒฃ|7โƒฃ|8โƒฃ|9โƒฃ))/
end
end
2 changes: 1 addition & 1 deletion lib/unicode/emoji/generated_native/regex_valid.rb

Large diffs are not rendered by default.

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion lib/unicode/emoji/generated_native/regex_well_formed.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@

module Unicode
module Emoji
REGEX_WELL_FORMED = /(?:(?:(?:(?:\p{EBase}\p{EMod}|(?:[\#\*0-9ยฉยฎโ€ผโ‰โ„ขโ„นโ†”-โ†™โ†ฉโ†ชโŒจโโญ-โฏโฑโฒโธ-โบโ“‚โ–ชโ–ซโ–ถโ—€โ—ปโ—ผโ˜€-โ˜„โ˜Žโ˜‘โ˜˜โ˜โ˜ โ˜ขโ˜ฃโ˜ฆโ˜ชโ˜ฎโ˜ฏโ˜ธ-โ˜บโ™€โ™‚โ™Ÿโ™ โ™ฃโ™ฅโ™ฆโ™จโ™ปโ™พโš’โš”-โš—โš™โš›โšœโš โšงโšฐโšฑโ›ˆโ›โ›‘โ›“โ›ฉโ›ฐโ›ฑโ›ดโ›ท-โ›นโœ‚โœˆโœ‰โœŒโœโœโœ’โœ”โœ–โœโœกโœณโœดโ„โ‡โฃโคโžกโคดโคตโฌ…-โฌ‡ใ€ฐใ€ฝใŠ—ใŠ™๐Ÿ…ฐ๐Ÿ…ฑ๐Ÿ…พ๐Ÿ…ฟ๐Ÿˆ‚๐Ÿˆท๐ŸŒก๐ŸŒค-๐ŸŒฌ๐ŸŒถ๐Ÿฝ๐ŸŽ–๐ŸŽ—๐ŸŽ™-๐ŸŽ›๐ŸŽž๐ŸŽŸ๐Ÿ‹-๐ŸŽ๐Ÿ”-๐ŸŸ๐Ÿณ๐Ÿต๐Ÿท๐Ÿฟ๐Ÿ‘๐Ÿ“ฝ๐Ÿ•‰๐Ÿ•Š๐Ÿ•ฏ๐Ÿ•ฐ๐Ÿ•ณ-๐Ÿ•น๐Ÿ–‡๐Ÿ–Š-๐Ÿ–๐Ÿ–๐Ÿ–ฅ๐Ÿ–จ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ–ผ๐Ÿ—‚-๐Ÿ—„๐Ÿ—‘-๐Ÿ—“๐Ÿ—œ-๐Ÿ—ž๐Ÿ—ก๐Ÿ—ฃ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ—ณ๐Ÿ—บ๐Ÿ›‹๐Ÿ›-๐Ÿ›๐Ÿ› -๐Ÿ›ฅ๐Ÿ›ฉ๐Ÿ›ฐ๐Ÿ›ณ]๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{Emoji})โ€)+(?:\p{EBase}\p{EMod}|(?:[\#\*0-9ยฉยฎโ€ผโ‰โ„ขโ„นโ†”-โ†™โ†ฉโ†ชโŒจโโญ-โฏโฑโฒโธ-โบโ“‚โ–ชโ–ซโ–ถโ—€โ—ปโ—ผโ˜€-โ˜„โ˜Žโ˜‘โ˜˜โ˜โ˜ โ˜ขโ˜ฃโ˜ฆโ˜ชโ˜ฎโ˜ฏโ˜ธ-โ˜บโ™€โ™‚โ™Ÿโ™ โ™ฃโ™ฅโ™ฆโ™จโ™ปโ™พโš’โš”-โš—โš™โš›โšœโš โšงโšฐโšฑโ›ˆโ›โ›‘โ›“โ›ฉโ›ฐโ›ฑโ›ดโ›ท-โ›นโœ‚โœˆโœ‰โœŒโœโœโœ’โœ”โœ–โœโœกโœณโœดโ„โ‡โฃโคโžกโคดโคตโฌ…-โฌ‡ใ€ฐใ€ฝใŠ—ใŠ™๐Ÿ…ฐ๐Ÿ…ฑ๐Ÿ…พ๐Ÿ…ฟ๐Ÿˆ‚๐Ÿˆท๐ŸŒก๐ŸŒค-๐ŸŒฌ๐ŸŒถ๐Ÿฝ๐ŸŽ–๐ŸŽ—๐ŸŽ™-๐ŸŽ›๐ŸŽž๐ŸŽŸ๐Ÿ‹-๐ŸŽ๐Ÿ”-๐ŸŸ๐Ÿณ๐Ÿต๐Ÿท๐Ÿฟ๐Ÿ‘๐Ÿ“ฝ๐Ÿ•‰๐Ÿ•Š๐Ÿ•ฏ๐Ÿ•ฐ๐Ÿ•ณ-๐Ÿ•น๐Ÿ–‡๐Ÿ–Š-๐Ÿ–๐Ÿ–๐Ÿ–ฅ๐Ÿ–จ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ–ผ๐Ÿ—‚-๐Ÿ—„๐Ÿ—‘-๐Ÿ—“๐Ÿ—œ-๐Ÿ—ž๐Ÿ—ก๐Ÿ—ฃ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ—ณ๐Ÿ—บ๐Ÿ›‹๐Ÿ›-๐Ÿ›๐Ÿ› -๐Ÿ›ฅ๐Ÿ›ฉ๐Ÿ›ฐ๐Ÿ›ณ]๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{Emoji}))|(?:(?:(?!\p{EComp})(?:[\#\*0-9ยฉยฎโ€ผโ‰โ„ขโ„นโ†”-โ†™โ†ฉโ†ชโŒจโโญ-โฏโฑโฒโธ-โบโ“‚โ–ชโ–ซโ–ถโ—€โ—ปโ—ผโ˜€-โ˜„โ˜Žโ˜‘โ˜˜โ˜โ˜ โ˜ขโ˜ฃโ˜ฆโ˜ชโ˜ฎโ˜ฏโ˜ธ-โ˜บโ™€โ™‚โ™Ÿโ™ โ™ฃโ™ฅโ™ฆโ™จโ™ปโ™พโš’โš”-โš—โš™โš›โšœโš โšงโšฐโšฑโ›ˆโ›โ›‘โ›“โ›ฉโ›ฐโ›ฑโ›ดโ›ท-โ›นโœ‚โœˆโœ‰โœŒโœโœโœ’โœ”โœ–โœโœกโœณโœดโ„โ‡โฃโคโžกโคดโคตโฌ…-โฌ‡ใ€ฐใ€ฝใŠ—ใŠ™๐Ÿ…ฐ๐Ÿ…ฑ๐Ÿ…พ๐Ÿ…ฟ๐Ÿˆ‚๐Ÿˆท๐ŸŒก๐ŸŒค-๐ŸŒฌ๐ŸŒถ๐Ÿฝ๐ŸŽ–๐ŸŽ—๐ŸŽ™-๐ŸŽ›๐ŸŽž๐ŸŽŸ๐Ÿ‹-๐ŸŽ๐Ÿ”-๐ŸŸ๐Ÿณ๐Ÿต๐Ÿท๐Ÿฟ๐Ÿ‘๐Ÿ“ฝ๐Ÿ•‰๐Ÿ•Š๐Ÿ•ฏ๐Ÿ•ฐ๐Ÿ•ณ-๐Ÿ•น๐Ÿ–‡๐Ÿ–Š-๐Ÿ–๐Ÿ–๐Ÿ–ฅ๐Ÿ–จ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ–ผ๐Ÿ—‚-๐Ÿ—„๐Ÿ—‘-๐Ÿ—“๐Ÿ—œ-๐Ÿ—ž๐Ÿ—ก๐Ÿ—ฃ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ—ณ๐Ÿ—บ๐Ÿ›‹๐Ÿ›-๐Ÿ›๐Ÿ› -๐Ÿ›ฅ๐Ÿ›ฉ๐Ÿ›ฐ๐Ÿ›ณ]๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{EBase}\p{EMod})[๓ €ฐ-๓ €น๓ ก-๓ บ]{1,30}๓ ฟ)|(?:[\#\*0-9]๏ธโƒฃ|\p{EBase}\p{EMod}|(?!\p{EComp})(?:[\#\*0-9ยฉยฎโ€ผโ‰โ„ขโ„นโ†”-โ†™โ†ฉโ†ชโŒจโโญ-โฏโฑโฒโธ-โบโ“‚โ–ชโ–ซโ–ถโ—€โ—ปโ—ผโ˜€-โ˜„โ˜Žโ˜‘โ˜˜โ˜โ˜ โ˜ขโ˜ฃโ˜ฆโ˜ชโ˜ฎโ˜ฏโ˜ธ-โ˜บโ™€โ™‚โ™Ÿโ™ โ™ฃโ™ฅโ™ฆโ™จโ™ปโ™พโš’โš”-โš—โš™โš›โšœโš โšงโšฐโšฑโ›ˆโ›โ›‘โ›“โ›ฉโ›ฐโ›ฑโ›ดโ›ท-โ›นโœ‚โœˆโœ‰โœŒโœโœโœ’โœ”โœ–โœโœกโœณโœดโ„โ‡โฃโคโžกโคดโคตโฌ…-โฌ‡ใ€ฐใ€ฝใŠ—ใŠ™๐Ÿ…ฐ๐Ÿ…ฑ๐Ÿ…พ๐Ÿ…ฟ๐Ÿˆ‚๐Ÿˆท๐ŸŒก๐ŸŒค-๐ŸŒฌ๐ŸŒถ๐Ÿฝ๐ŸŽ–๐ŸŽ—๐ŸŽ™-๐ŸŽ›๐ŸŽž๐ŸŽŸ๐Ÿ‹-๐ŸŽ๐Ÿ”-๐ŸŸ๐Ÿณ๐Ÿต๐Ÿท๐Ÿฟ๐Ÿ‘๐Ÿ“ฝ๐Ÿ•‰๐Ÿ•Š๐Ÿ•ฏ๐Ÿ•ฐ๐Ÿ•ณ-๐Ÿ•น๐Ÿ–‡๐Ÿ–Š-๐Ÿ–๐Ÿ–๐Ÿ–ฅ๐Ÿ–จ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ–ผ๐Ÿ—‚-๐Ÿ—„๐Ÿ—‘-๐Ÿ—“๐Ÿ—œ-๐Ÿ—ž๐Ÿ—ก๐Ÿ—ฃ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ—ณ๐Ÿ—บ๐Ÿ›‹๐Ÿ›-๐Ÿ›๐Ÿ› -๐Ÿ›ฅ๐Ÿ›ฉ๐Ÿ›ฐ๐Ÿ›ณ]๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{RI}{2}))/
REGEX_WELL_FORMED = /(?:(?:(?:(?:\p{EBase}\p{EMod}|(?:\p{Emoji}(?<!\p{EPres})๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{Emoji})โ€)+(?:\p{EBase}\p{EMod}|(?:\p{Emoji}(?<!\p{EPres})๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{Emoji}))|(?:(?:(?!\p{EComp})(?:\p{Emoji}(?<!\p{EPres})๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{EBase}\p{EMod})[๓ €ฐ-๓ €น๓ ก-๓ บ]{1,30}๓ ฟ)|(?:[\#\*0-9]๏ธโƒฃ|\p{EBase}\p{EMod}|(?!\p{EComp})(?:\p{Emoji}(?<!\p{EPres})๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{RI}{2}))/
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@

module Unicode
module Emoji
REGEX_WELL_FORMED_INCLUDE_TEXT = /(?-mix:(?:(?:(?:\p{EBase}\p{EMod}|(?:[\#\*0-9ยฉยฎโ€ผโ‰โ„ขโ„นโ†”-โ†™โ†ฉโ†ชโŒจโโญ-โฏโฑโฒโธ-โบโ“‚โ–ชโ–ซโ–ถโ—€โ—ปโ—ผโ˜€-โ˜„โ˜Žโ˜‘โ˜˜โ˜โ˜ โ˜ขโ˜ฃโ˜ฆโ˜ชโ˜ฎโ˜ฏโ˜ธ-โ˜บโ™€โ™‚โ™Ÿโ™ โ™ฃโ™ฅโ™ฆโ™จโ™ปโ™พโš’โš”-โš—โš™โš›โšœโš โšงโšฐโšฑโ›ˆโ›โ›‘โ›“โ›ฉโ›ฐโ›ฑโ›ดโ›ท-โ›นโœ‚โœˆโœ‰โœŒโœโœโœ’โœ”โœ–โœโœกโœณโœดโ„โ‡โฃโคโžกโคดโคตโฌ…-โฌ‡ใ€ฐใ€ฝใŠ—ใŠ™๐Ÿ…ฐ๐Ÿ…ฑ๐Ÿ…พ๐Ÿ…ฟ๐Ÿˆ‚๐Ÿˆท๐ŸŒก๐ŸŒค-๐ŸŒฌ๐ŸŒถ๐Ÿฝ๐ŸŽ–๐ŸŽ—๐ŸŽ™-๐ŸŽ›๐ŸŽž๐ŸŽŸ๐Ÿ‹-๐ŸŽ๐Ÿ”-๐ŸŸ๐Ÿณ๐Ÿต๐Ÿท๐Ÿฟ๐Ÿ‘๐Ÿ“ฝ๐Ÿ•‰๐Ÿ•Š๐Ÿ•ฏ๐Ÿ•ฐ๐Ÿ•ณ-๐Ÿ•น๐Ÿ–‡๐Ÿ–Š-๐Ÿ–๐Ÿ–๐Ÿ–ฅ๐Ÿ–จ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ–ผ๐Ÿ—‚-๐Ÿ—„๐Ÿ—‘-๐Ÿ—“๐Ÿ—œ-๐Ÿ—ž๐Ÿ—ก๐Ÿ—ฃ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ—ณ๐Ÿ—บ๐Ÿ›‹๐Ÿ›-๐Ÿ›๐Ÿ› -๐Ÿ›ฅ๐Ÿ›ฉ๐Ÿ›ฐ๐Ÿ›ณ]๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{Emoji})โ€)+(?:\p{EBase}\p{EMod}|(?:[\#\*0-9ยฉยฎโ€ผโ‰โ„ขโ„นโ†”-โ†™โ†ฉโ†ชโŒจโโญ-โฏโฑโฒโธ-โบโ“‚โ–ชโ–ซโ–ถโ—€โ—ปโ—ผโ˜€-โ˜„โ˜Žโ˜‘โ˜˜โ˜โ˜ โ˜ขโ˜ฃโ˜ฆโ˜ชโ˜ฎโ˜ฏโ˜ธ-โ˜บโ™€โ™‚โ™Ÿโ™ โ™ฃโ™ฅโ™ฆโ™จโ™ปโ™พโš’โš”-โš—โš™โš›โšœโš โšงโšฐโšฑโ›ˆโ›โ›‘โ›“โ›ฉโ›ฐโ›ฑโ›ดโ›ท-โ›นโœ‚โœˆโœ‰โœŒโœโœโœ’โœ”โœ–โœโœกโœณโœดโ„โ‡โฃโคโžกโคดโคตโฌ…-โฌ‡ใ€ฐใ€ฝใŠ—ใŠ™๐Ÿ…ฐ๐Ÿ…ฑ๐Ÿ…พ๐Ÿ…ฟ๐Ÿˆ‚๐Ÿˆท๐ŸŒก๐ŸŒค-๐ŸŒฌ๐ŸŒถ๐Ÿฝ๐ŸŽ–๐ŸŽ—๐ŸŽ™-๐ŸŽ›๐ŸŽž๐ŸŽŸ๐Ÿ‹-๐ŸŽ๐Ÿ”-๐ŸŸ๐Ÿณ๐Ÿต๐Ÿท๐Ÿฟ๐Ÿ‘๐Ÿ“ฝ๐Ÿ•‰๐Ÿ•Š๐Ÿ•ฏ๐Ÿ•ฐ๐Ÿ•ณ-๐Ÿ•น๐Ÿ–‡๐Ÿ–Š-๐Ÿ–๐Ÿ–๐Ÿ–ฅ๐Ÿ–จ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ–ผ๐Ÿ—‚-๐Ÿ—„๐Ÿ—‘-๐Ÿ—“๐Ÿ—œ-๐Ÿ—ž๐Ÿ—ก๐Ÿ—ฃ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ—ณ๐Ÿ—บ๐Ÿ›‹๐Ÿ›-๐Ÿ›๐Ÿ› -๐Ÿ›ฅ๐Ÿ›ฉ๐Ÿ›ฐ๐Ÿ›ณ]๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{Emoji}))|(?:(?:(?!\p{EComp})(?:[\#\*0-9ยฉยฎโ€ผโ‰โ„ขโ„นโ†”-โ†™โ†ฉโ†ชโŒจโโญ-โฏโฑโฒโธ-โบโ“‚โ–ชโ–ซโ–ถโ—€โ—ปโ—ผโ˜€-โ˜„โ˜Žโ˜‘โ˜˜โ˜โ˜ โ˜ขโ˜ฃโ˜ฆโ˜ชโ˜ฎโ˜ฏโ˜ธ-โ˜บโ™€โ™‚โ™Ÿโ™ โ™ฃโ™ฅโ™ฆโ™จโ™ปโ™พโš’โš”-โš—โš™โš›โšœโš โšงโšฐโšฑโ›ˆโ›โ›‘โ›“โ›ฉโ›ฐโ›ฑโ›ดโ›ท-โ›นโœ‚โœˆโœ‰โœŒโœโœโœ’โœ”โœ–โœโœกโœณโœดโ„โ‡โฃโคโžกโคดโคตโฌ…-โฌ‡ใ€ฐใ€ฝใŠ—ใŠ™๐Ÿ…ฐ๐Ÿ…ฑ๐Ÿ…พ๐Ÿ…ฟ๐Ÿˆ‚๐Ÿˆท๐ŸŒก๐ŸŒค-๐ŸŒฌ๐ŸŒถ๐Ÿฝ๐ŸŽ–๐ŸŽ—๐ŸŽ™-๐ŸŽ›๐ŸŽž๐ŸŽŸ๐Ÿ‹-๐ŸŽ๐Ÿ”-๐ŸŸ๐Ÿณ๐Ÿต๐Ÿท๐Ÿฟ๐Ÿ‘๐Ÿ“ฝ๐Ÿ•‰๐Ÿ•Š๐Ÿ•ฏ๐Ÿ•ฐ๐Ÿ•ณ-๐Ÿ•น๐Ÿ–‡๐Ÿ–Š-๐Ÿ–๐Ÿ–๐Ÿ–ฅ๐Ÿ–จ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ–ผ๐Ÿ—‚-๐Ÿ—„๐Ÿ—‘-๐Ÿ—“๐Ÿ—œ-๐Ÿ—ž๐Ÿ—ก๐Ÿ—ฃ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ—ณ๐Ÿ—บ๐Ÿ›‹๐Ÿ›-๐Ÿ›๐Ÿ› -๐Ÿ›ฅ๐Ÿ›ฉ๐Ÿ›ฐ๐Ÿ›ณ]๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{EBase}\p{EMod})[๓ €ฐ-๓ €น๓ ก-๓ บ]{1,30}๓ ฟ)|(?:[\#\*0-9]๏ธโƒฃ|\p{EBase}\p{EMod}|(?!\p{EComp})(?:[\#\*0-9ยฉยฎโ€ผโ‰โ„ขโ„นโ†”-โ†™โ†ฉโ†ชโŒจโโญ-โฏโฑโฒโธ-โบโ“‚โ–ชโ–ซโ–ถโ—€โ—ปโ—ผโ˜€-โ˜„โ˜Žโ˜‘โ˜˜โ˜โ˜ โ˜ขโ˜ฃโ˜ฆโ˜ชโ˜ฎโ˜ฏโ˜ธ-โ˜บโ™€โ™‚โ™Ÿโ™ โ™ฃโ™ฅโ™ฆโ™จโ™ปโ™พโš’โš”-โš—โš™โš›โšœโš โšงโšฐโšฑโ›ˆโ›โ›‘โ›“โ›ฉโ›ฐโ›ฑโ›ดโ›ท-โ›นโœ‚โœˆโœ‰โœŒโœโœโœ’โœ”โœ–โœโœกโœณโœดโ„โ‡โฃโคโžกโคดโคตโฌ…-โฌ‡ใ€ฐใ€ฝใŠ—ใŠ™๐Ÿ…ฐ๐Ÿ…ฑ๐Ÿ…พ๐Ÿ…ฟ๐Ÿˆ‚๐Ÿˆท๐ŸŒก๐ŸŒค-๐ŸŒฌ๐ŸŒถ๐Ÿฝ๐ŸŽ–๐ŸŽ—๐ŸŽ™-๐ŸŽ›๐ŸŽž๐ŸŽŸ๐Ÿ‹-๐ŸŽ๐Ÿ”-๐ŸŸ๐Ÿณ๐Ÿต๐Ÿท๐Ÿฟ๐Ÿ‘๐Ÿ“ฝ๐Ÿ•‰๐Ÿ•Š๐Ÿ•ฏ๐Ÿ•ฐ๐Ÿ•ณ-๐Ÿ•น๐Ÿ–‡๐Ÿ–Š-๐Ÿ–๐Ÿ–๐Ÿ–ฅ๐Ÿ–จ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ–ผ๐Ÿ—‚-๐Ÿ—„๐Ÿ—‘-๐Ÿ—“๐Ÿ—œ-๐Ÿ—ž๐Ÿ—ก๐Ÿ—ฃ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ—ณ๐Ÿ—บ๐Ÿ›‹๐Ÿ›-๐Ÿ›๐Ÿ› -๐Ÿ›ฅ๐Ÿ›ฉ๐Ÿ›ฐ๐Ÿ›ณ]๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{RI}{2}))|(?-mix:(?!\p{EComp})(?:[\#\*0-9ยฉยฎโ€ผโ‰โ„ขโ„นโ†”-โ†™โ†ฉโ†ชโŒจโโญ-โฏโฑโฒโธ-โบโ“‚โ–ชโ–ซโ–ถโ—€โ—ปโ—ผโ˜€-โ˜„โ˜Žโ˜‘โ˜˜โ˜โ˜ โ˜ขโ˜ฃโ˜ฆโ˜ชโ˜ฎโ˜ฏโ˜ธ-โ˜บโ™€โ™‚โ™Ÿโ™ โ™ฃโ™ฅโ™ฆโ™จโ™ปโ™พโš’โš”-โš—โš™โš›โšœโš โšงโšฐโšฑโ›ˆโ›โ›‘โ›“โ›ฉโ›ฐโ›ฑโ›ดโ›ท-โ›นโœ‚โœˆโœ‰โœŒโœโœโœ’โœ”โœ–โœโœกโœณโœดโ„โ‡โฃโคโžกโคดโคตโฌ…-โฌ‡ใ€ฐใ€ฝใŠ—ใŠ™๐Ÿ…ฐ๐Ÿ…ฑ๐Ÿ…พ๐Ÿ…ฟ๐Ÿˆ‚๐Ÿˆท๐ŸŒก๐ŸŒค-๐ŸŒฌ๐ŸŒถ๐Ÿฝ๐ŸŽ–๐ŸŽ—๐ŸŽ™-๐ŸŽ›๐ŸŽž๐ŸŽŸ๐Ÿ‹-๐ŸŽ๐Ÿ”-๐ŸŸ๐Ÿณ๐Ÿต๐Ÿท๐Ÿฟ๐Ÿ‘๐Ÿ“ฝ๐Ÿ•‰๐Ÿ•Š๐Ÿ•ฏ๐Ÿ•ฐ๐Ÿ•ณ-๐Ÿ•น๐Ÿ–‡๐Ÿ–Š-๐Ÿ–๐Ÿ–๐Ÿ–ฅ๐Ÿ–จ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ–ผ๐Ÿ—‚-๐Ÿ—„๐Ÿ—‘-๐Ÿ—“๐Ÿ—œ-๐Ÿ—ž๐Ÿ—ก๐Ÿ—ฃ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ—ณ๐Ÿ—บ๐Ÿ›‹๐Ÿ›-๐Ÿ›๐Ÿ› -๐Ÿ›ฅ๐Ÿ›ฉ๐Ÿ›ฐ๐Ÿ›ณ](?!(?:\p{EMod}|๏ธ))๏ธŽ?|\p{EPres}๏ธŽ)|(?:\#โƒฃ|\*โƒฃ|0โƒฃ|1โƒฃ|2โƒฃ|3โƒฃ|4โƒฃ|5โƒฃ|6โƒฃ|7โƒฃ|8โƒฃ|9โƒฃ))/
REGEX_WELL_FORMED_INCLUDE_TEXT = /(?-mix:(?:(?:(?:\p{EBase}\p{EMod}|(?:\p{Emoji}(?<!\p{EPres})๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{Emoji})โ€)+(?:\p{EBase}\p{EMod}|(?:\p{Emoji}(?<!\p{EPres})๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{Emoji}))|(?:(?:(?!\p{EComp})(?:\p{Emoji}(?<!\p{EPres})๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{EBase}\p{EMod})[๓ €ฐ-๓ €น๓ ก-๓ บ]{1,30}๓ ฟ)|(?:[\#\*0-9]๏ธโƒฃ|\p{EBase}\p{EMod}|(?!\p{EComp})(?:\p{Emoji}(?<!\p{EPres})๏ธ|\p{EPres}(?!๏ธŽ)๏ธ?)|\p{RI}{2}))|(?-mix:(?!\p{EComp})(?:\p{Emoji}(?<!\p{EPres})(?!(?:\p{EMod}|๏ธ))๏ธŽ?|\p{EPres}๏ธŽ)|(?:\#โƒฃ|\*โƒฃ|0โƒฃ|1โƒฃ|2โƒฃ|3โƒฃ|4โƒฃ|5โƒฃ|6โƒฃ|7โƒฃ|8โƒฃ|9โƒฃ))/
end
end

0 comments on commit 9852eba

Please sign in to comment.