Plugin de recurso de Marcação Automática

Olá a todos! Estou criando um sistema no qual as tags são geradas automaticamente, para que qualquer pessoa possa criar tags!

Sobre isso:

  • As tags são criadas na forma de criação de tópicos
  • Se não houver uma tag mencionada pela pessoa, ela será ignorada por padrão na postagem

Meu objetivo era criar uma maneira de etiquetagem automática, então se #test1 não existir, criá-lo automaticamente e atualizar o conteúdo cozido da postagem para atualizar o link das tags e assim por diante.

Então, tentei algumas formas de atender a essa necessidade, então gostaria de mostrar a vocês e perguntar se há uma maneira melhor de alcançar meu objetivo.

after_initialize do
   DiscourseEvent.on(:post_created) do |post, _, user|
      # Passando por tags de categoria (#test:item1)
      tags= post.raw.split(' ').select{|t| t =~ /#/ && !t.include?(':')}
      tags.each do |t|
        tName= t.gsub('#', '')
        Tag.create_or_find_by(name: tName);
      end

      postAnalyzer= PostAnalyzer.new(post.raw, post.topic_id)
      cookedRaw= postAnalyzer.cook(post.raw)

      post.cooked= cookedRaw
      post.save

      post.publish_change_to_clients!(:revised, reload_topic: true)
   end
end

Agradeço sua ajuda!

1 curtida