| Server IP : 217.160.0.244 / Your IP : 216.73.216.36 Web Server : Apache System : Linux infong-eu155 4.4.400-icpu-108 #2 SMP Wed Feb 11 11:51:01 UTC 2026 x86_64 User : u100174116 ( 6746176) PHP Version : 8.5.10 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /lib/ruby/gems/3.3.0/gems/net-imap-0.4.19/lib/net/imap/stringprep/ |
Upload File : |
# frozen_string_literal: true
module Net
class IMAP
module StringPrep
# Defined in RFC3491[https://tools.ietf.org/html/rfc3491], the +nameprep+
# profile of "Stringprep" is:
# >>>
# used by the IDNA protocol for preparing domain names; it is not
# designed for any other purpose. It is explicitly not designed for
# processing arbitrary free text and SHOULD NOT be used for that
# purpose.
#
# ...
#
# This profile specifies prohibiting using the following tables...:
#
# - C.1.2 (Non-ASCII space characters)
# - C.2.2 (Non-ASCII control characters)
# - C.3 (Private use characters)
# - C.4 (Non-character code points)
# - C.5 (Surrogate codes)
# - C.6 (Inappropriate for plain text)
# - C.7 (Inappropriate for canonical representation)
# - C.8 (Change display properties are deprecated)
# - C.9 (Tagging characters)
#
# IMPORTANT NOTE: This profile MUST be used with the IDNA protocol.
# The IDNA protocol has additional prohibitions that are checked
# outside of this profile.
module NamePrep
# From RFC3491[https://www.rfc-editor.org/rfc/rfc3491.html] §10
STRINGPREP_PROFILE = "nameprep"
# From RFC3491[https://www.rfc-editor.org/rfc/rfc3491.html] §2
UNASSIGNED_TABLE = "A.1"
# From RFC3491[https://www.rfc-editor.org/rfc/rfc3491.html] §3
MAPPING_TABLES = %w[B.1 B.2].freeze
# From RFC3491[https://www.rfc-editor.org/rfc/rfc3491.html] §4
NORMALIZATION = :nfkc
# From RFC3491[https://www.rfc-editor.org/rfc/rfc3491.html] §5
PROHIBITED_TABLES = %w[C.1.2 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9].freeze
# From RFC3491[https://www.rfc-editor.org/rfc/rfc3491.html] §6
CHECK_BIDI = true
module_function
def nameprep(string, **opts)
StringPrep.stringprep(
string,
unassigned: UNASSIGNED_TABLE,
maps: MAPPING_TABLES,
prohibited: PROHIBITED_TABLES,
normalization: NORMALIZATION,
bidi: CHECK_BIDI,
profile: STRINGPREP_PROFILE,
**opts,
)
end
end
end
end
end