Extract #all_emoji? to a Rails ext
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
class Conversation::Message < ApplicationRecord
|
||||
include Pagination, Broadcastable, ClientIdentifiable, Promptable, Respondable
|
||||
|
||||
ALL_EMOJI_REGEX = /\A(\p{Emoji_Presentation}|\p{Extended_Pictographic}|\uFE0F)+\z/u
|
||||
|
||||
has_rich_text :content
|
||||
|
||||
belongs_to :conversation, inverse_of: :messages
|
||||
@@ -10,12 +8,13 @@ class Conversation::Message < ApplicationRecord
|
||||
|
||||
enum :role, %w[ user assistant ].index_by(&:itself)
|
||||
|
||||
validates :content, presence: true
|
||||
validates :client_message_id, presence: true
|
||||
|
||||
scope :ordered, -> { order(created_at: :asc, id: :asc) }
|
||||
|
||||
def all_emoji?
|
||||
content.to_plain_text.match?(ALL_EMOJI_REGEX)
|
||||
content.to_plain_text.all_emoji?
|
||||
end
|
||||
|
||||
def to_partial_path
|
||||
|
||||
@@ -6,9 +6,7 @@ class Reaction < ApplicationRecord
|
||||
|
||||
after_create :register_card_activity
|
||||
|
||||
def all_emoji?
|
||||
content.match? /\A(\p{Emoji_Presentation}|\p{Extended_Pictographic}|\uFE0F)+\z/u
|
||||
end
|
||||
delegate :all_emoji?, to: :content
|
||||
|
||||
private
|
||||
def register_card_activity
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
class String
|
||||
def all_emoji?
|
||||
self.match?(/\A(\p{Emoji_Presentation}|\p{Extended_Pictographic}|\uFE0F)+\z/u)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
require "test_helper"
|
||||
|
||||
class StringTest < ActiveSupport::TestCase
|
||||
test "#all_emoji?" do
|
||||
assert "😊".all_emoji?
|
||||
assert "😊😊😊".all_emoji?
|
||||
|
||||
assert_not "Hello 😊".all_emoji?
|
||||
assert_not "Hello".all_emoji?
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user