2024-01-15 01:45:26 +02:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
|
|
module TextUtils
|
|
|
|
|
RTL_REGEXP = /[\p{Hebrew}\p{Arabic}]/
|
|
|
|
|
|
|
|
|
|
module_function
|
|
|
|
|
|
2024-03-15 13:44:16 +02:00
|
|
|
def rtl?(text)
|
|
|
|
|
return false if text.blank?
|
|
|
|
|
|
|
|
|
|
text.match?(TextUtils::RTL_REGEXP)
|
|
|
|
|
rescue Encoding::CompatibilityError
|
|
|
|
|
false
|
|
|
|
|
end
|
|
|
|
|
|
2024-01-15 01:45:26 +02:00
|
|
|
def maybe_rtl_reverse(text)
|
|
|
|
|
if text.match?(RTL_REGEXP)
|
|
|
|
|
TwitterCldr::Shared::Bidi
|
|
|
|
|
.from_string(ArabicLetterConnector.transform(text), direction: :RTL)
|
|
|
|
|
.reorder_visually!.to_s
|
|
|
|
|
else
|
|
|
|
|
text
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|