Tenho tags que contêm emojis, por exemplo, new-york-city-🇺🇸.
Ao usar a pesquisa e a pesquisa avançada, não obtenho os tópicos.
Aqui está um exemplo:
Consulta:
https://urbantech-forum.cornelltech.io/search?expanded=true&q=tags%3Anew-york-city-🇺🇸subway
E aqui está um tópico que deveria ser retornado:
https://urbantech-forum.cornelltech.io/t/subway-accessibility-info-and-elevator-escalator-status-alerts/139
1 curtida
Não tenho certeza se isso é solucionável. Qual é a sua opinião, @neil ?
j.jaffeux
(Joffrey Jaffeux)
Fevereiro 13, 2020, 9:40am
3
AFAIK, é apenas porque a regex que temos aqui:
end
advanced_filter(/\Ain:unseen\z/i) do |posts|
if @guardian.user
posts.joins(
"LEFT JOIN post_timings ON
post_timings.topic_id = posts.topic_id
AND post_timings.post_number = posts.post_number
AND post_timings.user_id = #{ActiveRecord::Base.connection.quote(@guardian.user.id)}
",
).where("post_timings.user_id IS NULL")
end
end
advanced_filter(/\Awith:images\z/i) { |posts| posts.where.not(posts: { image_upload_id: nil }) }
advanced_filter(/\Acategor(?:y|ies):(.+)\z/i) do |posts, terms|
category_ids = []
matches =
terms
não está permitindo emojis. Se isso estivesse correspondendo a emojis, funcionaria depois.
Podemos considerar usar algo como: GitHub - ticky/ruby-emoji-regex: 💎 A set of Ruby regular expressions for matching Unicode Emoji symbols. · GitHub para ter uma boa regex de emojis.
O que você acha, @sam ?
1 curtida
sam
(Sam Saffron)
Fevereiro 13, 2020, 10:22am
4
Nossa, isso parece um monstro enorme para suportar um caso de borda importante. Já temos uma regex de validação na classe Tag?
1 curtida
j.jaffeux
(Joffrey Jaffeux)
Fevereiro 13, 2020, 10:35am
5
Acho que não temos, mas posso estar errado. @neil provavelmente sabe melhor.
Pelo que sei, temos apenas essa função clean_tag:
model.errors.add(:base, msg)
return false
end
end
true
end
def self.validate_one_tag_from_group_per_topic(guardian, model, category, tags = [])
tags_cant_be_used = filter_tags_violating_one_tag_from_group_per_topic(guardian, category, tags)
return true if tags_cant_be_used.blank?
tags_cant_be_used.each do |_, incompatible_tags|
model.errors.add(
:base,
I18n.t(
"tags.limited_to_one_tag_from_group",
tags: incompatible_tags.map(&:name).sort.join(", "),
),
)
end
Que foi meio que copiada no lado do cliente aqui:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/select-kit/mixins/tags.js.es6#L80
Além disso, isso provavelmente seria útil em outros lugares, já que, por exemplo, geramos isso no lado do cliente: https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/emoji.js.es6#L24
2 curtidas
neil
(Neil Lalonde)
Fevereiro 13, 2020, 4:25pm
6
Duvido que tenhamos testes para nomes de tags de emojis. Talvez possamos investigar o suporte a isso na versão 2.5?
4 curtidas
Percebi que a busca retorna apenas um tópico ao usar apenas a tag (sem a palavra-chave subway) na pesquisa (não é o tópico publicado no OP):
https://urbantech-forum.cornelltech.io/search?expanded=true&q=tags%3Anew-york-city-🇺🇸
Também funciona com outras palavras-chave (mas apenas para aquele tópico retornado anteriormente):
https://urbantech-forum.cornelltech.io/search?expanded=true&q=tags%3Anew-york-city-🇺🇸%20personal
Se eu não usar tags, a busca retorna corretamente:
https://urbantech-forum.cornelltech.io/search?expanded=true&q=new-york-city-🇺🇸
O tópico retornado anteriormente, com a tag, é o primeiro ao usar uma palavra-chave com o nome da tag, mas a postagem é outra (embora possa ser apenas por causa de (talvez) metadados ou algo assim na postagem que seja capturado pela busca, e não a tag em si, mas não posso afirmar com certeza).