https://github.com/dcdunkan/pmodes
TypeScript implementation of TDLib's functions and utilities related to text parsing and matching text entities.
https://github.com/dcdunkan/pmodes
tdlib
Last synced: 12 months ago
JSON representation
TypeScript implementation of TDLib's functions and utilities related to text parsing and matching text entities.
- Host: GitHub
- URL: https://github.com/dcdunkan/pmodes
- Owner: dcdunkan
- License: mit
- Created: 2023-04-27T09:52:47.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-06-29T18:08:35.000Z (almost 2 years ago)
- Last Synced: 2025-03-31T02:22:02.721Z (about 1 year ago)
- Topics: tdlib
- Language: TypeScript
- Homepage:
- Size: 721 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Parse Modes
Synced with [tdlib/td:7c3822d932](https://github.com/tdlib/td/tree/7c3822d932f96aeca2861b6ae0cb25eacb27136f).
A **work-in-progress** TypeScript implementation of [TDLib](https://github.com/tdlib/td)'s functions and utilities related to parsing text with several parse
modes and matching text entities.
Few more methods are left to be implemented. But the tests are direclty ported from TDLib source without a change. And they seem to be passing. So, I'll take
that as a "it works"! I cannot assure you the quality of the implementation, as I'm **not** good at C++ (TDLib is written in C++). So, I probably have done few
stupid things because I missed how C++ actually works.
Anyway, thank you.
#### Here is what we currently have here.
But of course, they still might have a few bugs. If you ever encounter one please consider opening an issue.
###### match.ts (td/telegram/MessageEntity.cpp)
- match_mentions
- match_bot_commands
- match_hashtags
- match_cashtags
- match_media_timestamps
- match_bank_card_numbers
- is_url_unicode_symbol
- is_url_path_symbol
- match_tg_urls
- is_protocol_symbol
- is_user_data_symbol
- is_domain_symbol
- match_urls
- is_valid_bank_card
- is_email_address
- is_common_tld
- fix_url
- get_valid_short_usernames
- find_mentions
- find_bot_commands
- find_hashtags
- find_cashtags
- find_bank_card_numbers
- find_tg_urls
- find_urls
- find_media_timestamps
- text_length
- get_type_priority
- remove_empty_entities
- sort_entities
- check_is_sorted
- check_non_intersecting
- get_entity_type_mask
- get_splittable_entities_mask
- get_blockquote_entities_mask
- get_continuous_entities_mask
- get_pre_entities_mask
- get_user_entities_mask
- is_splittable_entity
- is_blockquote_entity
- is_continuous_entity
- is_pre_entity
- is_user_entity
- is_hidden_data_entity
- get_splittable_entity_type_index
- are_entities_valid
- remove_intersecting_entities
- remove_entities_intersecting_blockquote
- fix_entity_offsets
- find_entities
- find_media_timestamp_entities
- merge_entities
- is_plain_domain
- get_first_url
- parse_markdown
- parse_markdown_v2
- decode_html_entity
- parse_html
- get_formatted_text_object
- find_text_url_entities_v3
- clean_input_string_with_entities
- remove_invalid_entities
- split_entities
- resplit_entities
- merge_new_entities
- fix_entities
- fix_formatted_text
- get_type_priority
- MessageEntity
- TextEntityObject
- get_text_entities_object
- message_entity_type_string
- MessageEntityType
###### random.ts (td/utils/Random.{h,cpp})
- fast_uint32
- fast_bool
- fast(int, int)
###### utilities.ts (from a lot of source files)
- is_word_character
- to_lower_begins_with
- to_lower
- split
- full_split
- begins_with
- ends_with
- is_space
- is_alpha
- is_alpha (from misc.h)
- is_alnum
- is_digit
- is_alpha_digit
- is_alpha_digit_or_underscore
- is_alpha_digit_underscore_or_minus
- is_hex_digit
- hex_to_int
- is_hashtag_letter
- CHECK
- LOG_CHECK
- to_integer
- get_to_integer_safe_error
- to_integer_safe
- replace_offending_characters
- clean_input_string
- trim
- strip_empty_characters
- is_empty_string
###### unicode.ts (tdutils/td/utils/unicode.cpp)
- UnicodeSimpleCategory
- get_unicode_simple_category
- binary_search_ranges
- unicode_to_lower
###### utf8.ts (tdutils/td/utils/utf8.cpp)
- is_utf8_character_first_code_unit
- utf8_length
- utf8_utf16_length
- prev_utf8_unsafe
- next_utf8_unsafe
- append_utf8_character
- append_utf8_character_unsafe
- utf8_to_lower
- utf8_truncate
- utf8_utf16_truncate
- utf8_substr
- utf8_utf16_substr
- check_utf8
###### Other stuff
- CustomEmojiId
- HttpUrl
- HttpUrlProtocol
- parse_url
- IpAddress
- parse_ipv6 (a compatible port from core-js)
- LinkManager
- getLinkUserId
- getLinkCustomEmojiId
- getCheckedLink
- checkLinkImpl
- UserId
> \* Most likely too buggy.