Tengo etiquetas que contienen emojis, por ejemplo: new-york-city-🇺🇸. Al usar la búsqueda y la búsqueda avanzada, no obtengo los temas.
Aquí hay un ejemplo:
Consulta:
https://urbantech-forum.cornelltech.io/search?expanded=true&q=tags%3Anew-york-city-🇺🇸subway
Y aquí hay un tema que debería devolverse:
https://urbantech-forum.cornelltech.io/t/subway-accessibility-info-and-elevator-escalator-status-alerts/139
1 me gusta
No estoy seguro de si esto es solucionable, ¿qué opinas @neil ?
j.jaffeux
(Joffrey Jaffeux)
13 Febrero, 2020 09:40
3
Por lo que sé, es solo porque la expresión regular que tenemos aquí:
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
no permite emojis. Si esta coincidiera con emojis, funcionaría después.
Podríamos considerar usar algo como: GitHub - ticky/ruby-emoji-regex: 💎 A set of Ruby regular expressions for matching Unicode Emoji symbols. · GitHub para tener una buena expresión regular para emojis.
¿Qué opinas @sam ?
1 me gusta
sam
(Sam Saffron)
13 Febrero, 2020 10:22
4
¡Vaya, esto parece un monstruo enorme para soportar un caso límite importante. ¿Ya tenemos una expresión regular de validación en la clase Tag?
1 me gusta
j.jaffeux
(Joffrey Jaffeux)
13 Febrero, 2020 10:35
5
No creo que lo hagamos, aunque podría estar equivocado. @neil probablemente lo sabe mejor.
Por lo que sé, solo tenemos esta función 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
La cual está más o menos copiada en el lado del cliente aquí:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/select-kit/mixins/tags.js.es6#L80
Además, esto probablemente sería útil en otros lugares, ya que, por ejemplo, generamos esto en el lado del cliente: https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/emoji.js.es6#L24
2 Me gusta
neil
(Neil Lalonde)
13 Febrero, 2020 16:25
6
Dudo que tengamos pruebas para los nombres de etiquetas de emojis. ¿Quizás podríamos investigar la posibilidad de admitir esto en la versión 2.5?
4 Me gusta
Veo que la búsqueda devuelve solo un tema cuando se usa solo la etiqueta (sin la palabra clave subway) en la búsqueda (no es el tema publicado en el OP):
https://urbantech-forum.cornelltech.io/search?expanded=true&q=tags%3Anew-york-city-🇺🇸
También funciona con otras palabras clave (pero solo para ese tema devuelto anteriormente):
https://urbantech-forum.cornelltech.io/search?expanded=true&q=tags%3Anew-york-city-🇺🇸%20personal
Si no uso etiquetas, devuelve correctamente:
https://urbantech-forum.cornelltech.io/search?expanded=true&q=new-york-city-🇺🇸
El tema devuelto anteriormente, con la etiqueta, es el primero que aparece al usar una palabra clave con el nombre de la etiqueta, pero la publicación es otra (aunque podría deberse a (quizás) metadatos o algo similar en la publicación que es detectado por la búsqueda, y no a la etiqueta en sí misma, pero no puedo asegurarlo).